charging-cabinet/tasks/review-full-codebase.md

185 lines
5.0 KiB
Markdown
Raw Normal View History

# 全面代码审查任务
## 目标
全面审查充电柜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. 必须实际读取代码文件,不能仅凭文件名判断