# AI-Proj 代码评审检查清单 ## 后端(Go + Gin + GORM) ### 分层架构 - [ ] Handler 是否直接 import `database/` 包?— 禁止,必须通过 Service 层。教训:架构退化导致循环依赖 - [ ] 新 Handler 是否在 routes/ 中注册?— 遗漏会导致 404 - [ ] MCP 专用 endpoint 是否包含 `/mcp/` 前缀?— 教训:缺少前缀导致 MCP bridge 404 ### 数据库 - [ ] 新增 Migration 文件名是否符合 `YYYYMMDDHHMMSS_xxx.up.sql` 格式? - [ ] Migration 是否有对应的 `.down.sql`? - [ ] GORM 查询是否带 `tenant_id` 过滤?(多租户安全) - [ ] 软删除查询是否正确使用 `Unscoped()`?— 误用导致查不到已删除数据或查出已删除数据 ### 认证与权限 - [ ] 新 API 是否配置了 Auth 中间件?— 遗漏导致未授权访问 - [ ] JWT token 类型是否区分 access/refresh?— 教训:token 混用导致安全漏洞 - [ ] bcrypt cost 是否使用 12?— 教训:默认 cost 10 导致登录失败 ### Redis - [ ] Redis key 是否有 TTL?— 缺少 TTL 导致内存泄露 - [ ] Redis 不可用时是否降级到数据库? ## 前端(React 18 + Ant Design) ### Modal 安全 - [ ] `Modal.success/info/warning/error` 之后是否有立即执行的 UI 操作?— 必须放在 `onOk` 回调中。教训:两个 Modal 同时弹出互相遮挡 ### 状态管理 - [ ] React Query 的 queryKey 是否正确包含所有依赖参数?— 缺少导致缓存错误 - [ ] 列表页分页是否正确重置 page?— 教训:筛选条件变更后 page 未重置导致空页 ### 类型安全 - [ ] 是否有 `any` 类型?— 应使用具体类型 - [ ] API 响应是否有 TypeScript 接口定义? ## 通用 - [ ] `.env` ��凭据文件是否被意外加入 git? - [ ] 是否有硬编码的 URL/IP/端口?— 应使用配置 - [ ] 错误日志是否包含足够的上下文信息?(user_id, tenant_id, request_id)