# 代码审查任务(第二轮) ## 目标 审查安全修复和代码质量优化后的代码,确认问题已解决,无新引入问题。 ## 审查范围 ### 后端 (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. 审查报告用中文撰写