charging-cabinet/tasks/review-round-2.md
2026-07-02 05:38:01 +08:00

3.2 KiB
Raw Blame 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. 新引入问题检查

  • 无新的编译错误
  • 无新的类型错误
  • 无循环依赖
  • 无未使用的导入/变量

输出格式

# 代码审查报告(第二轮)

## 总体评价
[整体质量评分 1-10分简要评价]

## 安全修复验证结果
| 问题 | 状态 | 说明 |
|------|------|------|
| SQL注入 | ✅/❌ | [验证结果] |
| 密码哈希 | ✅/❌ | [验证结果] |
| 数据隔离 | ✅/ | [验证结果] |
| 权限校验 | ✅/❌ | [验证结果] |

## 代码质量验证结果
| 项目 | 状态 | 说明 |
|------|------|------|
| 文件拆分 | ✅/❌ | [验证结果] |
| 构建检查 | ✅/❌ | [验证结果] |
| JWT安全 | ✅/❌ | [验证结果] |

## 新引入问题
[列出新发现的问题,如无则写"无"]

## 总结
[总体结论]

审查工具

# 后端静态检查
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. 审查报告用中文撰写