ai-dev-analytics 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +52 -0
  2. package/README.zh-CN.md +52 -0
  3. package/dist/cli/commands/init.d.ts.map +1 -1
  4. package/dist/cli/commands/init.js +124 -4
  5. package/dist/cli/commands/init.js.map +1 -1
  6. package/dist/cli/commands/reindex.d.ts +4 -0
  7. package/dist/cli/commands/reindex.d.ts.map +1 -1
  8. package/dist/cli/commands/reindex.js +48 -3
  9. package/dist/cli/commands/reindex.js.map +1 -1
  10. package/dist/cli/commands/rules.d.ts.map +1 -1
  11. package/dist/cli/commands/rules.js +12 -10
  12. package/dist/cli/commands/rules.js.map +1 -1
  13. package/dist/cli/commands/start.d.ts.map +1 -1
  14. package/dist/cli/commands/start.js +1 -5
  15. package/dist/cli/commands/start.js.map +1 -1
  16. package/dist/cli/commands/status.d.ts.map +1 -1
  17. package/dist/cli/commands/status.js +1 -5
  18. package/dist/cli/commands/status.js.map +1 -1
  19. package/dist/cli/commands/update.d.ts.map +1 -1
  20. package/dist/cli/commands/update.js +14 -0
  21. package/dist/cli/commands/update.js.map +1 -1
  22. package/dist/mcp/server.d.ts.map +1 -1
  23. package/dist/mcp/server.js +86 -57
  24. package/dist/mcp/server.js.map +1 -1
  25. package/dist/utils/fs.d.ts +9 -0
  26. package/dist/utils/fs.d.ts.map +1 -1
  27. package/dist/utils/fs.js +39 -0
  28. package/dist/utils/fs.js.map +1 -1
  29. package/dist/utils/git.d.ts +10 -1
  30. package/dist/utils/git.d.ts.map +1 -1
  31. package/dist/utils/git.js +76 -8
  32. package/dist/utils/git.js.map +1 -1
  33. package/dist/utils/guide.d.ts +17 -1
  34. package/dist/utils/guide.d.ts.map +1 -1
  35. package/dist/utils/guide.js +95 -10
  36. package/dist/utils/guide.js.map +1 -1
  37. package/dist/utils/run-data.d.ts +1 -1
  38. package/dist/utils/run-data.d.ts.map +1 -1
  39. package/dist/utils/run-data.js +2 -7
  40. package/dist/utils/run-data.js.map +1 -1
  41. package/package.json +1 -1
  42. package/src/dashboard/assets/index-B8QcPcg7.css +1 -0
  43. package/src/dashboard/assets/{index-E4BP-QJG.js → index-DcAl6lhS.js} +1 -1
  44. package/src/dashboard/demo/run.en.json +1169 -0
  45. package/src/dashboard/demo/run.zh.json +1169 -0
  46. package/src/dashboard/index.html +2 -2
  47. package/src/dashboard/assets/index-CwXn3nJb.css +0 -1
@@ -0,0 +1,1169 @@
1
+ {
2
+ "meta": {
3
+ "schemaVersion": "2.0",
4
+ "runId": "feat/order-management",
5
+ "project": "saas-crm-platform",
6
+ "developer": "zhang-wei",
7
+ "branch": "feat/order-management",
8
+ "aiModel": "claude-sonnet-4-6",
9
+ "aiTool": "claude-code",
10
+ "startTime": "2026-03-20T09:00:00.000Z",
11
+ "endTime": "2026-03-20T10:18:20.000Z",
12
+ "status": "completed",
13
+ "prdPhases": [
14
+ "PRD1",
15
+ "PRD2",
16
+ "PRD3"
17
+ ]
18
+ },
19
+ "summary": {
20
+ "totalTasks": 22,
21
+ "completedTasks": 22,
22
+ "bugCount": 4,
23
+ "deviationCount": 6,
24
+ "reviewCount": 5,
25
+ "reviewPassCount": 4,
26
+ "reviewFailCount": 1,
27
+ "rulesSedimented": 6,
28
+ "prdPhaseCount": 3,
29
+ "filesChanged": 20,
30
+ "linesAdded": 2280,
31
+ "linesRemoved": 188
32
+ },
33
+ "metrics": {
34
+ "aiDeviationRate": 27.3,
35
+ "bugRate": 18.2,
36
+ "reviewPassRate": 80,
37
+ "rulesSedimentedCount": 6,
38
+ "averageLinesPerTask": 104,
39
+ "totalDevelopmentTimeSeconds": 4700,
40
+ "actualWorkSeconds": 5668,
41
+ "nodeTimeBreakdown": {
42
+ "Code Generation": 3958,
43
+ "Self Review": 680,
44
+ "Bug Fix": 450,
45
+ "Deviation Fix": 580,
46
+ "Requirement Analysis": 240,
47
+ "Requirement Ingestion": 180,
48
+ "Task Split": 120,
49
+ "Build Verification": 245
50
+ },
51
+ "efficiencyMultiplier": 10.2,
52
+ "estimatedManualHours": 16,
53
+ "tokenCost": 1.84
54
+ },
55
+ "context": {
56
+ "currentStage": "completed",
57
+ "currentTaskId": "TASK-22",
58
+ "currentPrdPhase": "PRD3",
59
+ "lastUpdated": "2026-03-20T10:18:20.000Z"
60
+ },
61
+ "tasks": [
62
+ {
63
+ "taskId": "TASK-01",
64
+ "title": "定义订单实体类型与接口",
65
+ "stageName": "阶段一:核心数据层",
66
+ "prdPhase": "PRD1",
67
+ "status": "done",
68
+ "acceptance": "",
69
+ "createdAt": "2026-03-20T09:12:00.000Z",
70
+ "startedAt": "2026-03-20T09:12:00.000Z",
71
+ "completedAt": "2026-03-20T09:12:40.000Z"
72
+ },
73
+ {
74
+ "taskId": "TASK-02",
75
+ "title": "创建订单 API Service 封装层",
76
+ "stageName": "阶段一:核心数据层",
77
+ "prdPhase": "PRD1",
78
+ "status": "done",
79
+ "acceptance": "",
80
+ "createdAt": "2026-03-20T09:12:55.000Z",
81
+ "startedAt": "2026-03-20T09:12:55.000Z",
82
+ "completedAt": "2026-03-20T09:15:20.000Z"
83
+ },
84
+ {
85
+ "taskId": "TASK-03",
86
+ "title": "实现 useOrders 数据 Hook",
87
+ "stageName": "阶段一:核心数据层",
88
+ "prdPhase": "PRD1",
89
+ "status": "done",
90
+ "acceptance": "",
91
+ "createdAt": "2026-03-20T09:15:35.000Z",
92
+ "startedAt": "2026-03-20T09:15:35.000Z",
93
+ "completedAt": "2026-03-20T09:18:45.000Z"
94
+ },
95
+ {
96
+ "taskId": "TASK-04",
97
+ "title": "构建订单列表 Table 组件",
98
+ "stageName": "阶段二:列表与状态",
99
+ "prdPhase": "PRD1",
100
+ "status": "done",
101
+ "acceptance": "",
102
+ "createdAt": "2026-03-20T09:19:00.000Z",
103
+ "startedAt": "2026-03-20T09:19:00.000Z",
104
+ "completedAt": "2026-03-20T09:23:25.000Z"
105
+ },
106
+ {
107
+ "taskId": "TASK-05",
108
+ "title": "添加订单状态 Badge 组件",
109
+ "stageName": "阶段二:列表与状态",
110
+ "prdPhase": "PRD1",
111
+ "status": "done",
112
+ "acceptance": "",
113
+ "createdAt": "2026-03-20T09:23:40.000Z",
114
+ "startedAt": "2026-03-20T09:23:40.000Z",
115
+ "completedAt": "2026-03-20T09:24:48.000Z"
116
+ },
117
+ {
118
+ "taskId": "TASK-06",
119
+ "title": "实现订单详情侧滑抽屉面板",
120
+ "stageName": "阶段三:详情与操作",
121
+ "prdPhase": "PRD1",
122
+ "status": "done",
123
+ "acceptance": "",
124
+ "createdAt": "2026-03-20T09:25:00.000Z",
125
+ "startedAt": "2026-03-20T09:25:00.000Z",
126
+ "completedAt": "2026-03-20T09:30:40.000Z"
127
+ },
128
+ {
129
+ "taskId": "TASK-07",
130
+ "title": "批量操作工具栏与权限控制",
131
+ "stageName": "阶段三:详情与操作",
132
+ "prdPhase": "PRD1",
133
+ "status": "done",
134
+ "acceptance": "",
135
+ "createdAt": "2026-03-20T09:30:55.000Z",
136
+ "startedAt": "2026-03-20T09:30:55.000Z",
137
+ "completedAt": "2026-03-20T09:32:55.000Z"
138
+ },
139
+ {
140
+ "taskId": "TASK-08",
141
+ "title": "PRD1 构建验证",
142
+ "stageName": "构建验证",
143
+ "prdPhase": "PRD1",
144
+ "status": "done",
145
+ "acceptance": "",
146
+ "createdAt": "2026-03-20T09:33:10.000Z",
147
+ "startedAt": "2026-03-20T09:33:10.000Z",
148
+ "completedAt": "2026-03-20T09:34:25.000Z"
149
+ },
150
+ {
151
+ "taskId": "TASK-09",
152
+ "title": "创建营收趋势 ECharts 折线图",
153
+ "stageName": "阶段四:图表组件",
154
+ "prdPhase": "PRD2",
155
+ "status": "done",
156
+ "acceptance": "",
157
+ "createdAt": "2026-03-20T09:40:00.000Z",
158
+ "startedAt": "2026-03-20T09:40:00.000Z",
159
+ "completedAt": "2026-03-20T09:44:20.000Z"
160
+ },
161
+ {
162
+ "taskId": "TASK-10",
163
+ "title": "构建订单状态分布饼图",
164
+ "stageName": "阶段四:图表组件",
165
+ "prdPhase": "PRD2",
166
+ "status": "done",
167
+ "acceptance": "",
168
+ "createdAt": "2026-03-20T09:44:35.000Z",
169
+ "startedAt": "2026-03-20T09:44:35.000Z",
170
+ "completedAt": "2026-03-20T09:47:15.000Z"
171
+ },
172
+ {
173
+ "taskId": "TASK-11",
174
+ "title": "实现日期区间筛选栏组件",
175
+ "stageName": "阶段五:筛选与搜索",
176
+ "prdPhase": "PRD2",
177
+ "status": "done",
178
+ "acceptance": "",
179
+ "createdAt": "2026-03-20T09:47:30.000Z",
180
+ "startedAt": "2026-03-20T09:47:30.000Z",
181
+ "completedAt": "2026-03-20T09:50:35.000Z"
182
+ },
183
+ {
184
+ "taskId": "TASK-12",
185
+ "title": "添加关键词搜索与多选筛选器",
186
+ "stageName": "阶段五:筛选与搜索",
187
+ "prdPhase": "PRD2",
188
+ "status": "done",
189
+ "acceptance": "",
190
+ "createdAt": "2026-03-20T09:50:50.000Z",
191
+ "startedAt": "2026-03-20T09:50:50.000Z",
192
+ "completedAt": "2026-03-20T09:54:35.000Z"
193
+ },
194
+ {
195
+ "taskId": "TASK-13",
196
+ "title": "创建 TOP10 热销商品排行表",
197
+ "stageName": "阶段六:统计报表",
198
+ "prdPhase": "PRD2",
199
+ "status": "done",
200
+ "acceptance": "",
201
+ "createdAt": "2026-03-20T09:54:50.000Z",
202
+ "startedAt": "2026-03-20T09:54:50.000Z",
203
+ "completedAt": "2026-03-20T09:57:15.000Z"
204
+ },
205
+ {
206
+ "taskId": "TASK-14",
207
+ "title": "实现订单数据 CSV 导出功能",
208
+ "stageName": "阶段六:统计报表",
209
+ "prdPhase": "PRD2",
210
+ "status": "done",
211
+ "acceptance": "",
212
+ "createdAt": "2026-03-20T09:57:30.000Z",
213
+ "startedAt": "2026-03-20T09:57:30.000Z",
214
+ "completedAt": "2026-03-20T09:59:40.000Z"
215
+ },
216
+ {
217
+ "taskId": "TASK-15",
218
+ "title": "添加汇总统计 KPI 卡片行",
219
+ "stageName": "阶段六:统计报表",
220
+ "prdPhase": "PRD2",
221
+ "status": "done",
222
+ "acceptance": "",
223
+ "createdAt": "2026-03-20T09:59:55.000Z",
224
+ "startedAt": "2026-03-20T09:59:55.000Z",
225
+ "completedAt": "2026-03-20T10:01:35.000Z"
226
+ },
227
+ {
228
+ "taskId": "TASK-16",
229
+ "title": "PRD2 构建验证",
230
+ "stageName": "构建验证",
231
+ "prdPhase": "PRD2",
232
+ "status": "done",
233
+ "acceptance": "",
234
+ "createdAt": "2026-03-20T10:01:50.000Z",
235
+ "startedAt": "2026-03-20T10:01:50.000Z",
236
+ "completedAt": "2026-03-20T10:03:40.000Z"
237
+ },
238
+ {
239
+ "taskId": "TASK-17",
240
+ "title": "修复订单合计小数精度计算 Bug",
241
+ "stageName": "缺陷修复",
242
+ "prdPhase": "PRD3",
243
+ "status": "done",
244
+ "acceptance": "",
245
+ "createdAt": "2026-03-20T10:08:20.000Z",
246
+ "startedAt": "2026-03-20T10:08:20.000Z",
247
+ "completedAt": "2026-03-20T10:09:48.000Z"
248
+ },
249
+ {
250
+ "taskId": "TASK-18",
251
+ "title": "修复日期选择器时区转换错误",
252
+ "stageName": "缺陷修复",
253
+ "prdPhase": "PRD3",
254
+ "status": "done",
255
+ "acceptance": "",
256
+ "createdAt": "2026-03-20T10:10:00.000Z",
257
+ "startedAt": "2026-03-20T10:10:00.000Z",
258
+ "completedAt": "2026-03-20T10:12:05.000Z"
259
+ },
260
+ {
261
+ "taskId": "TASK-19",
262
+ "title": "修复空状态组件被加载遮挡问题",
263
+ "stageName": "缺陷修复",
264
+ "prdPhase": "PRD3",
265
+ "status": "done",
266
+ "acceptance": "",
267
+ "createdAt": "2026-03-20T10:12:20.000Z",
268
+ "startedAt": "2026-03-20T10:12:20.000Z",
269
+ "completedAt": "2026-03-20T10:13:02.000Z"
270
+ },
271
+ {
272
+ "taskId": "TASK-20",
273
+ "title": "优化筛选状态路由切换后重置",
274
+ "stageName": "性能与体验",
275
+ "prdPhase": "PRD3",
276
+ "status": "done",
277
+ "acceptance": "",
278
+ "createdAt": "2026-03-20T10:13:20.000Z",
279
+ "startedAt": "2026-03-20T10:13:20.000Z",
280
+ "completedAt": "2026-03-20T10:14:38.000Z"
281
+ },
282
+ {
283
+ "taskId": "TASK-21",
284
+ "title": "添加骨架屏提升感知加载速度",
285
+ "stageName": "性能与体验",
286
+ "prdPhase": "PRD3",
287
+ "status": "done",
288
+ "acceptance": "",
289
+ "createdAt": "2026-03-20T10:14:50.000Z",
290
+ "startedAt": "2026-03-20T10:14:50.000Z",
291
+ "completedAt": "2026-03-20T10:16:45.000Z"
292
+ },
293
+ {
294
+ "taskId": "TASK-22",
295
+ "title": "最终全量构建与冒烟测试",
296
+ "stageName": "构建验证",
297
+ "prdPhase": "PRD3",
298
+ "status": "done",
299
+ "acceptance": "",
300
+ "createdAt": "2026-03-20T10:17:00.000Z",
301
+ "startedAt": "2026-03-20T10:17:00.000Z",
302
+ "completedAt": "2026-03-20T10:17:58.000Z"
303
+ }
304
+ ],
305
+ "deviations": [
306
+ {
307
+ "deviationId": "DEV-01",
308
+ "title": "筛选条件状态在路由切换后未持久化,刷新后丢失",
309
+ "rootCauseCategory": "rule-missing",
310
+ "deviationCategory": "logic",
311
+ "files": [
312
+ "src/hooks/useOrderFilters.ts",
313
+ "src/pages/OrderList.tsx"
314
+ ],
315
+ "detectedAt": "2026-03-20T09:34:10.000Z",
316
+ "aiOutput": "",
317
+ "expectedOutput": "",
318
+ "ruleSedimented": null,
319
+ "fixedAt": null
320
+ },
321
+ {
322
+ "deviationId": "DEV-02",
323
+ "title": "营收图表直接使用硬编码 hex 色值而非项目 Token",
324
+ "rootCauseCategory": "reference-copy",
325
+ "deviationCategory": "style",
326
+ "files": [
327
+ "src/components/charts/RevenueChart.tsx"
328
+ ],
329
+ "detectedAt": "2026-03-20T09:45:00.000Z",
330
+ "aiOutput": "",
331
+ "expectedOutput": "",
332
+ "ruleSedimented": null,
333
+ "fixedAt": null
334
+ },
335
+ {
336
+ "deviationId": "DEV-03",
337
+ "title": "日期区间筛选未处理时区转换,跨时区用户数据错位",
338
+ "rootCauseCategory": "context-insufficient",
339
+ "deviationCategory": "i18n",
340
+ "files": [
341
+ "src/utils/dateRange.ts",
342
+ "src/components/DateRangePicker.tsx"
343
+ ],
344
+ "detectedAt": "2026-03-20T09:50:00.000Z",
345
+ "aiOutput": "",
346
+ "expectedOutput": "",
347
+ "ruleSedimented": null,
348
+ "fixedAt": null
349
+ },
350
+ {
351
+ "deviationId": "DEV-04",
352
+ "title": "CSV 导出包含了不应暴露给用户的内部 ID 字段",
353
+ "rootCauseCategory": "misunderstanding",
354
+ "deviationCategory": "logic",
355
+ "files": [
356
+ "src/utils/exportOrders.ts"
357
+ ],
358
+ "detectedAt": "2026-03-20T09:58:20.000Z",
359
+ "aiOutput": "",
360
+ "expectedOutput": "",
361
+ "ruleSedimented": null,
362
+ "fixedAt": null
363
+ },
364
+ {
365
+ "deviationId": "DEV-05",
366
+ "title": "TOP10 商品表写死了 10 行,不支持配置化 pageSize",
367
+ "rootCauseCategory": "rule-missing",
368
+ "deviationCategory": "component-usage",
369
+ "files": [
370
+ "src/components/TopProductsTable.tsx"
371
+ ],
372
+ "detectedAt": "2026-03-20T09:55:50.000Z",
373
+ "aiOutput": "",
374
+ "expectedOutput": "",
375
+ "ruleSedimented": null,
376
+ "fixedAt": null
377
+ },
378
+ {
379
+ "deviationId": "DEV-06",
380
+ "title": "批量操作没有做权限降级提示,直接隐藏按钮体验差",
381
+ "rootCauseCategory": "misunderstanding",
382
+ "deviationCategory": "ui-spacing",
383
+ "files": [
384
+ "src/components/BulkActionBar.tsx"
385
+ ],
386
+ "detectedAt": "2026-03-20T09:31:40.000Z",
387
+ "aiOutput": "",
388
+ "expectedOutput": "",
389
+ "ruleSedimented": null,
390
+ "fixedAt": null
391
+ }
392
+ ],
393
+ "bugs": [
394
+ {
395
+ "bugId": "BUG-01",
396
+ "title": "订单含小数件数时合计金额出现浮点精度误差",
397
+ "severity": "high",
398
+ "source": "user-feedback",
399
+ "status": "fixed",
400
+ "files": [
401
+ "src/utils/orderCalc.ts"
402
+ ],
403
+ "fix": "使用 Decimal.js 替代原生浮点运算",
404
+ "reportedAt": "2026-03-20T10:08:00.000Z",
405
+ "fixedAt": "2026-03-20T10:09:48.000Z"
406
+ },
407
+ {
408
+ "bugId": "BUG-02",
409
+ "title": "日期选择器在夏令时边界时重置为当天",
410
+ "severity": "high",
411
+ "source": "testing",
412
+ "status": "fixed",
413
+ "files": [
414
+ "src/components/DateRangePicker.tsx"
415
+ ],
416
+ "fix": "使用 dayjs UTC 模式处理夏令时边界",
417
+ "reportedAt": "2026-03-20T10:09:48.000Z",
418
+ "fixedAt": "2026-03-20T10:12:13.000Z"
419
+ },
420
+ {
421
+ "bugId": "BUG-03",
422
+ "title": "订单列表无数据时空状态被加载动画遮挡",
423
+ "severity": "medium",
424
+ "source": "self-review",
425
+ "status": "fixed",
426
+ "files": [
427
+ "src/components/OrderList.tsx"
428
+ ],
429
+ "fix": "将空状态渲染提到加载状态判断之前",
430
+ "reportedAt": "2026-03-20T10:12:13.000Z",
431
+ "fixedAt": "2026-03-20T10:12:55.000Z"
432
+ },
433
+ {
434
+ "bugId": "BUG-04",
435
+ "title": "搜索框在中文输入法合成期间触发多余 API 请求",
436
+ "severity": "medium",
437
+ "source": "user-feedback",
438
+ "status": "fixed",
439
+ "files": [
440
+ "src/components/SearchBar.tsx"
441
+ ],
442
+ "fix": "监听 compositionend 事件延迟触发搜索",
443
+ "reportedAt": "2026-03-20T09:53:20.000Z",
444
+ "fixedAt": "2026-03-20T09:54:40.000Z"
445
+ }
446
+ ],
447
+ "reviews": [
448
+ {
449
+ "reviewId": "REV-01",
450
+ "taskId": "TASK-06",
451
+ "result": "pass",
452
+ "issueCount": 0,
453
+ "scope": "订单详情侧滑面板组件",
454
+ "reviewedAt": "2026-03-20T09:31:20.000Z",
455
+ "issues": []
456
+ },
457
+ {
458
+ "reviewId": "REV-02",
459
+ "taskId": "TASK-09",
460
+ "result": "fail",
461
+ "issueCount": 2,
462
+ "scope": "营收趋势图表组件",
463
+ "reviewedAt": "2026-03-20T09:45:00.000Z",
464
+ "issues": [
465
+ "图表坐标轴文字对比度不足",
466
+ "无数据时缺少空状态处理"
467
+ ]
468
+ },
469
+ {
470
+ "reviewId": "REV-03",
471
+ "taskId": "TASK-09",
472
+ "result": "pass",
473
+ "issueCount": 0,
474
+ "scope": "营收趋势图表组件(修复后复查)",
475
+ "reviewedAt": "2026-03-20T09:46:40.000Z",
476
+ "issues": []
477
+ },
478
+ {
479
+ "reviewId": "REV-04",
480
+ "taskId": "TASK-16",
481
+ "result": "pass",
482
+ "issueCount": 0,
483
+ "scope": "PRD2 全量自检",
484
+ "reviewedAt": "2026-03-20T10:04:00.000Z",
485
+ "issues": []
486
+ },
487
+ {
488
+ "reviewId": "REV-05",
489
+ "taskId": "TASK-22",
490
+ "result": "pass",
491
+ "issueCount": 0,
492
+ "scope": "PRD3 最终全量自检",
493
+ "reviewedAt": "2026-03-20T10:18:10.000Z",
494
+ "issues": []
495
+ }
496
+ ],
497
+ "rules": [
498
+ {
499
+ "ruleId": "RULE-01",
500
+ "category": "process",
501
+ "sourceDeviation": "DEV-01",
502
+ "content": "筛选条件、分页、排序等 URL 状态必须通过 URL SearchParams 持久化,禁止仅存于组件 state。",
503
+ "file": "rules.json#RULE-001",
504
+ "sedimentedAt": "2026-03-20T09:35:50.000Z"
505
+ },
506
+ {
507
+ "ruleId": "RULE-02",
508
+ "category": "style",
509
+ "sourceDeviation": "DEV-02",
510
+ "content": "组件中禁止硬编码 hex/rgb 色值,必须使用项目设计 Token(CSS 变量或 tailwind 语义色)。",
511
+ "file": "rules.json#RULE-002",
512
+ "sedimentedAt": "2026-03-20T09:45:50.000Z"
513
+ },
514
+ {
515
+ "ruleId": "RULE-03",
516
+ "category": "i18n",
517
+ "sourceDeviation": "DEV-03",
518
+ "content": "所有日期比较和存储必须统一使用 UTC,展示层再按用户时区转换,禁止使用 new Date() 直接比较。",
519
+ "file": "rules.json#RULE-003",
520
+ "sedimentedAt": "2026-03-20T09:51:40.000Z"
521
+ },
522
+ {
523
+ "ruleId": "RULE-04",
524
+ "category": "general",
525
+ "sourceDeviation": "DEV-04",
526
+ "content": "导出工具函数必须维护字段白名单,只导出明确允许的字段,不得通过展开对象自动包含所有字段。",
527
+ "file": "rules.json#RULE-004",
528
+ "sedimentedAt": "2026-03-20T10:00:00.000Z"
529
+ },
530
+ {
531
+ "ruleId": "RULE-05",
532
+ "category": "component",
533
+ "sourceDeviation": "DEV-05",
534
+ "content": "列表类组件必须接受 pageSize prop,默认值使用项目全局常量 DEFAULT_PAGE_SIZE(当前值 20)。",
535
+ "file": "rules.json#RULE-005",
536
+ "sedimentedAt": "2026-03-20T09:57:00.000Z"
537
+ },
538
+ {
539
+ "ruleId": "RULE-06",
540
+ "category": "general",
541
+ "sourceDeviation": null,
542
+ "content": "每次任务完成后必须调用 aida_log_files 记录文件变更,再调用 aida_log_review 完成自检。",
543
+ "file": "rules.json#RULE-006",
544
+ "sedimentedAt": "2026-03-20T09:20:00.000Z"
545
+ }
546
+ ],
547
+ "files": [
548
+ {
549
+ "path": "src/types/order.ts",
550
+ "changeType": "created",
551
+ "linesAdded": 68,
552
+ "linesRemoved": 0,
553
+ "changeCount": 2,
554
+ "lastModified": "2026-03-20T10:18:00.000Z"
555
+ },
556
+ {
557
+ "path": "src/services/orderApi.ts",
558
+ "changeType": "created",
559
+ "linesAdded": 142,
560
+ "linesRemoved": 0,
561
+ "changeCount": 3,
562
+ "lastModified": "2026-03-20T10:18:00.000Z"
563
+ },
564
+ {
565
+ "path": "src/hooks/useOrders.ts",
566
+ "changeType": "created",
567
+ "linesAdded": 95,
568
+ "linesRemoved": 0,
569
+ "changeCount": 4,
570
+ "lastModified": "2026-03-20T10:18:00.000Z"
571
+ },
572
+ {
573
+ "path": "src/hooks/useOrderFilters.ts",
574
+ "changeType": "created",
575
+ "linesAdded": 78,
576
+ "linesRemoved": 12,
577
+ "changeCount": 5,
578
+ "lastModified": "2026-03-20T10:18:00.000Z"
579
+ },
580
+ {
581
+ "path": "src/pages/OrderList.tsx",
582
+ "changeType": "created",
583
+ "linesAdded": 245,
584
+ "linesRemoved": 18,
585
+ "changeCount": 8,
586
+ "lastModified": "2026-03-20T10:18:00.000Z"
587
+ },
588
+ {
589
+ "path": "src/components/OrderTable.tsx",
590
+ "changeType": "created",
591
+ "linesAdded": 188,
592
+ "linesRemoved": 0,
593
+ "changeCount": 4,
594
+ "lastModified": "2026-03-20T10:18:00.000Z"
595
+ },
596
+ {
597
+ "path": "src/components/OrderStatusBadge.tsx",
598
+ "changeType": "created",
599
+ "linesAdded": 42,
600
+ "linesRemoved": 0,
601
+ "changeCount": 2,
602
+ "lastModified": "2026-03-20T10:18:00.000Z"
603
+ },
604
+ {
605
+ "path": "src/components/OrderDetailPanel.tsx",
606
+ "changeType": "created",
607
+ "linesAdded": 312,
608
+ "linesRemoved": 25,
609
+ "changeCount": 6,
610
+ "lastModified": "2026-03-20T10:18:00.000Z"
611
+ },
612
+ {
613
+ "path": "src/components/BulkActionBar.tsx",
614
+ "changeType": "created",
615
+ "linesAdded": 96,
616
+ "linesRemoved": 8,
617
+ "changeCount": 3,
618
+ "lastModified": "2026-03-20T10:18:00.000Z"
619
+ },
620
+ {
621
+ "path": "src/components/charts/RevenueChart.tsx",
622
+ "changeType": "created",
623
+ "linesAdded": 178,
624
+ "linesRemoved": 32,
625
+ "changeCount": 5,
626
+ "lastModified": "2026-03-20T10:18:00.000Z"
627
+ },
628
+ {
629
+ "path": "src/components/charts/StatusPieChart.tsx",
630
+ "changeType": "created",
631
+ "linesAdded": 124,
632
+ "linesRemoved": 0,
633
+ "changeCount": 3,
634
+ "lastModified": "2026-03-20T10:18:00.000Z"
635
+ },
636
+ {
637
+ "path": "src/components/DateRangePicker.tsx",
638
+ "changeType": "created",
639
+ "linesAdded": 145,
640
+ "linesRemoved": 28,
641
+ "changeCount": 6,
642
+ "lastModified": "2026-03-20T10:18:00.000Z"
643
+ },
644
+ {
645
+ "path": "src/components/SearchBar.tsx",
646
+ "changeType": "created",
647
+ "linesAdded": 88,
648
+ "linesRemoved": 15,
649
+ "changeCount": 4,
650
+ "lastModified": "2026-03-20T10:18:00.000Z"
651
+ },
652
+ {
653
+ "path": "src/components/TopProductsTable.tsx",
654
+ "changeType": "created",
655
+ "linesAdded": 112,
656
+ "linesRemoved": 10,
657
+ "changeCount": 4,
658
+ "lastModified": "2026-03-20T10:18:00.000Z"
659
+ },
660
+ {
661
+ "path": "src/components/OrderList.tsx",
662
+ "changeType": "created",
663
+ "linesAdded": 65,
664
+ "linesRemoved": 8,
665
+ "changeCount": 3,
666
+ "lastModified": "2026-03-20T10:18:00.000Z"
667
+ },
668
+ {
669
+ "path": "src/utils/exportOrders.ts",
670
+ "changeType": "created",
671
+ "linesAdded": 82,
672
+ "linesRemoved": 5,
673
+ "changeCount": 3,
674
+ "lastModified": "2026-03-20T10:18:00.000Z"
675
+ },
676
+ {
677
+ "path": "src/utils/orderCalc.ts",
678
+ "changeType": "created",
679
+ "linesAdded": 55,
680
+ "linesRemoved": 12,
681
+ "changeCount": 3,
682
+ "lastModified": "2026-03-20T10:18:00.000Z"
683
+ },
684
+ {
685
+ "path": "src/utils/dateRange.ts",
686
+ "changeType": "created",
687
+ "linesAdded": 48,
688
+ "linesRemoved": 10,
689
+ "changeCount": 4,
690
+ "lastModified": "2026-03-20T10:18:00.000Z"
691
+ },
692
+ {
693
+ "path": "src/i18n/orders.ts",
694
+ "changeType": "created",
695
+ "linesAdded": 95,
696
+ "linesRemoved": 0,
697
+ "changeCount": 2,
698
+ "lastModified": "2026-03-20T10:18:00.000Z"
699
+ },
700
+ {
701
+ "path": "src/router/index.ts",
702
+ "changeType": "modified",
703
+ "linesAdded": 22,
704
+ "linesRemoved": 5,
705
+ "changeCount": 2,
706
+ "lastModified": "2026-03-20T10:18:00.000Z"
707
+ }
708
+ ],
709
+ "timeline": [
710
+ {
711
+ "type": "workflow-start",
712
+ "title": "开始工作流",
713
+ "timestamp": "2026-03-20T09:00:00.000Z",
714
+ "prdPhase": "PRD1"
715
+ },
716
+ {
717
+ "type": "requirement-analysis",
718
+ "title": "需求分析进行中",
719
+ "timestamp": "2026-03-20T09:05:00.000Z",
720
+ "prdPhase": "PRD1"
721
+ },
722
+ {
723
+ "type": "task",
724
+ "title": "TASK-01: 定义订单实体类型与接口",
725
+ "timestamp": "2026-03-20T09:12:00.000Z",
726
+ "prdPhase": "PRD1"
727
+ },
728
+ {
729
+ "type": "task-done",
730
+ "title": "TASK-01: 定义订单实体类型与接口",
731
+ "timestamp": "2026-03-20T09:12:40.000Z",
732
+ "prdPhase": "PRD1"
733
+ },
734
+ {
735
+ "type": "task",
736
+ "title": "TASK-02: 创建订单 API Service 封装层",
737
+ "timestamp": "2026-03-20T09:12:55.000Z",
738
+ "prdPhase": "PRD1"
739
+ },
740
+ {
741
+ "type": "task-done",
742
+ "title": "TASK-02: 创建订单 API Service 封装层",
743
+ "timestamp": "2026-03-20T09:15:20.000Z",
744
+ "prdPhase": "PRD1"
745
+ },
746
+ {
747
+ "type": "task",
748
+ "title": "TASK-03: 实现 useOrders 数据 Hook",
749
+ "timestamp": "2026-03-20T09:15:35.000Z",
750
+ "prdPhase": "PRD1"
751
+ },
752
+ {
753
+ "type": "task-done",
754
+ "title": "TASK-03: 实现 useOrders 数据 Hook",
755
+ "timestamp": "2026-03-20T09:18:45.000Z",
756
+ "prdPhase": "PRD1"
757
+ },
758
+ {
759
+ "type": "task",
760
+ "title": "TASK-04: 构建订单列表 Table 组件",
761
+ "timestamp": "2026-03-20T09:19:00.000Z",
762
+ "prdPhase": "PRD1"
763
+ },
764
+ {
765
+ "type": "rule",
766
+ "title": "RULE-06: 每次任务完成后必须调用 aida_log_files 记录文件变更,再调用 ai",
767
+ "timestamp": "2026-03-20T09:20:00.000Z"
768
+ },
769
+ {
770
+ "type": "task-done",
771
+ "title": "TASK-04: 构建订单列表 Table 组件",
772
+ "timestamp": "2026-03-20T09:23:25.000Z",
773
+ "prdPhase": "PRD1"
774
+ },
775
+ {
776
+ "type": "task",
777
+ "title": "TASK-05: 添加订单状态 Badge 组件",
778
+ "timestamp": "2026-03-20T09:23:40.000Z",
779
+ "prdPhase": "PRD1"
780
+ },
781
+ {
782
+ "type": "task-done",
783
+ "title": "TASK-05: 添加订单状态 Badge 组件",
784
+ "timestamp": "2026-03-20T09:24:48.000Z",
785
+ "prdPhase": "PRD1"
786
+ },
787
+ {
788
+ "type": "task",
789
+ "title": "TASK-06: 实现订单详情侧滑抽屉面板",
790
+ "timestamp": "2026-03-20T09:25:00.000Z",
791
+ "prdPhase": "PRD1"
792
+ },
793
+ {
794
+ "type": "task-done",
795
+ "title": "TASK-06: 实现订单详情侧滑抽屉面板",
796
+ "timestamp": "2026-03-20T09:30:40.000Z",
797
+ "prdPhase": "PRD1"
798
+ },
799
+ {
800
+ "type": "task",
801
+ "title": "TASK-07: 批量操作工具栏与权限控制",
802
+ "timestamp": "2026-03-20T09:30:55.000Z",
803
+ "prdPhase": "PRD1"
804
+ },
805
+ {
806
+ "type": "review",
807
+ "title": "REV-01: pass",
808
+ "timestamp": "2026-03-20T09:31:20.000Z",
809
+ "prdPhase": "PRD1"
810
+ },
811
+ {
812
+ "type": "deviation",
813
+ "title": "DEV-06: 批量操作没有做权限降级提示,直接隐藏按钮体验差",
814
+ "timestamp": "2026-03-20T09:31:40.000Z"
815
+ },
816
+ {
817
+ "type": "task-done",
818
+ "title": "TASK-07: 批量操作工具栏与权限控制",
819
+ "timestamp": "2026-03-20T09:32:55.000Z",
820
+ "prdPhase": "PRD1"
821
+ },
822
+ {
823
+ "type": "task",
824
+ "title": "TASK-08: PRD1 构建验证",
825
+ "timestamp": "2026-03-20T09:33:10.000Z",
826
+ "prdPhase": "PRD1"
827
+ },
828
+ {
829
+ "type": "deviation",
830
+ "title": "DEV-01: 筛选条件状态在路由切换后未持久化,刷新后丢失",
831
+ "timestamp": "2026-03-20T09:34:10.000Z"
832
+ },
833
+ {
834
+ "type": "task-done",
835
+ "title": "TASK-08: PRD1 构建验证",
836
+ "timestamp": "2026-03-20T09:34:25.000Z",
837
+ "prdPhase": "PRD1"
838
+ },
839
+ {
840
+ "type": "rule",
841
+ "title": "RULE-01: 筛选条件、分页、排序等 URL 状态必须通过 URL SearchParams ",
842
+ "timestamp": "2026-03-20T09:35:50.000Z"
843
+ },
844
+ {
845
+ "type": "task",
846
+ "title": "TASK-09: 创建营收趋势 ECharts 折线图",
847
+ "timestamp": "2026-03-20T09:40:00.000Z",
848
+ "prdPhase": "PRD2"
849
+ },
850
+ {
851
+ "type": "task-done",
852
+ "title": "TASK-09: 创建营收趋势 ECharts 折线图",
853
+ "timestamp": "2026-03-20T09:44:20.000Z",
854
+ "prdPhase": "PRD2"
855
+ },
856
+ {
857
+ "type": "task",
858
+ "title": "TASK-10: 构建订单状态分布饼图",
859
+ "timestamp": "2026-03-20T09:44:35.000Z",
860
+ "prdPhase": "PRD2"
861
+ },
862
+ {
863
+ "type": "review",
864
+ "title": "REV-02: fail",
865
+ "timestamp": "2026-03-20T09:45:00.000Z",
866
+ "prdPhase": "PRD2"
867
+ },
868
+ {
869
+ "type": "deviation",
870
+ "title": "DEV-02: 营收图表直接使用硬编码 hex 色值而非项目 Token",
871
+ "timestamp": "2026-03-20T09:45:00.000Z"
872
+ },
873
+ {
874
+ "type": "rule",
875
+ "title": "RULE-02: 组件中禁止硬编码 hex/rgb 色值,必须使用项目设计 Token(CSS 变",
876
+ "timestamp": "2026-03-20T09:45:50.000Z"
877
+ },
878
+ {
879
+ "type": "review",
880
+ "title": "REV-03: pass",
881
+ "timestamp": "2026-03-20T09:46:40.000Z",
882
+ "prdPhase": "PRD2"
883
+ },
884
+ {
885
+ "type": "task-done",
886
+ "title": "TASK-10: 构建订单状态分布饼图",
887
+ "timestamp": "2026-03-20T09:47:15.000Z",
888
+ "prdPhase": "PRD2"
889
+ },
890
+ {
891
+ "type": "task",
892
+ "title": "TASK-11: 实现日期区间筛选栏组件",
893
+ "timestamp": "2026-03-20T09:47:30.000Z",
894
+ "prdPhase": "PRD2"
895
+ },
896
+ {
897
+ "type": "deviation",
898
+ "title": "DEV-03: 日期区间筛选未处理时区转换,跨时区用户数据错位",
899
+ "timestamp": "2026-03-20T09:50:00.000Z"
900
+ },
901
+ {
902
+ "type": "task-done",
903
+ "title": "TASK-11: 实现日期区间筛选栏组件",
904
+ "timestamp": "2026-03-20T09:50:35.000Z",
905
+ "prdPhase": "PRD2"
906
+ },
907
+ {
908
+ "type": "task",
909
+ "title": "TASK-12: 添加关键词搜索与多选筛选器",
910
+ "timestamp": "2026-03-20T09:50:50.000Z",
911
+ "prdPhase": "PRD2"
912
+ },
913
+ {
914
+ "type": "rule",
915
+ "title": "RULE-03: 所有日期比较和存储必须统一使用 UTC,展示层再按用户时区转换,禁止使用 new",
916
+ "timestamp": "2026-03-20T09:51:40.000Z"
917
+ },
918
+ {
919
+ "type": "bug",
920
+ "title": "BUG-04: 搜索框在中文输入法合成期间触发多余 API 请求",
921
+ "timestamp": "2026-03-20T09:53:20.000Z"
922
+ },
923
+ {
924
+ "type": "task-done",
925
+ "title": "TASK-12: 添加关键词搜索与多选筛选器",
926
+ "timestamp": "2026-03-20T09:54:35.000Z",
927
+ "prdPhase": "PRD2"
928
+ },
929
+ {
930
+ "type": "task",
931
+ "title": "TASK-13: 创建 TOP10 热销商品排行表",
932
+ "timestamp": "2026-03-20T09:54:50.000Z",
933
+ "prdPhase": "PRD2"
934
+ },
935
+ {
936
+ "type": "deviation",
937
+ "title": "DEV-05: TOP10 商品表写死了 10 行,不支持配置化 pageSize",
938
+ "timestamp": "2026-03-20T09:55:50.000Z"
939
+ },
940
+ {
941
+ "type": "rule",
942
+ "title": "RULE-05: 列表类组件必须接受 pageSize prop,默认值使用项目全局常量 DEFA",
943
+ "timestamp": "2026-03-20T09:57:00.000Z"
944
+ },
945
+ {
946
+ "type": "task-done",
947
+ "title": "TASK-13: 创建 TOP10 热销商品排行表",
948
+ "timestamp": "2026-03-20T09:57:15.000Z",
949
+ "prdPhase": "PRD2"
950
+ },
951
+ {
952
+ "type": "task",
953
+ "title": "TASK-14: 实现订单数据 CSV 导出功能",
954
+ "timestamp": "2026-03-20T09:57:30.000Z",
955
+ "prdPhase": "PRD2"
956
+ },
957
+ {
958
+ "type": "deviation",
959
+ "title": "DEV-04: CSV 导出包含了不应暴露给用户的内部 ID 字段",
960
+ "timestamp": "2026-03-20T09:58:20.000Z"
961
+ },
962
+ {
963
+ "type": "task-done",
964
+ "title": "TASK-14: 实现订单数据 CSV 导出功能",
965
+ "timestamp": "2026-03-20T09:59:40.000Z",
966
+ "prdPhase": "PRD2"
967
+ },
968
+ {
969
+ "type": "task",
970
+ "title": "TASK-15: 添加汇总统计 KPI 卡片行",
971
+ "timestamp": "2026-03-20T09:59:55.000Z",
972
+ "prdPhase": "PRD2"
973
+ },
974
+ {
975
+ "type": "rule",
976
+ "title": "RULE-04: 导出工具函数必须维护字段白名单,只导出明确允许的字段,不得通过展开对象自动包含所",
977
+ "timestamp": "2026-03-20T10:00:00.000Z"
978
+ },
979
+ {
980
+ "type": "task-done",
981
+ "title": "TASK-15: 添加汇总统计 KPI 卡片行",
982
+ "timestamp": "2026-03-20T10:01:35.000Z",
983
+ "prdPhase": "PRD2"
984
+ },
985
+ {
986
+ "type": "task",
987
+ "title": "TASK-16: PRD2 构建验证",
988
+ "timestamp": "2026-03-20T10:01:50.000Z",
989
+ "prdPhase": "PRD2"
990
+ },
991
+ {
992
+ "type": "task-done",
993
+ "title": "TASK-16: PRD2 构建验证",
994
+ "timestamp": "2026-03-20T10:03:40.000Z",
995
+ "prdPhase": "PRD2"
996
+ },
997
+ {
998
+ "type": "review",
999
+ "title": "REV-04: pass",
1000
+ "timestamp": "2026-03-20T10:04:00.000Z",
1001
+ "prdPhase": "PRD2"
1002
+ },
1003
+ {
1004
+ "type": "bug",
1005
+ "title": "BUG-01: 订单含小数件数时合计金额出现浮点精度误差",
1006
+ "timestamp": "2026-03-20T10:08:00.000Z"
1007
+ },
1008
+ {
1009
+ "type": "task",
1010
+ "title": "TASK-17: 修复订单合计小数精度计算 Bug",
1011
+ "timestamp": "2026-03-20T10:08:20.000Z",
1012
+ "prdPhase": "PRD3"
1013
+ },
1014
+ {
1015
+ "type": "task-done",
1016
+ "title": "TASK-17: 修复订单合计小数精度计算 Bug",
1017
+ "timestamp": "2026-03-20T10:09:48.000Z",
1018
+ "prdPhase": "PRD3"
1019
+ },
1020
+ {
1021
+ "type": "bug",
1022
+ "title": "BUG-02: 日期选择器在夏令时边界时重置为当天",
1023
+ "timestamp": "2026-03-20T10:09:48.000Z"
1024
+ },
1025
+ {
1026
+ "type": "task",
1027
+ "title": "TASK-18: 修复日期选择器时区转换错误",
1028
+ "timestamp": "2026-03-20T10:10:00.000Z",
1029
+ "prdPhase": "PRD3"
1030
+ },
1031
+ {
1032
+ "type": "task-done",
1033
+ "title": "TASK-18: 修复日期选择器时区转换错误",
1034
+ "timestamp": "2026-03-20T10:12:05.000Z",
1035
+ "prdPhase": "PRD3"
1036
+ },
1037
+ {
1038
+ "type": "bug",
1039
+ "title": "BUG-03: 订单列表无数据时空状态被加载动画遮挡",
1040
+ "timestamp": "2026-03-20T10:12:13.000Z"
1041
+ },
1042
+ {
1043
+ "type": "task",
1044
+ "title": "TASK-19: 修复空状态组件被加载遮挡问题",
1045
+ "timestamp": "2026-03-20T10:12:20.000Z",
1046
+ "prdPhase": "PRD3"
1047
+ },
1048
+ {
1049
+ "type": "task-done",
1050
+ "title": "TASK-19: 修复空状态组件被加载遮挡问题",
1051
+ "timestamp": "2026-03-20T10:13:02.000Z",
1052
+ "prdPhase": "PRD3"
1053
+ },
1054
+ {
1055
+ "type": "task",
1056
+ "title": "TASK-20: 优化筛选状态路由切换后重置",
1057
+ "timestamp": "2026-03-20T10:13:20.000Z",
1058
+ "prdPhase": "PRD3"
1059
+ },
1060
+ {
1061
+ "type": "task-done",
1062
+ "title": "TASK-20: 优化筛选状态路由切换后重置",
1063
+ "timestamp": "2026-03-20T10:14:38.000Z",
1064
+ "prdPhase": "PRD3"
1065
+ },
1066
+ {
1067
+ "type": "task",
1068
+ "title": "TASK-21: 添加骨架屏提升感知加载速度",
1069
+ "timestamp": "2026-03-20T10:14:50.000Z",
1070
+ "prdPhase": "PRD3"
1071
+ },
1072
+ {
1073
+ "type": "task-done",
1074
+ "title": "TASK-21: 添加骨架屏提升感知加载速度",
1075
+ "timestamp": "2026-03-20T10:16:45.000Z",
1076
+ "prdPhase": "PRD3"
1077
+ },
1078
+ {
1079
+ "type": "task",
1080
+ "title": "TASK-22: 最终全量构建与冒烟测试",
1081
+ "timestamp": "2026-03-20T10:17:00.000Z",
1082
+ "prdPhase": "PRD3"
1083
+ },
1084
+ {
1085
+ "type": "task-done",
1086
+ "title": "TASK-22: 最终全量构建与冒烟测试",
1087
+ "timestamp": "2026-03-20T10:17:58.000Z",
1088
+ "prdPhase": "PRD3"
1089
+ },
1090
+ {
1091
+ "type": "review",
1092
+ "title": "REV-05: pass",
1093
+ "timestamp": "2026-03-20T10:18:10.000Z",
1094
+ "prdPhase": "PRD3"
1095
+ },
1096
+ {
1097
+ "type": "workflow-completed",
1098
+ "title": "工作流完成",
1099
+ "timestamp": "2026-03-20T10:18:20.000Z",
1100
+ "prdPhase": "PRD3"
1101
+ }
1102
+ ],
1103
+ "workflow": [
1104
+ {
1105
+ "stage": "需求接入",
1106
+ "prdPhase": "PRD1",
1107
+ "status": "completed",
1108
+ "startTime": "2026-03-20T09:00:00.000Z",
1109
+ "endTime": "2026-03-20T09:05:00.000Z"
1110
+ },
1111
+ {
1112
+ "stage": "需求分析",
1113
+ "prdPhase": "PRD1",
1114
+ "status": "completed",
1115
+ "startTime": "2026-03-20T09:05:00.000Z",
1116
+ "endTime": "2026-03-20T09:11:00.000Z"
1117
+ },
1118
+ {
1119
+ "stage": "代码生成",
1120
+ "prdPhase": "PRD1",
1121
+ "status": "completed",
1122
+ "startTime": "2026-03-20T09:12:00.000Z",
1123
+ "endTime": "2026-03-20T09:35:00.000Z"
1124
+ },
1125
+ {
1126
+ "stage": "代码生成",
1127
+ "prdPhase": "PRD2",
1128
+ "status": "completed",
1129
+ "startTime": "2026-03-20T09:40:00.000Z",
1130
+ "endTime": "2026-03-20T10:04:20.000Z"
1131
+ },
1132
+ {
1133
+ "stage": "缺陷修复",
1134
+ "prdPhase": "PRD3",
1135
+ "status": "completed",
1136
+ "startTime": "2026-03-20T10:08:20.000Z",
1137
+ "endTime": "2026-03-20T10:18:00.000Z"
1138
+ }
1139
+ ],
1140
+ "events": [],
1141
+ "cost": {
1142
+ "totalTokens": 8420000,
1143
+ "estimatedManualHours": 16,
1144
+ "actualHours": 1.6,
1145
+ "tokenDetail": {
1146
+ "inputTokens": 580000,
1147
+ "outputTokens": 1240000,
1148
+ "cacheCreationTokens": 2200000,
1149
+ "cacheReadTokens": 4400000
1150
+ }
1151
+ },
1152
+ "highlights": [
1153
+ {
1154
+ "content": "AI 完成 22 个任务仅需 1.6h,同等工作量人工预估 3 人天,效率提升约 12x",
1155
+ "source": "auto",
1156
+ "createdAt": "2026-03-20T10:18:30.000Z"
1157
+ },
1158
+ {
1159
+ "content": "6 条偏差沉淀为项目规则,覆盖筛选状态、色值规范、日期时区等高频问题,后续需求零重复",
1160
+ "source": "manual",
1161
+ "createdAt": "2026-03-20T10:18:40.000Z"
1162
+ },
1163
+ {
1164
+ "content": "自检首次通过率 80%,营收图表发现对比度与空状态问题后快速修复,质量闭环时间 < 3min",
1165
+ "source": "auto",
1166
+ "createdAt": "2026-03-20T10:18:50.000Z"
1167
+ }
1168
+ ]
1169
+ }