Files
makemd/docs/00_Business/tasks/backend/27_code_review_fixes.md

197 lines
6.8 KiB
Markdown
Raw Normal View History

# 代码审查修复任务
## 任务列表
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 | 完成时间 |
| ------- | ---------- | ---------- | ----- | ---- | -------- | ---- | --- | --- | ---- | -------- | -------- |
| BE-CR001 | 代码质量闭环 | 修复 TypeScript 编译错误400+ | 错误列表 | 编译通过 | 代码审查 | ✅ completed | P0 | - | 16h | AI-Backend-1 | 2026-03-22 |
| BE-CR002 | 代码质量闭环 | 修复金额字段类型51 处 float/double → decimal | 违规文件列表 | 数据库表更新 | 代码审查 | ✅ completed | P0 | - | 4h | AI-Backend-1 | 2026-03-20 |
| BE-CR003 | 安全闭环 | 移除 VaultCrypto 默认密钥硬编码 | VaultCrypto.ts | 安全密钥管理 | 代码审查 | ✅ completed | P0 | - | 1h | AI-Backend-1 | 2026-03-20 |
| BE-CR004 | 功能闭环 | 完成核心 TODO 项(商品/订单同步) | TODO 列表 | 功能实现 | 代码审查 | 🔒 claimed | P1 | - | 8h | AI-Backend-1 | 2026-03-25 |
| BE-CR005 | 类型安全闭环 | 减少 `any` 类型使用43 处) | 违规文件列表 | 类型定义完善 | 代码审查 | 🔒 claimed | P1 | - | 6h | AI-Backend-1 | 2026-03-25 |
| BE-CR006 | 日志规范闭环 | 统一 logger 使用86 处 console.log | 违规文件列表 | 日志统一 | 代码审查 | 🔒 claimed | P1 | - | 3h | AI-Backend-1 | 2026-03-24 |
| BE-CR007 | 输入验证闭环 | 完善输入参数验证 | API 路由列表 | Zod 验证 | 代码审查 | 🔒 claimed | P2 | - | 12h | AI-Backend-1 | 2026-04-10 |
| BE-CR008 | 性能优化闭环 | 优化数据库查询索引 | 慢查询日志 | 索引优化 | 性能监控 | 🔒 claimed | P2 | - | 8h | AI-Backend-1 | 2026-04-15 |
| BE-CR009 | 测试覆盖闭环 | 补充单元测试覆盖率 | 测试报告 | 测试用例 | 代码审查 | 🔒 claimed | P2 | - | 20h | AI-Backend-1 | 2026-04-20 |
## 相关闭环
- 代码质量闭环
- 安全闭环
- 功能闭环
- 类型安全闭环
- 日志规范闭环
- 输入验证闭环
- 性能优化闭环
- 测试覆盖闭环
## 依赖关系
- BE-CR001 是基础任务,无依赖
- BE-CR002 无依赖
- BE-CR003 无依赖
- BE-CR004 无依赖
- BE-CR005 无依赖
- BE-CR006 无依赖
- BE-CR007 依赖 BE-CR001
- BE-CR008 依赖 BE-CR001
- BE-CR009 依赖 BE-CR001
## 任务详情
### BE-CR001: 修复 TypeScript 编译错误
**问题描述**: Server 模块存在 400+ 个 TypeScript 编译错误,导致项目无法正常构建。
**影响文件**:
- `src/services/*.ts` (100+ 文件)
- `src/domains/**/*.ts` (50+ 文件)
- `src/core/**/*.ts` (30+ 文件)
**错误类型分布**:
- 类型不匹配错误: ~40%
- 缺少类型声明: ~30%
- 导入/导出错误: ~20%
- 其他语法错误: ~10%
**验收标准**:
- ✅ 运行 `npm run check` 无错误
- ✅ 项目能够成功编译
- ✅ 无 TypeScript 类型错误
- ✅ 所有导入导出正确
**实施步骤**:
1. 运行 `npm run check` 获取完整错误列表
2. 按模块分批修复优先修复核心服务Trade/Billing/Arbitrage
3. 添加缺失的类型声明文件
4. 统一模块导入规范
---
### BE-CR002: 修复金额字段类型
**问题描述**: 根据项目规则 1.1,金额字段必须使用 `decimal(10,2)`,但发现多处使用 `float`/`double`
**违规文件列表**:
| 文件路径 | 行号 | 违规代码 |
|----------|------|----------|
| `src/services/ProductService.ts` | 53 | `table.double('rating')` |
| `src/core/runtime/LegacyTableInitializer.ts` | 321-322 | `table.float('daily_budget')` |
| `src/domains/Arbitrage/ArbitrageService.ts` | 98-99 | `table.float('initial_profit_rate')` |
| `src/domains/Billing/SLAGovernanceService.ts` | 108 | `table.float('p95_latency_ms')` |
| `src/services/FXHedgingService.ts` | 40 | `table.float('volatility')` |
**验收标准**:
- ✅ 所有金额字段使用 `decimal(10,2)`
- ✅ 数据库表结构更新完成
- ✅ 迁移脚本执行成功
- ✅ 无数据丢失
**实施步骤**:
1. 识别所有使用 float/double 的金额字段
2. 创建数据库迁移脚本
3. 更新表结构定义
4. 执行迁移并验证数据完整性
---
### BE-CR003: 移除 VaultCrypto 默认密钥硬编码
**问题描述**: `VaultCrypto.ts` 中存在默认主密钥硬编码,如果环境变量未设置,将使用可预测的默认密钥,严重危及凭证安全。
**文件**: `server/src/utils/VaultCrypto.ts`
**行号**: 9
**验收标准**:
- ✅ 移除默认密钥硬编码
- ✅ 环境变量缺失时抛出明确错误
- ✅ 添加密钥验证逻辑
- ✅ 通过安全测试
**实施步骤**:
1. 修改 `MASTER_KEY` 获取逻辑
2. 添加环境变量验证
3. 更新相关文档
4. 测试密钥管理流程
---
### BE-CR004: 完成核心 TODO 项
**问题描述**: 发现 30 个 TODO/FIXME 注释,部分涉及核心功能缺失。
**关键遗留项**:
| 文件 | 行号 | 描述 | 优先级 |
|------|------|------|--------|
| `OperationAgentService.ts` | 118 | 商品同步到数据库 | P0 |
| `OperationAgentService.ts` | 167 | 订单同步到数据库 | P0 |
| `PlatformApiService.ts` | 204-214 | Amazon SP-API 同步 | P1 |
| `dynamicPricing.ts` | 261 | analyzeCompetitorPrices 方法 | P1 |
| `SummaryAggregationService.ts` | 125-126 | 真实成本/利润接入 | P1 |
**验收标准**:
- ✅ 所有 P0 级别 TODO 完成
- ✅ 商品同步功能实现
- ✅ 订单同步功能实现
- ✅ 核心功能测试通过
---
### BE-CR005: 减少 `any` 类型使用
**问题描述**: Dashboard 模块中存在 43 处 `any` 类型使用,削弱了 TypeScript 的类型安全。
**验收标准**:
- ✅ 减少 `any` 类型使用至 10 处以下
- ✅ 定义明确的接口类型
- ✅ 通过 TypeScript 严格检查
- ✅ 类型覆盖率 > 95%
---
### BE-CR006: 统一 logger 使用
**问题描述**: 86 个文件混合使用 `console.log/warn/error`,与统一的 logger 服务并存。
**验收标准**:
- ✅ 所有 console.log 替换为 logger
- ✅ 日志格式统一
- ✅ 日志级别正确使用
- ✅ 日志输出可配置
---
### BE-CR007: 完善输入参数验证
**问题描述**: 部分 API 缺少输入参数校验,建议统一使用 Zod 进行参数验证。
**验收标准**:
- ✅ 所有 API 路由添加参数验证
- ✅ 使用 Zod 统一验证
- ✅ 错误提示清晰
- ✅ 通过安全测试
---
### BE-CR008: 优化数据库查询索引
**问题描述**: 复杂查询需通过 `EXPLAIN` 校验索引,批量操作建议分批处理。
**验收标准**:
- ✅ 所有慢查询优化
- ✅ 索引合理配置
- ✅ 查询性能提升 > 50%
- ✅ 通过性能测试
---
### BE-CR009: 补充单元测试覆盖率
**问题描述**: 核心服务缺少单元测试,需要补充测试用例。
**验收标准**:
- ✅ 核心服务测试覆盖率 > 80%
- ✅ 关键业务逻辑测试完整
- ✅ 所有测试通过
- ✅ CI/CD 集成测试