# 全面代码审查任务 ## 目标 全面审查充电柜PMS项目的所有代码,确保质量、安全、规范。 ## 审查范围 ### 后端 (Rust + Axum) `software/server/src/` 目录下所有文件: - `main.rs` — 启动入口 - `config.rs` — 配置管理 - `error.rs` — 错误处理 - `db/mod.rs` — 数据库连接 - `db/migrate.rs` — 数据库迁移 - `redis.rs` — Redis连接 - `middleware/auth.rs` — JWT认证+RBAC权限 - `routes/` — 所有路由模块 - `auth.rs` — 登录/登出 - `organizations.rs` — 组织CRUD - `projects.rs` — 项目CRUD - `cabinets.rs` — 设备CRUD - `cabinet_tree.rs` — 树状结构 - `users.rs` — 用户管理 - `roles.rs` — 角色管理 - `users_perm.rs` — 用户权限 - `charge_records.rs` — 充电记录 - `device_logs.rs` — 设备日志 - `energy_stats.rs` — 能耗统计 - `downloads.rs` — 下载中心 - `operation_logs.rs` — 操作日志 - `tcp/` — TCP通讯服务 - `server.rs` — TCP监听 - `connection.rs` — 连接管理 - `protocol.rs` — 协议解析 - `handler.rs` — 消息处理 - `commands.rs` — 指令下发 ### 前端 (React + TypeScript) `software/web/src/` 目录下所有文件: - `App.tsx` — 路由配置 - `main.tsx` — 入口 - `layouts/AdminLayout.tsx` — 后台布局 - `api/` — API封装 - `stores/auth.ts` — 认证状态 - `utils/permission.ts` — 权限工具 - `components/Permission.tsx` — 权限组件 - `pages/` — 所有页面 - `Login.tsx` — 登录页 - `Dashboard.tsx` — 首页 - `devices/` — 设备管理 - `charge-records/` — 充电记录 - `device-logs/` — 设备日志 - `energy/` — 能耗管理 - `settings/` — 系统设置 - `h5/` — H5用户端 - `pages/` — H5页面 - `components.tsx` — 移动端组件 - `layout.tsx` — H5布局 ## 审查清单 ### 1. 编译与类型检查 - [ ] `cargo check` 零报错零警告 - [ ] `cargo clippy` 零报错零警告 - [ ] `tsc --noEmit` 零报错零警告 - [ ] `vite build` 成功 ### 2. 代码规范 - [ ] 单函数≤80行 - [ ] 命名语义化,无无意义缩写 - [ ] 完整注释(入参、返回值、复杂逻辑) - [ ] 常量抽离,无硬编码散落 - [ ] 无废弃API使用 ### 3. 错误处理 - [ ] 所有外部IO/网络请求有异常捕获 - [ ] 无裸 `panic!` 或 `unwrap()` - [ ] 分支逻辑全覆盖,无遗漏兜底 - [ ] 错误信息有意义,便于调试 ### 4. Rust专项 - [ ] 内存安全,无冗余拷贝 - [ ] 无 `unsafe` 块(除非有合理理由) - [ ] 所有权管理合理 - [ ] 异步代码无阻塞操作 ### 5. React专项 - [ ] 函数式组件+Hooks,无Class组件 - [ ] 状态分层管理(接口/渲染/业务逻辑) - [ ] 无内存泄漏(useEffect清理) - [ ] 无 `as any` 类型断言 ### 6. 安全 - [ ] SQL注入防护(全部参数化查询) - [ ] 密码哈希(argon2/bcrypt) - [ ] JWT密钥安全(非默认值) - [ ] 输入参数校验 - [ ] 权限校验覆盖所有API接口 - [ ] 数据隔离(组织/项目/设备级) - [ ] 敏感参数脱敏(日志中不打印密码/token) ### 7. 业务逻辑 - [ ] TCP协议解析正确(签名验证、粘包处理、超时清理) - [ ] 权限模型正确(总管理员/企业管理员/普通用户) - [ ] 异步导出流程完整(任务创建→后台处理→下载) - [ ] 前端权限组件正确隐藏/显示按钮 ### 8. 架构 - [ ] 接口层、业务逻辑层、数据模型层分离 - [ ] 无循环依赖 - [ ] 模块职责清晰 - [ ] 路由注册完整,无遗漏 ### 9. 性能 - [ ] 数据库查询有索引 - [ ] 无N+1查询问题 - [ ] 前端列表有分页 - [ ] 大数据量导出异步处理 ### 10. 可维护性 - [ ] 文件长度合理(≤300行) - [ ] 组件拆分合理 - [ ] 代码重复度低 - [ ] 配置外部化(环境变量) ## 输出格式 ```markdown # 全面代码审查报告 ## 总体评价 [整体质量评分 1-10分,简要评价] ## 统计 - 后端文件数:X - 前端文件数:X - 总代码行数:X - 问题总数:X(严重X / 警告X / 建议X) ## 严重问题( 必须修复) ### 问题1:[标题] - **位置**:`文件路径:行号` - **描述**:[问题描述] - **风险**:[可能的影响] - **建议**:[修复方案] ## 警告(🟡 建议修复) ### 警告1:[标题] - **位置**:`文件路径:行号` - **描述**:[问题描述] - **建议**:[改进方案] ## 优点 - [值得肯定的设计/实现] ## 总结 [总体结论和优先修复建议] ``` ## 审查工具 ```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. 审查报告用中文撰写 5. 必须实际读取代码文件,不能仅凭文件名判断