--- description: 代码审查检查清单(手动应用) globs: alwaysApply: false --- # 代码审查检查清单 在提交代码前,请确保以下各项都已检查: ## 多租户数据隔离 - [ ] 所有数据库查询包含 `tenantId` 条件 - [ ] 创建数据时设置了 `tenantId` - [ ] 更新/删除操作验证了 `tenantId` - [ ] 新的 Prisma 模型包含了必需的审计字段 ## 数据验证 - [ ] DTO 验证规则完整 - [ ] 前端和后端都进行了数据验证 - [ ] 使用了 TypeScript 类型定义 - [ ] 处理了所有必填字段 ## 错误处理 - [ ] 所有异步操作都有错误处理 - [ ] 错误信息清晰明确 - [ ] 使用了合适的 HTTP 状态码 - [ ] 前端显示了友好的错误提示 ## 权限控制 - [ ] 后端使用了 `@RequirePermission()` 装饰器 - [ ] 前端路由配置了 `permissions` meta - [ ] 权限验证失败返回 403 - [ ] 遵循最小权限原则 ## 代码质量 - [ ] 代码格式符合 ESLint/Prettier 规范 - [ ] 复杂逻辑添加了注释 - [ ] 变量和函数命名清晰 - [ ] 无硬编码配置(使用环境变量) - [ ] 无调试代码(console.log 等) ## 性能优化 - [ ] 数据库查询使用了 `include` 预加载 - [ ] 使用了 `select` 精简字段 - [ ] 实现了分页查询 - [ ] 避免了 N+1 查询 - [ ] 前端组件按需加载 ## 安全性 - [ ] 敏感数据加密存储 - [ ] API 需要认证(除非 `@Public()`) - [ ] 防止了 SQL 注入(使用 Prisma) - [ ] 防止了 XSS 攻击 - [ ] Token 过期时间合理 ## 测试 - [ ] 核心业务逻辑有单元测试 - [ ] 测试覆盖率 > 80% - [ ] 所有测试通过 ## Git 提交 - [ ] 提交信息清晰(使用中文) - [ ] 提交信息格式:`类型: 描述` - [ ] 一次提交只做一件事 - [ ] 不包含敏感信息 ## 文档 - [ ] 复杂功能有文档说明 - [ ] API 接口有注释 - [ ] README 更新(如有必要) ## 使用建议 ### 在提交前运行 ```bash # 后端 cd backend pnpm lint # 代码检查 pnpm test # 运行测试 pnpm build # 确保能成功构建 # 前端 cd frontend pnpm lint # 代码检查 pnpm build # 确保能成功构建 ``` ### 自动化检查 考虑使用 Git hooks(如 husky)自动执行检查: - pre-commit: 运行 lint - pre-push: 运行测试 ### Code Review 关注点 审查他人代码时,重点关注: 1. **数据安全**:租户隔离是否完整 2. **权限控制**:是否正确验证权限 3. **错误处理**:是否处理所有异常情况 4. **代码质量**:是否易于理解和维护 5. **性能**:是否有明显的性能问题