charging-cabinet/tasks/review-round-2.md

129 lines
3.2 KiB
Markdown
Raw Normal View History

# 代码审查任务(第二轮)
## 目标
审查安全修复和代码质量优化后的代码,确认问题已解决,无新引入问题。
## 审查范围
### 后端 (Rust + Axum)
- `software/server/src/` 目录下所有文件
- 重点审查安全修复的4个问题是否彻底解决
### 前端 (React + TypeScript)
- `software/web/src/` 目录下所有文件
- 重点审查:拆分后的组件结构、构建是否正常
## 审查清单
### 1. 安全修复验证
#### 1.1 SQL注入修复
- [ ] `operation_logs.rs` 使用参数化查询(`.bind()`
- [ ] `charge_records.rs` 的 LIMIT/OFFSET 使用 `.bind()`
- [ ] `energy_stats.rs` 的 LIMIT/OFFSET 使用 `.bind()`
- [ ]`format!` 拼接用户输入到SQL
#### 1.2 密码哈希
- [ ] 使用 argon2 或 bcrypt 哈希密码
- [ ] 登录时使用 `verify_password` 验证
- [ ] 创建/重置用户时哈希密码
- [ ] 数据库password字段长度≥255
#### 1.3 数据隔离
- [ ] `CurrentUser` 包含 `organization_id`
- [ ] 查询自动附加组织过滤
- [ ] 总管理员可看全部,企业管理员只看本组织
- [ ] 无组织用户无法查看数据
#### 1.4 权限校验
- [ ] 所有路由都有 `check_permission` 调用
- [ ] 权限码与功能匹配
- [ ] 无越权访问可能
### 2. 代码质量验证
#### 2.1 文件拆分
- [ ] `organizations.rs` ≤300行
- [ ] `users.rs` ≤300行
- [ ] `devices/index.tsx` ≤300行
- [ ] 拆分后组件职责单一
#### 2.2 构建检查
- [ ] `cargo check` 零报错零警告
- [ ] `cargo clippy` 零报错零警告
- [ ] `tsc --noEmit` 零报错零警告
- [ ] `vite build` 成功无IconFolderOpen错误
#### 2.3 JWT安全
- [ ] 启动时检测默认密钥并打印WARN
- [ ] 生产环境必须设置JWT_SECRET
### 3. 回归测试
- [ ] 登录功能正常(密码哈希后)
- [ ] 组织树查询正常(数据隔离后)
- [ ] 充电记录查询正常(参数化查询后)
- [ ] 前端页面正常渲染(组件拆分后)
### 4. 新引入问题检查
- [ ] 无新的编译错误
- [ ] 无新的类型错误
- [ ] 无循环依赖
- [ ] 无未使用的导入/变量
## 输出格式
```markdown
# 代码审查报告(第二轮)
## 总体评价
[整体质量评分 1-10分简要评价]
## 安全修复验证结果
| 问题 | 状态 | 说明 |
|------|------|------|
| SQL注入 | ✅/❌ | [验证结果] |
| 密码哈希 | ✅/❌ | [验证结果] |
| 数据隔离 | ✅/ | [验证结果] |
| 权限校验 | ✅/❌ | [验证结果] |
## 代码质量验证结果
| 项目 | 状态 | 说明 |
|------|------|------|
| 文件拆分 | ✅/❌ | [验证结果] |
| 构建检查 | ✅/❌ | [验证结果] |
| JWT安全 | ✅/❌ | [验证结果] |
## 新引入问题
[列出新发现的问题,如无则写"无"]
## 总结
[总体结论]
```
## 审查工具
```bash
# 后端静态检查
cd software/server && cargo check && cargo clippy
# 前端类型检查
cd software/web && tsc --noEmit
# 前端构建测试
cd software/web && vite build
# 代码行数统计
find src -name "*.rs" -exec wc -l {} + | sort -n
find src -name "*.tsx" -exec wc -l {} + | sort -n
```
## 质量约束
1. 审查必须覆盖所有清单项目
2. 每个问题必须给出具体位置和修复建议
3. 安全修复必须逐项验证
4. 审查报告用中文撰写