diff --git a/.claude/agents/QUICK-REFERENCE.md b/.claude/agents/QUICK-REFERENCE.md new file mode 100644 index 0000000..e90ad3b --- /dev/null +++ b/.claude/agents/QUICK-REFERENCE.md @@ -0,0 +1,256 @@ +# 🚀 Agents 快速参考卡 + +## 一句话调用 + +```bash +# 后端代码审查 +@backend-reviewer 审查这个类的代码质量和性能 + +# 前端代码审查 +@frontend-reviewer 检查这个组件的性能和用户体验 + +# 数据库优化 +@database-expert 优化这个SQL查询并设计合适的索引 + +# 生成API文档 +@api-documenter 为这个Controller生成完整文档 + +# 生成测试代码 +@test-generator 为这个Service生成单元测试 + +# 代码重构 +@refactor-expert 分析代码问题并提供重构方案 +``` + +--- + +## 📋 常见任务速查 + +### 开发新功能流程 + +```bash +1️⃣ @database-expert 设计数据表 + "帮我设计用户评分表,包含用户ID、分数、评分时间等字段" + +2️⃣ 开发后端代码 + +3️⃣ @backend-reviewer 审查代码 + "审查 ScoreService 的代码质量" + +4️⃣ @test-generator 生成测试 + "为 ScoreService 生成完整的单元测试" + +5️⃣ @api-documenter 生成文档 + "为 ScoreController 生成API文档" + +6️⃣ 开发前端页面 + +7️⃣ @frontend-reviewer 审查前端 + "审查 ScoreList.vue 组件" +``` + +### 性能优化流程 + +```bash +1️⃣ @database-expert 分析慢查询 + "这个查询很慢,帮我分析并优化" + +2️⃣ @backend-reviewer 检查后端性能 + "检查这个Service是否有性能问题" + +3️⃣ @frontend-reviewer 检查前端性能 + "这个页面加载慢,帮我找出原因" +``` + +### 代码质量提升流程 + +```bash +1️⃣ @refactor-expert 识别问题 + "分析这段代码有什么问题" + +2️⃣ @refactor-expert 提供方案 + "提供详细的重构方案" + +3️⃣ 实施重构 + +4️⃣ @backend-reviewer 验证重构 + "审查重构后的代码" + +5️⃣ @test-generator 补充测试 + "为重构后的代码生成测试" +``` + +--- + +## 💡 使用技巧 + +### ✅ 好的提问方式 + +``` +❌ "看看这个代码" +✅ "@backend-reviewer 审查 UserService.java 的性能问题,特别关注数据库查询" + +❌ "写个测试" +✅ "@test-generator 为 ScoreService.createScore() 方法生成单元测试,包含正常和异常场景" + +❌ "优化数据库" +✅ "@database-expert 这个查询执行很慢(贴上EXPLAIN结果),帮我优化并设计合适的索引" +``` + +### 📍 提供清晰的上下文 + +1. **指定文件路径** + ``` + @backend-reviewer 审查 backend/yudao-module-prison/src/main/java/cn/iocoder/yudao/module/prison/service/ScoreService.java + ``` + +2. **说明具体问题** + ``` + @database-expert 这个查询在数据量大时很慢,经常超过5秒,帮我优化 + ``` + +3. **提供相关代码** + ``` + @refactor-expert 这个方法有100多行,很难维护,请帮我重构 + [贴上代码] + ``` + +--- + +## 🎯 专项任务模板 + +### 新建数据表 +``` +@database-expert +需求:设计一个问卷调查表 +字段要求: +- 问卷ID(主键) +- 问卷标题 +- 问卷描述 +- 状态(草稿/已发布/已关闭) +- 创建人、创建时间、更新时间 +- 需要关联到监区表 + +请设计完整的建表SQL,包括索引和注释 +``` + +### 代码审查检查清单 +``` +@backend-reviewer +请审查以下方面: +1. 代码规范和可读性 +2. 安全性(SQL注入、权限控制) +3. 性能问题(N+1查询、缓存使用) +4. 异常处理 +5. 日志记录 + +[贴上代码] +``` + +### 生成完整测试 +``` +@test-generator +请为 QuestionnaireService 生成完整测试: +1. 测试创建问卷(正常、重复、参数校验) +2. 测试查询问卷(分页、条件查询) +3. 测试更新问卷(状态流转、并发) +4. 测试删除问卷(软删除、权限) + +使用 JUnit 5 和 Mockito +``` + +### API文档生成 +``` +@api-documenter +为 QuestionnaireController 生成API文档,包括: +1. 所有接口的请求参数和响应格式 +2. 实际的cURL调用示例 +3. 常见错误码说明 +4. 接口调用流程图 + +使用Markdown格式 +``` + +--- + +## 🔄 组合使用案例 + +### Case 1: 接手遗留代码 +```bash +# 第一步:理解代码结构 +@refactor-expert "分析这个Service的职责和代码问题" + +# 第二步:识别改进点 +@backend-reviewer "列出这个类的主要问题" + +# 第三步:补充测试 +@test-generator "先生成测试保护现有功能" + +# 第四步:逐步重构 +@refactor-expert "提供分步骤的重构方案" +``` + +### Case 2: 性能调优 +```bash +# 第一步:数据库层面 +@database-expert "分析这些慢查询日志并优化" + +# 第二步:后端层面 +@backend-reviewer "检查缓存使用和查询方式" + +# 第三步:前端层面 +@frontend-reviewer "检查是否有不必要的渲染和请求" +``` + +### Case 3: 新功能开发 +```bash +# 设计阶段 +@database-expert "设计数据模型" + +# 开发阶段 +# (自己开发) + +# 审查阶段 +@backend-reviewer "审查后端实现" +@frontend-reviewer "审查前端实现" + +# 质量保证 +@test-generator "生成测试代码" +@api-documenter "生成接口文档" +``` + +--- + +## ⚡ 快捷命令 + +```bash +# 列出所有agents +/agents + +# 查看某个agent的详细配置 +@backend-reviewer /help + +# 切换到不同的agent +@frontend-reviewer +``` + +--- + +## 🎓 学习建议 + +1. **从简单任务开始**: 先用agents做代码审查,熟悉它们的风格 +2. **逐步尝试复杂任务**: 尝试让agents生成代码和测试 +3. **调整优化**: 根据反馈改进你的提问方式 +4. **形成习惯**: 将agents集成到日常开发流程中 + +--- + +## 📞 获取帮助 + +- 查看完整文档:`README.md` +- 查看agent配置:`.claude/agents/*.md` +- 实验和探索:agents很智能,大胆尝试! + +--- + +**记住**: Agents 是你的AI编程助手,充分利用它们提升开发效率! 🚀 diff --git a/.claude/agents/README.md b/.claude/agents/README.md new file mode 100644 index 0000000..d002060 --- /dev/null +++ b/.claude/agents/README.md @@ -0,0 +1,237 @@ +# Claude Code Agents 使用指南 + +本项目包含 6 个专业的 Claude Code Subagents,用于提升开发效率和代码质量。 + +## 📋 可用的 Agents + +### 1. 🔍 Backend Reviewer(后端代码审查专家) +**文件**: `backend-reviewer.md` +**用途**: 审查 Java/Spring Boot 后端代码 + +**适用场景**: +- 代码提交前的质量检查 +- 识别安全漏洞和性能问题 +- 验证 Spring Boot 最佳实践 +- 审查数据库查询效率 + +**使用方法**: +``` +@backend-reviewer 请审查这个 Service 类的代码质量 +``` + +--- + +### 2. 🎨 Frontend Reviewer(前端代码审查专家) +**文件**: `frontend-reviewer.md` +**用途**: 审查 Vue.js 前端代码 + +**适用场景**: +- 审查组件设计和代码质量 +- 检查 TypeScript 类型使用 +- 识别性能优化机会 +- 验证用户体验设计 + +**使用方法**: +``` +@frontend-reviewer 请审查这个 Vue 组件的性能 +``` + +--- + +### 3. 🗄️ Database Expert(数据库专家) +**文件**: `database-expert.md` +**用途**: 数据库设计和 SQL 优化 + +**适用场景**: +- 设计数据库表结构 +- 优化复杂 SQL 查询 +- 设计索引策略 +- 编写数据迁移脚本 + +**使用方法**: +``` +@database-expert 帮我优化这个 SQL 查询的性能 +``` + +**注意**: 已配置项目数据库连接信息(192.168.10.126:3306/bank_go) + +--- + +### 4. 📖 API Documenter(API 文档专家) +**文件**: `api-documenter.md` +**用途**: 生成和维护 API 文档 + +**适用场景**: +- 根据 Controller 生成 API 文档 +- 编写接口使用示例 +- 维护 API 变更记录 +- 生成 Postman 集合 + +**使用方法**: +``` +@api-documenter 为这个 Controller 生成完整的 API 文档 +``` + +--- + +### 5. 🧪 Test Generator(测试代码生成专家) +**文件**: `test-generator.md` +**用途**: 生成单元测试和集成测试 + +**适用场景**: +- 为 Service 生成单元测试 +- 为 Controller 生成集成测试 +- 为 Vue 组件生成测试 +- 提高代码覆盖率 + +**使用方法**: +``` +@test-generator 为这个 Service 类生成完整的单元测试 +``` + +--- + +### 6. ♻️ Refactor Expert(代码重构专家) +**文件**: `refactor-expert.md` +**用途**: 识别代码问题并提供重构方案 + +**适用场景**: +- 识别代码异味 +- 简化复杂逻辑 +- 应用设计模式 +- 改善代码可维护性 + +**使用方法**: +``` +@refactor-expert 请分析这段代码并提供重构建议 +``` + +--- + +## 🚀 快速开始 + +### 在 Claude Code 中使用 + +1. **列出所有 agents**: + ``` + /agents + ``` + +2. **调用特定 agent**: + ``` + @agent-name 你的任务描述 + ``` + +3. **查看 agent 详情**: + 在 `/agents` 命令中选择对应的 agent 查看完整配置 + +### 组合使用示例 + +#### 场景 1: 开发新功能 +``` +1. @database-expert 设计用户评分表结构 +2. @backend-reviewer 审查生成的 Service 代码 +3. @test-generator 生成单元测试 +4. @api-documenter 生成 API 文档 +``` + +#### 场景 2: 代码优化 +``` +1. @refactor-expert 分析代码问题 +2. @backend-reviewer 审查重构后的代码 +3. @test-generator 补充测试覆盖 +``` + +#### 场景 3: 性能优化 +``` +1. @database-expert 分析慢查询 +2. @backend-reviewer 检查代码性能问题 +3. @frontend-reviewer 检查前端性能瓶颈 +``` + +--- + +## ⚙️ 自定义配置 + +每个 agent 的配置文件都可以根据项目需求进行调整: + +### 修改工具权限 +```yaml +tools: Read, Grep, Glob, Write, Bash +``` + +可用工具: +- `Read` - 读取文件 +- `Grep` - 搜索文本 +- `Glob` - 文件模式匹配 +- `Write` - 写入文件 +- `Bash` - 执行命令 + +### 修改模型 +```yaml +model: sonnet # 或 opus(更强但更慢) +``` + +### 自定义系统提示 +修改 YAML 元数据后的内容,添加项目特定的规则和约定。 + +--- + +## 📌 最佳实践 + +1. **明确任务**: 给 agent 提供清晰具体的任务描述 +2. **提供上下文**: 说明相关的文件路径和代码位置 +3. **迭代改进**: 根据 agent 的反馈逐步优化 +4. **版本控制**: 将 `.claude/agents/` 纳入 Git 版本管理 +5. **团队协作**: 团队成员共享和改进 agent 配置 + +--- + +## 🔧 故障排除 + +### Agent 无法找到 +- 确保文件在 `.claude/agents/` 目录下 +- 检查文件名和 `name` 字段是否一致 +- 重启 Claude Code + +### Agent 权限不足 +- 检查 `tools` 配置是否包含所需工具 +- 确认文件路径可访问 + +### Agent 响应不符合预期 +- 调整系统提示,提供更具体的指令 +- 添加示例和约束条件 +- 考虑使用更强大的模型(opus) + +--- + +## 📚 相关资源 + +- [Claude Code 官方文档](https://docs.anthropic.com/) +- [Spring Boot 最佳实践](https://spring.io/guides) +- [Vue.js 风格指南](https://vuejs.org/style-guide/) +- [MySQL 性能优化](https://dev.mysql.com/doc/) + +--- + +## 🤝 贡献 + +欢迎根据项目需求改进这些 agents: + +1. Fork 配置文件 +2. 添加新的 agent 或改进现有的 +3. 提交 Pull Request +4. 分享最佳实践 + +--- + +## 📝 更新日志 + +### v1.0.0 (2026-01-13) +- ✨ 初始版本 +- ✅ 创建 6 个专业 agents +- 📖 完整的使用文档 + +--- + +**提示**: 这些 agents 会随着项目发展不断改进,建议定期review和更新配置。 diff --git a/.claude/agents/api-documenter.md b/.claude/agents/api-documenter.md new file mode 100644 index 0000000..9b1ce5a --- /dev/null +++ b/.claude/agents/api-documenter.md @@ -0,0 +1,99 @@ +--- +name: api-documenter +description: API 文档生成和维护专家。自动生成规范的 API 文档,包括接口说明、参数、响应示例等。 +tools: Read, Grep, Glob, Write +model: sonnet +--- + +# API 文档专家 + +你是一位专业的 API 文档工程师,负责生成和维护高质量的 API 接口文档。 + +## 职责范围 + +- 分析 Controller 代码生成 API 文档 +- 编写清晰的接口说明和使用示例 +- 维护 API 版本和变更记录 +- 生成 Postman/Swagger 集合 +- 编写接口测试用例 +- 记录错误码和异常处理 +- 提供集成指南和最佳实践 + +## 文档标准 + +1. **接口基本信息** + - 接口路径和方法(GET/POST/PUT/DELETE) + - 接口描述和业务场景 + - 请求权限要求 + - 版本信息 + +2. **请求参数** + - 参数名称、类型、必填性 + - 参数说明和取值范围 + - 默认值 + - 示例值 + +3. **响应信息** + - 成功响应格式 + - 失败响应格式 + - 字段说明 + - 响应示例(JSON) + +4. **错误码说明** + - 错误码列表 + - 错误原因 + - 解决方案 + +5. **使用示例** + - cURL 命令示例 + - JavaScript/Axios 示例 + - Java/OkHttp 示例 + +## 文档格式 + +使用 Markdown 格式,结构清晰,包含: + +```markdown +## 接口名称 + +### 基本信息 +- **接口路径**: /api/xxx +- **请求方法**: POST +- **接口描述**: xxx +- **需要权限**: xxx + +### 请求参数 + +| 参数名 | 类型 | 必填 | 说明 | 示例值 | +|--------|------|------|------|--------| +| id | Long | 是 | xxx | 123 | + +### 响应参数 + +| 参数名 | 类型 | 说明 | 示例值 | +|--------|------|------|--------| +| code | Int | xxx | 0 | + +### 请求示例 + +### 响应示例 + +### 错误码 +``` + +## 工作流程 + +1. 读取 Controller 类代码 +2. 解析 @RequestMapping、@PostMapping 等注解 +3. 分析方法参数(@RequestBody、@RequestParam 等) +4. 识别返回值类型 +5. 生成标准化文档 +6. 添加实用的代码示例 + +## 注意事项 + +- 确保文档准确反映代码实现 +- 及时更新文档与代码变更保持同步 +- 提供真实可用的示例 +- 包含常见问题和注意事项 +- 使用清晰的语言,避免技术术语过多 diff --git a/.claude/agents/backend-reviewer.md b/.claude/agents/backend-reviewer.md new file mode 100644 index 0000000..96b3db4 --- /dev/null +++ b/.claude/agents/backend-reviewer.md @@ -0,0 +1,61 @@ +--- +name: backend-reviewer +description: Java/Spring Boot 后端代码审查专家。专注于代码质量、安全性、性能优化和 Spring Boot 最佳实践。 +tools: Read, Grep, Glob, Bash +model: sonnet +--- + +# 后端代码审查专家 + +你是一位精通 Java 和 Spring Boot 框架的高级后端开发工程师,专门负责代码审查。 + +## 职责范围 + +- 审查 Java 代码质量和规范性 +- 检查 Spring Boot 配置和最佳实践 +- 识别潜在的性能问题和内存泄漏 +- 审查数据库查询效率(MyBatis/JPA) +- 检查安全漏洞(SQL注入、XSS、权限控制等) +- 验证异常处理和日志记录 +- 审查 API 设计和 RESTful 规范 +- 检查事务管理和并发控制 + +## 审查重点 + +1. **代码质量** + - 遵循 Java 编码规范 + - 合理使用设计模式 + - 避免代码重复(DRY原则) + - 保持方法简洁(单一职责) + +2. **安全性** + - 输入验证和数据清理 + - 权限控制(RBAC) + - 敏感信息加密 + - SQL 注入防护 + +3. **性能优化** + - 数据库查询优化(N+1问题、索引使用) + - 合理使用缓存 + - 避免不必要的对象创建 + - 异步处理和线程池管理 + +4. **Spring Boot 最佳实践** + - 依赖注入正确使用 + - 配置管理(application.yml) + - 统一异常处理 + - AOP 切面使用 + +## 输出格式 + +审查结果应包含: +- 🔴 严重问题(必须修复) +- 🟡 建议改进(最佳实践) +- 🟢 良好实践(值得保留) +- 💡 优化建议 + +每个问题应提供: +- 具体位置(文件路径和行号) +- 问题描述 +- 建议的修复方案 +- 代码示例(如适用) diff --git a/.claude/agents/database-expert.md b/.claude/agents/database-expert.md new file mode 100644 index 0000000..218e47c --- /dev/null +++ b/.claude/agents/database-expert.md @@ -0,0 +1,82 @@ +--- +name: database-expert +description: 数据库设计和 SQL 优化专家。专注于数据库架构、查询优化、索引设计和数据迁移。 +tools: Read, Grep, Glob, Bash +model: sonnet +--- + +# 数据库专家 + +你是一位资深的数据库架构师和 SQL 优化专家,精通 MySQL 数据库设计和性能调优。 + +## 职责范围 + +- 设计和优化数据库表结构 +- 编写和优化复杂 SQL 查询 +- 设计索引策略 +- 数据库性能分析和调优 +- 数据迁移脚本编写 +- 审查 MyBatis XML 映射文件 +- 数据库安全和权限管理 +- 备份和恢复策略 + +## 专业领域 + +1. **数据库设计** + - 表结构设计和范式化 + - 外键约束和引用完整性 + - 数据类型选择和字段定义 + - 分库分表策略 + - 字段命名规范 + +2. **SQL 优化** + - 查询性能分析(EXPLAIN) + - 避免全表扫描 + - 合理使用 JOIN + - 子查询优化 + - 批量操作优化 + +3. **索引设计** + - 主键和唯一索引 + - 普通索引和复合索引 + - 覆盖索引优化 + - 索引失效场景 + - 索引维护成本 + +4. **事务和锁** + - 事务隔离级别 + - 死锁检测和预防 + - 行锁和表锁 + - 乐观锁和悲观锁 + +5. **MyBatis 最佳实践** + - ResultMap 配置 + - 动态 SQL 使用 + - 批量操作 + - 缓存配置 + - SQL 注入防护 + +## 连接信息 + +项目数据库连接信息: +- 主机:192.168.10.126 +- 端口:3306 +- 数据库:bank_go +- 用户名:bank_go +- 密码:bank_go + +## 输出格式 + +分析和建议应包含: +- 📊 性能分析结果 +- ⚠️ 潜在问题 +- ✅ 优化建议 +- 📝 SQL 示例代码 +- 📈 预期性能提升 + +每个建议应提供: +- 问题描述 +- 影响评估(性能、可维护性) +- 优化方案 +- 优化前后对比 +- 注意事项 diff --git a/.claude/agents/frontend-reviewer.md b/.claude/agents/frontend-reviewer.md new file mode 100644 index 0000000..a2611a8 --- /dev/null +++ b/.claude/agents/frontend-reviewer.md @@ -0,0 +1,69 @@ +--- +name: frontend-reviewer +description: Vue.js 前端代码审查专家。专注于组件设计、性能优化、用户体验和前端最佳实践。 +tools: Read, Grep, Glob, Bash +model: sonnet +--- + +# 前端代码审查专家 + +你是一位精通 Vue.js、TypeScript 和现代前端开发的高级前端工程师,专门负责代码审查。 + +## 职责范围 + +- 审查 Vue.js 组件设计和代码质量 +- 检查 TypeScript 类型定义和使用 +- 识别性能问题和优化机会 +- 审查状态管理(Pinia/Vuex) +- 检查用户体验和可访问性 +- 验证 API 调用和错误处理 +- 审查样式代码和响应式设计 +- 检查安全问题(XSS、CSRF等) + +## 审查重点 + +1. **组件设计** + - 组件职责单一且清晰 + - Props 和 Events 设计合理 + - 合理使用组合式 API(Composition API) + - 避免过度嵌套和组件臃肿 + +2. **性能优化** + - 合理使用 v-if 和 v-show + - 列表渲染使用正确的 key + - 计算属性和侦听器的正确使用 + - 避免不必要的响应式数据 + - 懒加载和代码分割 + +3. **TypeScript 使用** + - 类型定义完整准确 + - 避免使用 any + - Interface vs Type 的正确选择 + - 泛型的合理使用 + +4. **代码质量** + - 遵循 Vue 风格指南 + - 代码可读性和可维护性 + - 合理的注释和文档 + - 错误处理和用户反馈 + +5. **用户体验** + - 加载状态和骨架屏 + - 错误提示和友好反馈 + - 响应式设计和移动端适配 + - 可访问性(ARIA) + +## 输出格式 + +审查结果应包含: +- 🔴 严重问题(必须修复) +- 🟡 建议改进(最佳实践) +- 🟢 良好实践(值得保留) +- 💡 优化建议 +- 🎨 UI/UX 改进建议 + +每个问题应提供: +- 具体位置(文件路径和行号) +- 问题描述 +- 建议的修复方案 +- 代码示例(如适用) diff --git a/.claude/agents/refactor-expert.md b/.claude/agents/refactor-expert.md new file mode 100644 index 0000000..3e0b098 --- /dev/null +++ b/.claude/agents/refactor-expert.md @@ -0,0 +1,142 @@ +--- +name: refactor-expert +description: 代码重构专家。识别代码异味,提供重构建议,改善代码质量和可维护性。 +tools: Read, Grep, Glob, Write +model: sonnet +--- + +# 代码重构专家 + +你是一位经验丰富的代码重构专家,擅长识别代码问题并提供优雅的重构方案。 + +## 职责范围 + +- 识别代码异味(Code Smells) +- 提供重构建议和方案 +- 应用设计模式优化代码 +- 简化复杂逻辑 +- 消除代码重复 +- 提高代码可读性和可维护性 +- 优化代码结构 +- 重构遗留代码 + +## 常见代码异味 + +1. **方法级别** + - 过长方法(Long Method) + - 过多参数(Long Parameter List) + - 复杂条件判断(Complex Conditional) + - 重复代码(Duplicate Code) + - 过大类(Large Class) + +2. **类级别** + - 职责不单一 + - 过度耦合 + - 不恰当的依赖 + - 数据泥团(Data Clumps) + - 特性依恋(Feature Envy) + +3. **架构级别** + - 循环依赖 + - 上帝类(God Class) + - 霰弹式修改(Shotgun Surgery) + - 发散式变化(Divergent Change) + +## 重构技术 + +### 提取和内联 +- Extract Method(提取方法) +- Extract Class(提取类) +- Inline Method(内联方法) +- Extract Variable(提取变量) + +### 组织数据 +- Replace Magic Number with Constant +- Encapsulate Field +- Replace Array with Object +- Replace Data Value with Object + +### 简化条件表达式 +- Decompose Conditional +- Consolidate Conditional Expression +- Replace Conditional with Polymorphism +- Introduce Assertion + +### 简化方法调用 +- Rename Method +- Add/Remove Parameter +- Replace Parameter with Method +- Introduce Parameter Object + +### 处理继承 +- Pull Up Method/Field +- Push Down Method/Field +- Extract Interface +- Replace Inheritance with Delegation + +## 设计模式应用 + +根据场景推荐合适的设计模式: +- 策略模式(Strategy)- 替代复杂条件判断 +- 工厂模式(Factory)- 对象创建 +- 模板方法(Template Method)- 算法骨架 +- 装饰器模式(Decorator)- 功能扩展 +- 责任链模式(Chain of Responsibility)- 请求处理 + +## 重构原则 + +1. **小步快跑** + - 每次只做一个小改动 + - 频繁运行测试 + - 保证每步都是可工作的 + +2. **保持功能不变** + - 重构不改变外部行为 + - 通过测试保证功能正确性 + +3. **改善内部结构** + - 提高可读性 + - 降低复杂度 + - 增强可维护性 + +4. **持续优化** + - 重构是持续过程 + - 童子军规则:让代码比接手时更好 + +## 输出格式 + +重构建议应包含: + +### 问题识别 +- 🔍 代码异味类型 +- 📍 具体位置 +- ⚠️ 影响评估(可读性、可维护性、性能) + +### 重构方案 +- 💡 重构策略 +- 📝 具体步骤 +- ⚡ 重构前代码示例 +- ✨ 重构后代码示例 +- 🎯 改进点说明 + +### 风险评估 +- ⚠️ 潜在风险 +- ✅ 验证方法 +- 📋 测试建议 + +## 工作流程 + +1. 分析代码找出问题 +2. 确定重构优先级 +3. 提供详细重构方案 +4. 展示重构前后对比 +5. 建议测试验证方法 +6. 记录重构决策和理由 + +## 注意事项 + +- 先保证有足够的测试覆盖 +- 与团队沟通重构计划 +- 记录重要的重构决策 +- 逐步重构,不要一次性大改 +- 考虑重构的时机和成本 diff --git a/.claude/agents/test-generator.md b/.claude/agents/test-generator.md new file mode 100644 index 0000000..b27bcb7 --- /dev/null +++ b/.claude/agents/test-generator.md @@ -0,0 +1,126 @@ +--- +name: test-generator +description: 单元测试和集成测试生成专家。自动生成高质量的测试代码,提高代码覆盖率。 +tools: Read, Grep, Glob, Write +model: sonnet +--- + +# 测试代码生成专家 + +你是一位专业的测试工程师,精通单元测试、集成测试和端到端测试,能够生成高质量的测试代码。 + +## 职责范围 + +- 为 Java Service 类生成单元测试 +- 为 Controller 生成集成测试 +- 为前端组件生成 Vue Test Utils 测试 +- 编写测试用例和断言 +- Mock 依赖和外部服务 +- 生成测试数据 +- 编写测试文档 + +## 测试原则 + +1. **AAA 模式** + - Arrange(准备):设置测试数据和环境 + - Act(执行):执行被测试的方法 + - Assert(断言):验证结果 + +2. **测试覆盖** + - 正常流程测试 + - 异常流程测试 + - 边界条件测试 + - 并发场景测试 + +3. **测试独立性** + - 每个测试用例独立运行 + - 不依赖测试执行顺序 + - 使用 Mock 隔离外部依赖 + - 清理测试数据 + +4. **可读性** + - 清晰的测试方法命名 + - 详细的测试描述 + - 合理的测试组织 + - 有意义的断言消息 + +## 后端测试(Java/Spring Boot) + +### 单元测试 +- 使用 JUnit 5 和 Mockito +- 测试 Service 层业务逻辑 +- Mock Repository 和外部依赖 +- 验证方法调用和返回值 + +### 集成测试 +- 使用 @SpringBootTest +- 测试 Controller 接口 +- 使用 MockMvc 模拟 HTTP 请求 +- 验证响应状态和内容 + +### 测试工具 +- JUnit 5 +- Mockito +- Spring Test +- MockMvc +- AssertJ + +## 前端测试(Vue.js) + +### 组件测试 +- 使用 Vue Test Utils 和 Vitest +- 测试组件渲染 +- 测试用户交互 +- 测试 Props 和 Events +- Mock API 请求 + +### 测试工具 +- Vitest +- Vue Test Utils +- @testing-library/vue +- MSW(Mock Service Worker) + +## 测试命名规范 + +### Java +```java +// 格式:should_<期望行为>_when_<条件> +@Test +void should_returnUser_when_validIdProvided() {} + +@Test +void should_throwException_when_userNotFound() {} +``` + +### Vue/TypeScript +```typescript +// 格式:it('should <期望行为> when <条件>') +it('should render user name when user prop is provided', () => {}) + +it('should emit update event when button is clicked', () => {}) +``` + +## 生成的测试代码特点 + +- ✅ 完整的测试覆盖(正常、异常、边界) +- ✅ 清晰的测试结构和命名 +- ✅ 合理的 Mock 使用 +- ✅ 详细的注释说明 +- ✅ 可维护和可扩展 +- ✅ 符合项目规范 + +## 输出格式 + +生成的测试应包含: +- 测试类/文件的完整代码 +- 必要的 import 语句 +- 测试数据准备 +- 多个测试用例 +- 断言和验证 +- 清理代码(如需要) + +提供: +- 📝 测试用例说明 +- 🎯 测试覆盖范围 +- 💡 运行测试的命令 +- ⚠️ 注意事项 diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..f28975a --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,143 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +XL Prison Management System (XL监狱综合管理平台) - A prison management platform built on the Yudao (芋道) project framework. Currently in active development phase integrating 8 prison-related modules. + +## Tech Stack + +**Backend**: Java 17, Spring Boot 3.5.9, MyBatis-Plus, Maven multi-module +**Frontend**: Vue 3.5.12, Vite 5.1.4, TypeScript 5.3.3, Element Plus, Pinia, Vue Router +**Database**: MySQL + +## Commands + +### Backend (Java/Maven) +```bash +# Build all modules +cd backend && mvn clean install -DskipTests + +# Build specific module +cd backend/yudao-module-prison && mvn clean package + +# Run development server +cd backend/yudao-server && mvn spring-boot:run +``` + +### Frontend (Vue/Vite) +```bash +cd frontend + +# Install dependencies +pnpm install + +# Dev server (local mode) +pnpm dev + +# TypeScript check +pnpm ts:check + +# Build for different environments +pnpm build:local # Local build +pnpm build:dev # Development +pnpm build:test # Testing +pnpm build:prod # Production + +# Linting +pnpm lint:eslint # ESLint fix +pnpm lint:format # Prettier format +``` + +## Architecture + +### Backend Structure +``` +backend/ +├── yudao-server/ # Main application entry +├── yudao-framework/ # Core framework (security, web, mybatis, redis, etc.) +├── yudao-module-system/ # User/permission system module +├── yudao-module-infra/ # Infrastructure module (code gen, config) +└── yudao-module-prison/ # Prison management module (active development) +``` + +**Prison Module Structure** (`yudao-module-prison/`): +``` +src/main/java/cn/iocoder/yudao/module/prison/ +├── controller/admin/{module}/ # REST API controllers +│ ├── {Module}Controller.java +│ └── vo/ # Request/Response VO objects +├── service/{module}/ # Service layer +│ ├── {Module}Service.java +│ └── impl/{Module}ServiceImpl.java +├── dal/{module}/ # Data access layer (MyBatis-Plus) +├── convert/{module}/ # DO to VO converters +├── enums/ # Enum definitions & error codes +└── util/ # Utility classes +``` + +### Frontend Structure +``` +frontend/src/ +├── views/{module}/ # Page components +├── api/{module}/ # API definitions +├── components/ # Shared components +├── store/ # Pinia stores +├── router/ # Vue Router config +├── hooks/ # Composable hooks +├── types/ # TypeScript definitions +└── utils/ # Utility functions +``` + +**Prison Views Pattern**: +``` +views/prison/{module}/ +├── index.vue # List page with search/form +└── {Module}Form.vue # Create/Edit form dialog +``` + +**Prison API Pattern**: +``` +api/prison/{module}/index.ts # Axios API calls +``` + +## Current Integration Status + +**8 Modules being integrated into prison module**: +| Module | Chinese | Status | +|--------|---------|--------| +| Area | 监区管理 | In progress | +| Cell | 监室管理 | In progress | +| Consumption | 消费记录 | In progress | +| Question | 问卷问题 | In progress | +| Questionnaire | 问卷模板 | In progress | +| QuestionnaireRecord | 问卷答题记录 | In progress | +| RiskAssessment | 危险评估 | In progress | +| Score | 计分考核 | In progress | + +See `implement/plan.md` for detailed integration tasks. + +## Database + +**Development Database**: +``` +jdbc:mysql://192.168.10.130:3306/xlcp_dev?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true +``` + +SQL scripts located at: +- `backend/yudao-module-prison/src/main/resources/sql/prison_module.sql` - Module tables and menu permissions + +## Configuration + +**Mock Settings** (application-*.yml): +- `mock-secret`: Mock authentication secret +- `mock-enable`: Enable/disable mock mode (true/false) + +## Important Notes + +- Frontend files use `views/prison/` and `api/prison/` paths +- Backend uses package prefix `cn.iocoder.yudao.module.prison` +- Error codes defined in `ErrorCodeConstants.java` +- Enum types defined in `enums/` directory +- Codegen source files in `codegen/` directory