113 lines
2.6 KiB
Plaintext
113 lines
2.6 KiB
Plaintext
---
|
||
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. **性能**:是否有明显的性能问题
|