|
| 1 | +# 代码审查处理清单 |
| 2 | + |
| 3 | +## 🔴 P0 - 高优先级(必须修复) |
| 4 | + |
| 5 | +### 1. 修复硬编码颜色问题(代码规范) |
| 6 | +- [ ] 扫描所有 `bg-[#...]`、`text-[#...]`、`border-[#...]` 使用 |
| 7 | +- [ ] 扫描所有内联样式中的颜色硬编码 |
| 8 | +- [ ] 将常用的 Binance 色系映射到 theme 或 CSS 变量(如 `--color-success`、`--color-danger`、`--color-warning`) |
| 9 | +- [ ] 替换 `Toast.tsx` 中的颜色(第 32-49 行) |
| 10 | +- [ ] 替换 `useWasmEngine.ts` 中的颜色(第 513-515 行) |
| 11 | +- [ ] 替换 `StatsPanel.tsx` 中的颜色(第 73-75, 88-96 行) |
| 12 | +- [ ] 替换 `LoadingScreen.tsx` 中的颜色(第 7-10 行) |
| 13 | +- [ ] 替换 `LeverageSlider.tsx` 中的颜色和内联样式 |
| 14 | +- [ ] 替换 `MobileTradebar.tsx` 中的颜色 |
| 15 | +- [ ] 替换 `PositionCard.tsx` 中的颜色和内联样式 |
| 16 | +- [ ] 替换 `Header.tsx` 中的颜色 |
| 17 | +- [ ] 替换 `App.tsx` 和 `TradeForm.tsx` 中的颜色 |
| 18 | +- [ ] 使用 `text-[var(--...)]`/`bg-[var(--...)]` 或现有 palette 类替代 |
| 19 | +- [ ] 测试主题切换功能 |
| 20 | + |
| 21 | +**涉及文件**(15个文件): |
| 22 | +- `src/components/Toast/Toast.tsx` |
| 23 | +- `src/hooks/useWasmEngine.ts` |
| 24 | +- `src/components/Dashboard/StatsPanel.tsx` |
| 25 | +- `src/components/Layout/LoadingScreen.tsx` |
| 26 | +- `src/components/Dashboard/Trade/LeverageSlider.tsx` |
| 27 | +- `src/components/Dashboard/Trade/MobileTradebar.tsx` |
| 28 | +- `src/components/Dashboard/Trade/PositionCard.tsx` |
| 29 | +- `src/components/Layout/Header.tsx` |
| 30 | +- `src/App.tsx` |
| 31 | +- `src/components/Dashboard/Trade/TradeForm.tsx` |
| 32 | +- 其他组件文件 |
| 33 | + |
| 34 | +**预计工作量**:2-3 天 |
| 35 | + |
| 36 | +--- |
| 37 | + |
| 38 | +### 2. 修复类型安全问题(代码规范) |
| 39 | +- [ ] 检查 `src/hooks/tradingState/eventHandler.ts` 第 49-50 行 |
| 40 | +- [ ] 为 `event` 明确定义联合类型(覆盖 `positionOpened` 等事件形态) |
| 41 | +- [ ] 移除 `as any` 与 `eslint-disable` |
| 42 | +- [ ] 使用类型守卫(type guards)进行类型检查 |
| 43 | +- [ ] 检查其他文件中的 `as any` 使用 |
| 44 | +- [ ] 测试类型安全 |
| 45 | + |
| 46 | +**涉及文件**: |
| 47 | +- `src/hooks/tradingState/eventHandler.ts` |
| 48 | +- `src/workers/marketSimulation/history.ts`(可能还有其他) |
| 49 | + |
| 50 | +**预计工作量**:0.5 天 |
| 51 | + |
| 52 | +--- |
| 53 | + |
| 54 | +### 3. 修复日志规范问题(代码规范) |
| 55 | +- [ ] 创建 `src/utils/logger.ts`(轻量 logger 包装) |
| 56 | +- [ ] 实现 DEV 环境输出,生产环境静默 |
| 57 | +- [ ] 替换 `useWasmEngine.ts` 中的 8 处 `console.log` |
| 58 | +- [ ] 替换 `useBinanceMarket.ts` 中的 20 处 `console.log` |
| 59 | +- [ ] 替换 `services/binance/api.ts` 中的 6 处 `console.log` |
| 60 | +- [ ] 替换 `services/binance/websocket.ts` 中的 4 处 `console.log` |
| 61 | +- [ ] 替换 `useMockMarket.ts` 中的 3 处 `console.log` |
| 62 | +- [ ] 替换 `useMarketData.ts` 中的 3 处 `console.log` |
| 63 | +- [ ] 替换其他文件中的 `console.log` |
| 64 | +- [ ] 或统一改为 `console.warn`/`console.error` 并打上特定前缀 |
| 65 | +- [ ] 测试日志输出(DEV/PROD 环境) |
| 66 | + |
| 67 | +**涉及文件**(10个文件): |
| 68 | +- `src/hooks/useWasmEngine.ts` (8处) |
| 69 | +- `src/hooks/useBinanceMarket.ts` (20处) |
| 70 | +- `src/services/binance/api.ts` (6处) |
| 71 | +- `src/services/binance/websocket.ts` (4处) |
| 72 | +- `src/hooks/useMockMarket.ts` (3处) |
| 73 | +- `src/hooks/useMarketData.ts` (3处) |
| 74 | +- `src/hooks/tradingState/eventHandler.ts` (1处) |
| 75 | +- `src/hooks/tradingEngine/wasmSingleton.ts` (5处) |
| 76 | +- `src/types/wasm.ts` (1处) |
| 77 | +- `src/services/binance/index.ts` (1处) |
| 78 | + |
| 79 | +**预计工作量**:1 天 |
| 80 | + |
| 81 | +--- |
| 82 | + |
| 83 | +### 4. 修复定时器清理问题(资源管理) |
| 84 | +- [ ] 检查 `useBinanceMarket.ts` 的定时器清理逻辑 |
| 85 | +- [ ] 修复 `useTradingActions.ts` 的防抖定时器清理 |
| 86 | +- [ ] 优化 `useCandleData.ts` 的定时器依赖 |
| 87 | +- [ ] 添加测试验证清理逻辑 |
| 88 | + |
| 89 | +**涉及文件**: |
| 90 | +- `src/hooks/useBinanceMarket.ts` (第 600-628, 667-677 行) |
| 91 | +- `src/hooks/useTradingActions.ts` (第 111-113, 270-276 行) |
| 92 | +- `src/hooks/useCandleData.ts` (第 181-192 行) |
| 93 | + |
| 94 | +**预计工作量**:0.5 天 |
| 95 | + |
| 96 | +--- |
| 97 | + |
| 98 | +### 5. 引入 TanStack Query(服务端状态管理) |
| 99 | +- [ ] 安装 `@tanstack/react-query` |
| 100 | +- [ ] 在 `main.tsx` 中配置 `QueryClientProvider` |
| 101 | +- [ ] 重构 `useBinanceMarket.ts`,使用 `useQuery` 管理历史 K 线 |
| 102 | +- [ ] 重构 `useMarketData.ts`,整合 TanStack Query |
| 103 | +- [ ] 保留 WebSocket 实时数据流(Worker 模式) |
| 104 | +- [ ] 测试数据流切换和错误处理 |
| 105 | + |
| 106 | +**涉及文件**: |
| 107 | +- `src/hooks/useBinanceMarket.ts` |
| 108 | +- `src/hooks/useMarketData.ts` |
| 109 | +- `src/services/binance/api.ts` |
| 110 | +- `src/main.tsx` |
| 111 | + |
| 112 | +**预计工作量**:2-3 天 |
| 113 | + |
| 114 | +--- |
| 115 | + |
| 116 | +## 🟡 P1 - 中优先级(建议修复) |
| 117 | + |
| 118 | +### 6. 引入 Zustand(全局 UI 状态) |
| 119 | +- [ ] 安装 `zustand` |
| 120 | +- [ ] 创建 `src/stores/toastStore.ts` |
| 121 | +- [ ] 创建 `src/stores/appStore.ts`(数据源切换) |
| 122 | +- [ ] 重构 `ToastContext.tsx` 使用 Zustand |
| 123 | +- [ ] 重构 `App.tsx` 的数据源状态管理 |
| 124 | +- [ ] 移除 `ToastContext.tsx`(如果不再需要) |
| 125 | + |
| 126 | +**涉及文件**: |
| 127 | +- `src/components/Toast/ToastContext.tsx` |
| 128 | +- `src/App.tsx` |
| 129 | +- `src/stores/` (新建) |
| 130 | + |
| 131 | +**预计工作量**:1 天 |
| 132 | + |
| 133 | +--- |
| 134 | + |
| 135 | +### 7. 引入 Zod(运行时数据校验) |
| 136 | +- [ ] 安装 `zod` |
| 137 | +- [ ] 创建 `src/schemas/binance.ts`(Binance API Schema) |
| 138 | +- [ ] 创建 `src/schemas/trading.ts`(交易数据 Schema) |
| 139 | +- [ ] 在 `services/binance/api.ts` 中添加校验 |
| 140 | +- [ ] 在 `services/binance/websocket.ts` 中添加校验 |
| 141 | +- [ ] 为 WASM 返回数据添加 Schema(如果可能) |
| 142 | + |
| 143 | +**涉及文件**: |
| 144 | +- `src/services/binance/api.ts` |
| 145 | +- `src/services/binance/websocket.ts` |
| 146 | +- `src/types/index.ts` |
| 147 | +- `src/schemas/` (新建) |
| 148 | + |
| 149 | +**预计工作量**:1-2 天 |
| 150 | + |
| 151 | +--- |
| 152 | + |
| 153 | +### 8. 审查性能优化使用(添加证据或移除) |
| 154 | +- [ ] 审查 `App.tsx` 的 `useCallback` 使用 |
| 155 | +- [ ] 审查 `OrderBook.tsx` 的 `useMemo` 使用 |
| 156 | +- [ ] 审查 `TradeForm.tsx` 的 `memo` 使用 |
| 157 | +- [ ] 为每个优化添加注释说明原因 |
| 158 | +- [ ] 使用 React DevTools Profiler 验证效果 |
| 159 | +- [ ] 移除没有明确证据的优化 |
| 160 | + |
| 161 | +**涉及文件**: |
| 162 | +- `src/App.tsx` |
| 163 | +- `src/components/Dashboard/OrderBook.tsx` |
| 164 | +- `src/components/Dashboard/Trade/TradeForm.tsx` |
| 165 | +- `src/components/Dashboard/Chart/LightweightChart/index.tsx` |
| 166 | +- `src/hooks/useWasmEngine.ts` |
| 167 | +- `src/hooks/useCandleData.ts` |
| 168 | + |
| 169 | +**预计工作量**:1 天 |
| 170 | + |
| 171 | +--- |
| 172 | + |
| 173 | +### 9. 重构自定义 Hook 边界 |
| 174 | +- [ ] 将 `useWasmEngine.ts` 的错误处理策略提取为配置 |
| 175 | +- [ ] 将 `useMarketData.ts` 的数据源切换策略提取为配置 |
| 176 | +- [ ] 确保 Hook 只负责执行,不负责业务决策 |
| 177 | +- [ ] 在组件层显式表达业务逻辑 |
| 178 | + |
| 179 | +**涉及文件**: |
| 180 | +- `src/hooks/useWasmEngine.ts` (第 297-395 行) |
| 181 | +- `src/hooks/useMarketData.ts` (第 96-120 行) |
| 182 | + |
| 183 | +**预计工作量**:1 天 |
| 184 | + |
| 185 | +--- |
| 186 | + |
| 187 | +### 10. 修复 Tailwind 魔术数字/任意尺寸 |
| 188 | +- [ ] 扫描所有 `[calc(...)]` 和 `[...px]` 使用 |
| 189 | +- [ ] 将常见 `[px]` 尺寸改为标准刻度或 CSS 变量 |
| 190 | +- [ ] 替换 `App.tsx` 中的 `pb-[101px]`、`h-[214px]`、`max-w-[120px]`、`xl:min-w-[200px]` 等 |
| 191 | +- [ ] 替换 Mobile/Trade 组件中的魔术数字 |
| 192 | +- [ ] 通过 CSS 变量表达业务约束尺寸(如 `--orderbook-h`),再用 `h-[var(--orderbook-h)]` |
| 193 | +- [ ] 测试响应式布局 |
| 194 | + |
| 195 | +**涉及文件**: |
| 196 | +- `src/App.tsx` |
| 197 | +- `src/components/Dashboard/Trade/MobileTradebar.tsx` |
| 198 | +- `src/components/Dashboard/Trade/TradeForm.tsx` |
| 199 | +- 其他组件文件 |
| 200 | + |
| 201 | +**预计工作量**:0.5 天 |
| 202 | + |
| 203 | +--- |
| 204 | + |
| 205 | +### 11. 修复内联样式中的颜色/阴影 |
| 206 | +- [ ] 扫描所有内联 `style` 中的颜色和阴影 |
| 207 | +- [ ] 将 `PositionCard.tsx` 中的 `style={{ color: '#848e9c' }}` 转为 CSS 变量或 Tailwind 类 |
| 208 | +- [ ] 将 `LeverageSlider.tsx` 中的 `textShadow` 和 `boxShadow` rgba 转为 `shadow`/`drop-shadow`/`ring` 类组合 |
| 209 | +- [ ] 测试视觉效果一致性 |
| 210 | + |
| 211 | +**涉及文件**: |
| 212 | +- `src/components/Dashboard/Trade/PositionCard.tsx` (第 195 行) |
| 213 | +- `src/components/Dashboard/Trade/LeverageSlider.tsx` (第 64/101 行) |
| 214 | +- 其他文件 |
| 215 | + |
| 216 | +**预计工作量**:0.5 天 |
| 217 | + |
| 218 | +--- |
| 219 | + |
| 220 | +### 12. 添加错误边界 |
| 221 | +- [ ] 创建 `src/components/Layout/ErrorBoundary.tsx` |
| 222 | +- [ ] 在 `App.tsx` 中包裹错误边界 |
| 223 | +- [ ] 添加错误日志记录 |
| 224 | +- [ ] 测试错误边界功能 |
| 225 | + |
| 226 | +**涉及文件**: |
| 227 | +- `src/components/Layout/ErrorBoundary.tsx` (新建) |
| 228 | +- `src/App.tsx` |
| 229 | + |
| 230 | +**预计工作量**:0.5 天 |
| 231 | + |
| 232 | +--- |
| 233 | + |
| 234 | +## 🟢 P2 - 低优先级(可选) |
| 235 | + |
| 236 | +### 13. 评估代码行数,按需拆分 |
| 237 | +- [ ] 统计所有文件行数 |
| 238 | +- [ ] 评估 `useWasmEngine.ts` (611行) 是否需要拆分 |
| 239 | +- [ ] 评估 `useBinanceMarket.ts` (693行) 是否需要拆分 |
| 240 | +- [ ] 评估 `TradeForm.tsx` (682行) 是否需要拆分 |
| 241 | +- [ ] 评估 `useUnifiedChartSetup.ts` (418行) 是否需要拆分 |
| 242 | +- [ ] 如果逻辑线性且无状态分叉,保持现状 |
| 243 | + |
| 244 | +**涉及文件**: |
| 245 | +- 所有超过 300 行的文件 |
| 246 | + |
| 247 | +**预计工作量**:1-2 天(如果需要拆分) |
| 248 | + |
| 249 | +--- |
| 250 | + |
| 251 | +### 14. 改进事件处理命名 |
| 252 | +- [ ] 扫描所有内联 `onClick={() => ...}` 使用 |
| 253 | +- [ ] 对频繁渲染或复杂回调抽出 `useCallback(handleXxx)` |
| 254 | +- [ ] 统一使用 `handleXxx` 前缀命名 |
| 255 | +- [ ] 其余保留内联可作为低风险项逐步收敛 |
| 256 | + |
| 257 | +**预计工作量**:1 天 |
| 258 | + |
| 259 | +--- |
| 260 | + |
| 261 | +### 15. 提取 Promise 工具函数 |
| 262 | +- [ ] 检查 `services/binance/api.ts` 中的 `new Promise(setTimeout)` 使用 |
| 263 | +- [ ] 提取 `sleep(ms)` 至 `src/utils/async.ts` |
| 264 | +- [ ] 统一调用,便于测试与平台化 |
| 265 | +- [ ] 替换所有相关使用 |
| 266 | + |
| 267 | +**涉及文件**: |
| 268 | +- `src/services/binance/api.ts` |
| 269 | +- `src/utils/async.ts` (新建) |
| 270 | + |
| 271 | +**预计工作量**:0.5 天 |
| 272 | + |
| 273 | +--- |
| 274 | + |
| 275 | +### 16. 架构重构(Feature-First) |
| 276 | +- [ ] 评估当前架构的可维护性 |
| 277 | +- [ ] 如果决定重构,规划新的目录结构 |
| 278 | +- [ ] 逐步迁移代码(不强制) |
| 279 | + |
| 280 | +**预计工作量**:3-5 天(如果决定重构) |
| 281 | + |
| 282 | +--- |
| 283 | + |
| 284 | +### 17. 类型安全改进 |
| 285 | +- [ ] 减少 `as unknown as` 类型断言的使用 |
| 286 | +- [ ] 改进 WASM 类型定义 |
| 287 | +- [ ] 添加更严格的类型检查 |
| 288 | + |
| 289 | +**涉及文件**: |
| 290 | +- `src/hooks/useWasmEngine.ts` |
| 291 | +- `src/types/wasm.ts` |
| 292 | + |
| 293 | +**预计工作量**:0.5 天 |
| 294 | + |
| 295 | +--- |
| 296 | + |
| 297 | +## 总结 |
| 298 | + |
| 299 | +### 总预计工作量 |
| 300 | +- **P0(必须)**:6-8 天 |
| 301 | + - 代码规范(颜色、类型、日志):3.5-4.5 天 |
| 302 | + - 资源管理:0.5 天 |
| 303 | + - TanStack Query:2-3 天 |
| 304 | +- **P1(建议)**:6-8 天 |
| 305 | + - Zustand:1 天 |
| 306 | + - Zod:1-2 天 |
| 307 | + - 性能优化审查:1 天 |
| 308 | + - Hook 边界:1 天 |
| 309 | + - 代码风格(Tailwind、内联样式):1 天 |
| 310 | + - 错误边界:0.5 天 |
| 311 | +- **P2(可选)**:5-8 天 |
| 312 | + |
| 313 | +### 建议执行顺序 |
| 314 | +1. **Week 1**:P0 代码规范任务(颜色、类型、日志)⭐ **优先** |
| 315 | +2. **Week 2**:P0 技术栈任务(TanStack Query + 资源管理) |
| 316 | +3. **Week 3**:P1 任务(Zustand + Zod + 性能优化审查) |
| 317 | +4. **Week 4**:P1 任务(Hook 边界 + 代码风格 + 错误边界) |
| 318 | +5. **Week 5+**:P2 任务(按需执行) |
| 319 | + |
| 320 | +### 注意事项 |
| 321 | +- 每个任务完成后进行测试 |
| 322 | +- 保持代码可运行状态 |
| 323 | +- 优先保证功能正确性,再优化架构 |
| 324 | +- 根据实际项目进度调整优先级 |
0 commit comments