Files
makemd/docs/00_Business/tasks/frontend/13_code_review_fixes.md

178 lines
5.4 KiB
Markdown
Raw Normal View History

# 代码审查修复任务(前端)
## 任务列表
| Task ID | 闭环关联 | 任务描述 | 输入 | 输出 | 触发条件 | 状态 | 优先级 | 依赖 | 预计耗时 | 负责人 | 完成时间 |
| ------- | ---------- | ---------- | ----- | ---- | -------- | ---- | --- | --- | ---- | -------- | -------- |
| FE-CR001 | 类型安全闭环 | 减少 `any` 类型使用43 处) | 违规文件列表 | 类型定义完善 | 代码审查 | ⏳ pending | P1 | - | 6h | AI-Frontend-1 | 2026-03-25 |
| FE-CR002 | 代码质量闭环 | 统一代码风格(缩进、括号、注释) | Dashboard 源码 | 代码风格统一 | 代码审查 | ⏳ pending | P2 | - | 4h | AI-Frontend-1 | 2026-04-05 |
| FE-CR003 | Mock 规范闭环 | 验证 Mock 数据隔离规范 | Mock 文件 | Mock 规范检查 | 代码审查 | ⏳ pending | P2 | - | 2h | AI-Frontend-1 | 2026-04-05 |
| FE-CR004 | 组件规范闭环 | 统一组件命名和结构 | 组件文件 | 组件规范统一 | 代码审查 | ⏳ pending | P2 | - | 3h | AI-Frontend-1 | 2026-04-08 |
| FE-CR005 | 性能优化闭环 | 优化前端性能(懒加载、缓存) | 性能报告 | 性能优化方案 | 性能监控 | ⏳ pending | P2 | - | 8h | AI-Frontend-1 | 2026-04-15 |
## 相关闭环
- 类型安全闭环
- 代码质量闭环
- Mock 规范闭环
- 组件规范闭环
- 性能优化闭环
## 依赖关系
- FE-CR001 是基础任务,无依赖
- FE-CR002 无依赖
- FE-CR003 无依赖
- FE-CR004 无依赖
- FE-CR005 无依赖
## 任务详情
### FE-CR001: 减少 `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)}`);
```
**违规文件列表**:
- `dashboard/src/services/userDataSource.ts`
- `dashboard/src/services/orderDataSource.ts`
- `dashboard/src/pages/Pricing.tsx`
- `dashboard/src/pages/Analytics/index.tsx`
- `dashboard/src/pages/Marketing/Ads.tsx`
- `dashboard/src/pages/Return/ReturnMonitor.tsx`
- `dashboard/src/services/certificateDataSource.ts`
- `dashboard/src/services/arbitrageDataSource.ts`
- `dashboard/src/components/HierarchySelector/index.tsx`
- `dashboard/src/pages/Product/MaterialUpload.tsx`
- `dashboard/src/services/userAssetDataSource.ts`
- `dashboard/src/services/returnDataSource.ts`
- `dashboard/src/services/abTestDataSource.ts`
- `dashboard/src/services/merchantDataSource.ts`
- `dashboard/src/services/logisticsDataSource.ts`
- `dashboard/src/services/blacklistDataSource.ts`
- `dashboard/src/services/taskCenterDataSource.ts`
- `dashboard/src/services/marketingDataSource.ts`
- `dashboard/src/services/financeDataSource.ts`
- `dashboard/src/services/afterSalesDataSource.ts`
- `dashboard/src/services/independentSiteDataSource.ts`
- `dashboard/src/services/b2bTradeDataSource.ts`
**验收标准**:
- ✅ 减少 `any` 类型使用至 10 处以下
- ✅ 定义明确的接口类型
- ✅ 通过 TypeScript 严格检查
- ✅ 类型覆盖率 > 95%
**实施步骤**:
1. 识别所有使用 `any` 的位置
2. 定义明确的接口类型
3. 使用类型断言替代 `as any`
4. 运行 TypeScript 检查验证
**整改示例**:
```typescript
// ❌ 错误
const [dateRange, setDateRange] = useState(null as any);
// ✅ 正确
import type { Dayjs } from 'dayjs';
const [dateRange, setDateRange] = useState<[Dayjs, Dayjs] | null>(null);
// ❌ 错误
status: status as any,
// ✅ 正确
status: status as 'active' | 'inactive' | 'pending',
// ❌ 错误
const response = await fetch(`${url}?${new URLSearchParams(params as any)}`);
// ✅ 正确
interface QueryParams {
page: number;
pageSize: number;
status?: string;
}
const response = await fetch(`${url}?${new URLSearchParams(params as unknown as Record<string, string>)}`);
```
---
### FE-CR002: 统一代码风格
**问题描述**: Dashboard 模块代码风格基本统一,但仍有改进空间。
**检查项**:
- 缩进格式2 空格)
- 括号使用(单行/多行)
- 注释规范JSDoc
- 命名规范camelCase/PascalCase
**验收标准**:
- ✅ 代码风格统一
- ✅ 通过 ESLint 检查
- ✅ 符合项目规范
- ✅ 代码可读性提升
---
### FE-CR003: 验证 Mock 数据隔离规范
**问题描述**: 验证 Mock 数据是否符合项目规范,确保 Mock 数据与真实业务逻辑隔离。
**检查项**:
- Mock 文件是否在 `/mock` 目录
- 是否包含 `[MOCK]` 标记
- 是否通过环境变量控制
- 是否有 DataSource 抽象层
**验收标准**:
- ✅ Mock 数据完全隔离
- ✅ Mock 文件包含标记
- ✅ 环境变量控制正确
- ✅ DataSource 层完整
---
### FE-CR004: 统一组件命名和结构
**问题描述**: 组件命名和结构基本规范,但需要进一步统一。
**检查项**:
- 组件命名PascalCase
- 文件命名PascalCase.tsx
- 组件结构Props/State/Effects
- 导出方式default/named
**验收标准**:
- ✅ 组件命名统一
- ✅ 文件结构规范
- ✅ Props 类型定义完整
- ✅ 组件可复用性提升
---
### FE-CR005: 优化前端性能
**问题描述**: 前端性能需要优化,包括懒加载、缓存等。
**优化项**:
- 组件懒加载React.lazy
- 图片懒加载
- 路由懒加载
- 缓存策略
- 代码分割
**验收标准**:
- ✅ 首屏加载时间 < 2s
- ✅ Lighthouse 性能分数 > 90
- ✅ 代码体积优化
- ✅ 缓存策略有效