xykj-plus/claude-ecc/CLAUDE.md

180 lines
6.8 KiB
Markdown
Raw Normal View History

# CLAUDE.md
本文件是 Claude Code 在该仓库中的根级路由指南。保持简短、稳定,只记录"Claude 无法从代码本身轻易推断"的事实、硬约束和工具路由。可重复执行的流程、检查清单、深度参考资料放入 `.claude/skills/``.claude/commands/`
---
## 通用工作偏好
> 适用于本项目所有会话,与用户级 `~/.claude/CLAUDE.md` 中的个人偏好保持一致。
**语言**默认中文回复英文术语、命令、代码标识符保留英文。注释、文档、commit 优先遵循项目规范。
**工作方式**
- 对多文件、非显然或有风险的改动,先用 2-3 句话说明思路
- 对架构/接口/依赖决策,给出 2-3 个方案、权衡和推荐理由
- 对关键歧义先提问;低风险细节可先明确假设再推进
- 优先复用现有代码模式;只有现有模式不足时再引入新抽象
- 复杂、可拆分、上下文污染高的任务,优先使用合适的 subagent
**代码与文档**:注释解释意图、前提、边界和异常语义,不复述代码表面行为。公共 API 用结构化注释summary / params / returns / throws
**验证习惯**改动完成后运行最小但足以证明正确性的验证集。不用空方法、TODO 占位或跳过关键校验来冒充完成。
---
## 先判断目标项目
这是一个 monorepo子项目彼此独立
| 子项目 | 技术栈 | 端口 |
|--------|--------|------|
| `admin-xy/server` | Spring Boot 3 + Java 21 + Flyway + H2(dev)/MySQL(prod) | 9010 |
| `admin-xy/web` | React 18 + Vite + TypeScript + Radix + Tailwind | 9001 |
| `dev-assistant/bridge` | Node.js + TypeScriptAI 代理桥接服务REST + WebSocket | 9020 |
| `dev-assistant/web-sdk` | TypeScript SDK嵌入式 AI 助手前端组件 | — |
| `log-analyzer/` | Vite + React + TS解析 `.claude/logs/` 下的 hook trace JSONL | — |
| `.claude/` | Claude Code 资产目录skills / commands / hooks / rules / scripts / logs | — |
工作前先选定目标项目,安装、构建、测试、发布均在对应子项目内分别执行。
---
## 高频命令
### `admin-xy/server`
```bash
mvn spring-boot:run # 默认 dev profileH2端口 9010
mvn -DskipTests clean package
mvn test
mvn test -Dtest=AuthServiceTest
mvn test -Dtest=AuthServiceTest#shouldLoginWithValidCredentials
```
- 入口:`com.adminxy.AdminXyApplication`
- 生产 profile`prod`MySQL全部敏感配置来自环境变量
### `admin-xy/web`
```bash
npm install && npm run dev # Vite dev server 端口 9001/api 反代到 http://localhost:9010
npm run build && npm run preview
```
- 路径别名:`@` → `src`
- UIRadix + Tailwind组件在 `src/components/ui`
### `admin-xy/` 部署
```bash
./build-images.sh # 构建镜像
sudo ./deploy.sh # 生产部署
sudo ./deploy.sh --stop | --restart
```
- 生产配置:`/opt/admin-xy/.env`
### `dev-assistant/`
```bash
cd dev-assistant && npm install
npm run dev # bridge 服务启动,端口 9020
npm run build # tsc 构建
npm test # vitest 单元测试
```
- bridge 提供 `/api/models`、WebSocket `/ws` 等接口
- 需要 AI 提供方的 API Key配置在 `.env` 或环境变量中,严禁硬编码)
### `log-analyzer/`
```bash
npm install && npm run dev # 自定义 Vite 插件读取 .claude/logs/
```
---
## 关键架构事实
### `admin-xy` 后端
- **分层**`Controller → Service → Repository → Entity → DTO`按领域auth/user/role/menu分包
- **统一响应**`ApiResponse<T>`;分页:`PageResult<T>`
- **认证**JWT 无状态;`JwtAuthenticationFilter` 从 `Authorization: Bearer <token>` 读取
- **授权**`@EnableMethodSecurity` + `@PreAuthorize` + `permission/` 自定义校验
- **迁移**Flyway 管理,`ddl-auto=validate`
### `admin-xy` 前端
- **路由**react-router-dom v6`guards.tsx` 鉴权守卫
- **状态**Zustand跨页面可变状态禁用 Context
- **表单**Zod schema → `@hookform/resolvers/zod` → react-hook-form
- **API**axios 实例在 `src/lib/` 统一处理 JWT 注入、401 拦截
### `.claude/` 约束
- `hooks/trace.mjs` 必须把日志写到脚本自身路径下的 `../logs`,不能依赖 `cwd`
- 任何新 hook 若需写文件,同样以脚本自身路径定位输出目录
- `.claude/logs/` 已纳入 git 追踪,用于 `log-analyzer` 复现会话
- `settings.json` 使用 `$CLAUDE_PROJECT_DIR` 环境变量引用 hook 脚本路径Claude Code 运行时自动注入),避免硬编码绝对路径
---
## 硬约束
- 不要在仓库根执行"统一构建/统一测试"替代子项目命令(除非任务明确跨多个项目)
- 禁止修改已发布的 Flyway `V*.sql`;新增迁移必须递增版本号
- 生产敏感配置必须来自环境变量或 `/opt/admin-xy/.env`,严禁硬编码
- `JWT_SECRET` 必须至少 32 字节
- 前端禁止 `console.log`;使用现有 logger 或 sonner
- 后端 `9010`、前端 `9001`、bridge `9020`;改端口须同步更新 `vite.config.ts`、`docker-compose.yml`、`application.yml`
- 默认远程仓库Gitee `https://gitee.com/xiangyuetech-d/claude-ecc.git`
- Git 提交格式:`feat|fix|refactor|docs|test|chore|perf|ci: <desc>`,不追加自动归因尾行
---
## 本地 Skills / Commands 路由
项目本地 skill/command 与通用能力冲突时,优先使用仓库内定义。详细编码、安全、测试规则以 `.claude/rules/` 下各 `.md` 为准;本文件只保留路由和高信号约束。
### 研究与规划
- `/plan`:先分析风险并输出实施计划
- `/search-first`:先研究现有方案
- `/docs` / `/documentation-lookup`:查最新框架文档
- `/deep-research`:多源研究、引用汇总
- `/blueprint`:多阶段、需长期拆解的复杂任务
### `admin-xy/server` 后端
- `/springboot-patterns`、`/java-coding-standards`、`/jpa-patterns`
- `/database-migrations`、`/springboot-security`、`/security-review`
- `/springboot-tdd`、`/springboot-verification`
### `admin-xy/web` 与 `log-analyzer` 前端
- `/frontend-patterns`、`/coding-standards`、`/docs`
- `/e2e` / `/e2e-testing`Playwright
### 质量与发布
- `/verify` / `/verification-loop`:统一验证当前改动
- `/quality-gate`、`/code-review`、`/ai-regression-testing`
- `/publish-admin-xy`admin-xy 上线发布流程
- `/deployment-patterns`、`/docker-patterns`
### 仓库维护
- `/codebase-onboarding`、`/context-budget`
- `/security-scan`:扫描 `.claude/` 配置风险
- `/rules-distill`:把重复经验沉淀回规则文件
---
## 维护原则
- 本文件控制在 200 行以内;超出后优先拆到子级 `CLAUDE.md` 或 skill/command
- 只保留"Claude 不能从代码轻易推断"的事实
- 如果 `admin-xy/``dev-assistant/` 的规则继续分化,在各自目录新增子级 `CLAUDE.md`