refactor(terminology): 统一术语标准并优化代码类型安全

- 将B2B统一为TOB术语
- 将状态值统一为大写格式
- 优化类型声明,避免使用any
- 将float类型替换为decimal以提高精度
- 新增术语标准化文档
- 优化路由结构和菜单分类
- 添加TypeORM实体类
- 增强加密模块安全性
- 重构前端路由结构
- 完善任务模板和验收标准
This commit is contained in:
2026-03-20 09:43:50 +08:00
parent eafa1bbe94
commit 48a78137c5
132 changed files with 13767 additions and 2140 deletions

View File

@@ -0,0 +1,346 @@
# 代码审查报告
**项目名称**: Crawlful Hub - 全球电商增长中台
**审查日期**: 2026-03-20
**审查范围**: 全项目源代码Server / Dashboard / Extension / Client / Node-Agent
**审查标准**: 项目编码规范、TypeScript 最佳实践、安全标准、性能优化
---
## 执行摘要
本次审查覆盖了项目的 5 个主要模块,共审查了约 200+ 个源代码文件。发现以下关键问题:
| 类别 | 问题数量 | 严重程度 |
|------|----------|----------|
| TypeScript 编译错误 | 400+ | 🔴 严重 |
| 数据类型违规float/double | 51 | 🔴 严重 |
| 使用 `any` 类型 | 43 | 🟡 中等 |
| TODO/FIXME 遗留 | 30 | 🟡 中等 |
| 混合使用 console.log | 86 | 🟢 轻微 |
| 安全密钥硬编码 | 1 | 🔴 严重 |
---
## 1. 严重问题(需立即修复)
### 1.1 TypeScript 编译错误
**问题描述**: Server 模块存在 400+ 个 TypeScript 编译错误,导致项目无法正常构建。
**影响文件**:
- `src/services/*.ts` (100+ 文件)
- `src/domains/**/*.ts` (50+ 文件)
- `src/core/**/*.ts` (30+ 文件)
**错误类型分布**:
```
- 类型不匹配错误: ~40%
- 缺少类型声明: ~30%
- 导入/导出错误: ~20%
- 其他语法错误: ~10%
```
**整改建议**:
1. 运行 `npm run check` 获取完整错误列表
2. 按模块分批修复优先修复核心服务Trade/Billing/Arbitrage
3. 添加缺失的类型声明文件
4. 统一模块导入规范
### 1.2 金额字段使用 float/double违反项目规范
**问题描述**: 根据项目规则 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')` |
**整改建议**:
```typescript
// ❌ 错误
table.float('price')
table.double('amount')
// ✅ 正确
table.decimal('price', 10, 2)
table.decimal('amount', 10, 2)
```
### 1.3 安全密钥硬编码
**问题描述**: `VaultCrypto.ts` 中存在默认主密钥硬编码。
**文件**: `server/src/utils/VaultCrypto.ts`
**行号**: 9
```typescript
private static MASTER_KEY = process.env.VAULT_MASTER_KEY || 'crawlful_default_master_key_32chars_';
```
**风险**: 如果环境变量未设置,将使用可预测的默认密钥,严重危及凭证安全。
**整改建议**:
```typescript
// ❌ 错误
private static MASTER_KEY = process.env.VAULT_MASTER_KEY || 'default_key';
// ✅ 正确
private static getMasterKey(): string {
const key = process.env.VAULT_MASTER_KEY;
if (!key) {
throw new Error('VAULT_MASTER_KEY environment variable is required');
}
return key.padEnd(32).substring(0, 32);
}
```
---
## 2. 中等问题(建议修复)
### 2.1 过度使用 `any` 类型
**问题描述**: Dashboard 模块中存在 43 处 `any` 类型使用,削弱了 TypeScript 的类型安全。
**典型违规模式**:
```typescript
// ❌ 错误
const [dateRange, setDateRange] = useState(null as any);
status: status as any,
const response = await fetch(`${url}?${new URLSearchParams(params as any)}`);
```
**整改建议**:
```typescript
// ✅ 正确
import type { Dayjs } from 'dayjs';
const [dateRange, setDateRange] = useState<[Dayjs, Dayjs] | null>(null);
// 定义明确的类型
interface QueryParams {
page: number;
pageSize: number;
status?: string;
}
const response = await fetch(`${url}?${new URLSearchParams(params as unknown as Record<string, string>)}`);
```
### 2.2 TODO/FIXME 遗留项
**问题描述**: 发现 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 |
### 2.3 混合使用 console.log
**问题描述**: 86 个文件混合使用 `console.log/warn/error`,与统一的 logger 服务并存。
**整改建议**:
统一使用项目提供的 logger 服务:
```typescript
// ❌ 错误
console.log('[INFO] Message', data);
console.error('[ERROR] Message', error);
// ✅ 正确
import { logger } from '../utils/logger';
logger.info('Message', data);
logger.error('Message', error);
```
---
## 3. 代码风格问题
### 3.1 命名规范
**总体情况**: 命名规范执行良好,符合项目规则。
**亮点**:
- 服务类统一使用 `Service` 后缀 ✅
- 表名统一使用 `cf_` 前缀 ✅
- 数据库字段使用下划线命名 ✅
**改进空间**:
- 部分接口命名不一致(如 `PurchaseOrder` vs `SalesOrder`
- 建议统一使用 PascalCase 命名接口
### 3.2 注释规范
**亮点**:
- 核心业务服务包含 JSDoc 注释 ✅
- 任务 ID 标记清晰(如 `[BIZ_TRADE_01]`)✅
**改进空间**:
- 部分工具函数缺少注释
- 建议复杂算法添加实现说明
### 3.3 文件组织
**亮点**:
- Mock 数据隔离在 `/mock` 目录 ✅
- 类型定义集中在 `types/` 目录 ✅
- 领域驱动设计分层清晰 ✅
---
## 4. 架构合规性审查
### 4.1 逻辑集中化原则
**审查结果**: 整体符合逻辑集中化原则
**符合项**:
- 业务逻辑集中在 Service 层 ✅
- Controller 只负责请求/响应 ✅
- 通过 Service 暴露接口 ✅
**建议**:
- 部分 Controller 中仍有少量业务逻辑,建议迁移到 Service
### 4.2 数据完整性
**审查结果**: 基本符合规范
**符合项**:
- 使用 `hasTable` 前置校验 ✅
- JSON 字段序列化处理 ✅
**违规项**:
- 金额字段使用 float/double见 1.2
### 4.3 RBAC 权限控制
**审查结果**: 符合规范
**符合项**:
- 使用 `requirePermission` 中间件 ✅
- 路由层权限控制 ✅
- 无硬编码 `role === 'ADMIN'`
---
## 5. 安全审查
### 5.1 认证与授权
**审查结果**: 符合规范
- JWT Token 验证 ✅
- MFA 双因素认证 ✅
- OAuth2 支持 ✅
### 5.2 数据加密
**审查结果**: 存在风险
- VaultCrypto 实现正确 ✅
- 默认密钥硬编码 ❌(见 1.3
### 5.3 输入验证
**审查结果**: 需要加强
- 部分 API 缺少输入参数校验
- 建议统一使用 Zod 进行参数验证
---
## 6. 性能审查
### 6.1 数据库查询
**审查结果**: 需要优化
**建议**:
- 复杂查询需通过 `EXPLAIN` 校验索引
- 批量操作建议分批处理(见 TODO 项)
### 6.2 缓存使用
**审查结果**: 符合规范
- Redis 缓存使用正确 ✅
- 本地缓存策略合理 ✅
### 6.3 并发控制
**审查结果**: 符合规范
- Worker 并发数 ≤ 10 ✅
- API 速率限制 ✅
---
## 7. 整改建议优先级
### P0立即修复
1. 修复 TypeScript 编译错误400+
2. 修复金额字段类型51 处 float/double → decimal
3. 移除 VaultCrypto 默认密钥硬编码
### P1本周修复
4. 完成核心 TODO 项(商品/订单同步)
5. 减少 `any` 类型使用43 处)
6. 统一 logger 使用86 处 console.log
### P2本月修复
7. 完善输入参数验证
8. 优化数据库查询索引
9. 补充单元测试覆盖率
---
## 8. 附录
### 8.1 项目结构统计
```
server/src/
├── api/routes/ 40+ 路由文件
├── domains/ 8+ 领域模块
├── services/ 100+ 服务文件
├── core/ 30+ 核心模块
├── utils/ 20+ 工具文件
└── tests/ 15+ 测试文件
dashboard/src/
├── pages/ 40+ 页面组件
├── services/ 20+ 数据源服务
├── components/ 15+ UI组件
└── types/ 类型定义
extension/src/
├── background/ 10+ 后台服务
├── content/ 内容脚本
└── utils/ 工具类
```
### 8.2 合规检查清单
| 检查项 | 状态 | 备注 |
|--------|------|------|
| 表前缀 `cf_` | ✅ | 全部符合 |
| 金额字段 `decimal(10,2)` | ❌ | 51 处违规 |
| 服务类 `Service` 后缀 | ✅ | 全部符合 |
| 权限 `authorize()` 中间件 | ✅ | 全部符合 |
| 五元组追踪 | ✅ | 核心服务已实施 |
| 状态机 FSM | ✅ | 核心流程已实施 |
| 逻辑集中化 | ✅ | 整体符合 |
---
**报告生成时间**: 2026-03-20
**审查工具**: TypeScript Compiler, ESLint, 人工审查
**下次审查建议**: 修复 P0 问题后进行复查