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