ai-dev-analytics 1.1.12 → 2.0.1

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 (192) hide show
  1. package/README.en.md +51 -57
  2. package/README.md +68 -485
  3. package/dist/cli/commands/doctor.d.ts +2 -0
  4. package/dist/cli/commands/doctor.d.ts.map +1 -0
  5. package/dist/cli/commands/doctor.js +125 -0
  6. package/dist/cli/commands/doctor.js.map +1 -0
  7. package/dist/cli/commands/init.d.ts.map +1 -1
  8. package/dist/cli/commands/init.js +19 -176
  9. package/dist/cli/commands/init.js.map +1 -1
  10. package/dist/cli/commands/memory.d.ts.map +1 -1
  11. package/dist/cli/commands/memory.js +3 -13
  12. package/dist/cli/commands/memory.js.map +1 -1
  13. package/dist/cli/commands/rules.d.ts +0 -10
  14. package/dist/cli/commands/rules.d.ts.map +1 -1
  15. package/dist/cli/commands/rules.js +9 -34
  16. package/dist/cli/commands/rules.js.map +1 -1
  17. package/dist/cli/commands/skills.d.ts +0 -5
  18. package/dist/cli/commands/skills.d.ts.map +1 -1
  19. package/dist/cli/commands/skills.js +5 -24
  20. package/dist/cli/commands/skills.js.map +1 -1
  21. package/dist/cli/commands/sync.d.ts +2 -0
  22. package/dist/cli/commands/sync.d.ts.map +1 -0
  23. package/dist/cli/commands/sync.js +28 -0
  24. package/dist/cli/commands/sync.js.map +1 -0
  25. package/dist/cli/index.js +26 -85
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/{schemas/run-json.d.ts → internal/runtime/schema.d.ts} +4 -18
  28. package/dist/internal/runtime/schema.d.ts.map +1 -0
  29. package/dist/{schemas/run-json.js → internal/runtime/schema.js} +5 -9
  30. package/dist/internal/runtime/schema.js.map +1 -0
  31. package/dist/{utils/run-data.d.ts → internal/runtime/state.d.ts} +7 -8
  32. package/dist/internal/runtime/state.d.ts.map +1 -0
  33. package/dist/{utils/run-data.js → internal/runtime/state.js} +11 -12
  34. package/dist/internal/runtime/state.js.map +1 -0
  35. package/dist/internal/runtime/summary.d.ts +8 -0
  36. package/dist/internal/runtime/summary.d.ts.map +1 -0
  37. package/dist/internal/runtime/summary.js +260 -0
  38. package/dist/internal/runtime/summary.js.map +1 -0
  39. package/dist/internal/runtime/tokens.d.ts.map +1 -0
  40. package/dist/internal/runtime/tokens.js.map +1 -0
  41. package/dist/mcp/server.js +9 -8
  42. package/dist/mcp/server.js.map +1 -1
  43. package/dist/schemas/aida-project.d.ts +27 -1
  44. package/dist/schemas/aida-project.d.ts.map +1 -1
  45. package/dist/schemas/rules.d.ts +15 -0
  46. package/dist/schemas/rules.d.ts.map +1 -0
  47. package/dist/schemas/rules.js +5 -0
  48. package/dist/schemas/rules.js.map +1 -0
  49. package/dist/services/project-build.d.ts +44 -0
  50. package/dist/services/project-build.d.ts.map +1 -0
  51. package/dist/services/project-build.js +32 -0
  52. package/dist/services/project-build.js.map +1 -0
  53. package/dist/services/project-health.d.ts +14 -0
  54. package/dist/services/project-health.d.ts.map +1 -0
  55. package/dist/services/project-health.js +19 -0
  56. package/dist/services/project-health.js.map +1 -0
  57. package/dist/services/security-audit.d.ts +59 -0
  58. package/dist/services/security-audit.d.ts.map +1 -0
  59. package/dist/services/security-audit.js +638 -0
  60. package/dist/services/security-audit.js.map +1 -0
  61. package/dist/utils/ai-build.d.ts +3 -8
  62. package/dist/utils/ai-build.d.ts.map +1 -1
  63. package/dist/utils/ai-build.js +31 -117
  64. package/dist/utils/ai-build.js.map +1 -1
  65. package/dist/utils/guide.d.ts +3 -3
  66. package/dist/utils/guide.d.ts.map +1 -1
  67. package/dist/utils/guide.js +91 -68
  68. package/dist/utils/guide.js.map +1 -1
  69. package/dist/utils/import.d.ts.map +1 -1
  70. package/dist/utils/import.js +4 -15
  71. package/dist/utils/import.js.map +1 -1
  72. package/dist/utils/memory.d.ts +2 -0
  73. package/dist/utils/memory.d.ts.map +1 -1
  74. package/dist/utils/memory.js +440 -95
  75. package/dist/utils/memory.js.map +1 -1
  76. package/dist/utils/paths.d.ts +2 -10
  77. package/dist/utils/paths.d.ts.map +1 -1
  78. package/dist/utils/paths.js +5 -17
  79. package/dist/utils/paths.js.map +1 -1
  80. package/dist/utils/project-health.d.ts +39 -0
  81. package/dist/utils/project-health.d.ts.map +1 -0
  82. package/dist/utils/project-health.js +286 -0
  83. package/dist/utils/project-health.js.map +1 -0
  84. package/dist/utils/registry.d.ts +11 -0
  85. package/dist/utils/registry.d.ts.map +1 -0
  86. package/dist/utils/registry.js +65 -0
  87. package/dist/utils/registry.js.map +1 -0
  88. package/dist/utils/rules.d.ts +11 -1
  89. package/dist/utils/rules.d.ts.map +1 -1
  90. package/dist/utils/rules.js +76 -8
  91. package/dist/utils/rules.js.map +1 -1
  92. package/dist/utils/skills.d.ts +6 -9
  93. package/dist/utils/skills.d.ts.map +1 -1
  94. package/dist/utils/skills.js +26 -54
  95. package/dist/utils/skills.js.map +1 -1
  96. package/package.json +12 -14
  97. package/dist/cli/commands/build.d.ts +0 -2
  98. package/dist/cli/commands/build.d.ts.map +0 -1
  99. package/dist/cli/commands/build.js +0 -56
  100. package/dist/cli/commands/build.js.map +0 -1
  101. package/dist/cli/commands/dashboard.d.ts +0 -2
  102. package/dist/cli/commands/dashboard.d.ts.map +0 -1
  103. package/dist/cli/commands/dashboard.js +0 -70
  104. package/dist/cli/commands/dashboard.js.map +0 -1
  105. package/dist/cli/commands/import.d.ts +0 -2
  106. package/dist/cli/commands/import.d.ts.map +0 -1
  107. package/dist/cli/commands/import.js +0 -71
  108. package/dist/cli/commands/import.js.map +0 -1
  109. package/dist/cli/commands/log.d.ts +0 -2
  110. package/dist/cli/commands/log.d.ts.map +0 -1
  111. package/dist/cli/commands/log.js +0 -440
  112. package/dist/cli/commands/log.js.map +0 -1
  113. package/dist/cli/commands/merge-data.d.ts +0 -20
  114. package/dist/cli/commands/merge-data.d.ts.map +0 -1
  115. package/dist/cli/commands/merge-data.js +0 -574
  116. package/dist/cli/commands/merge-data.js.map +0 -1
  117. package/dist/cli/commands/merge.d.ts +0 -2
  118. package/dist/cli/commands/merge.d.ts.map +0 -1
  119. package/dist/cli/commands/merge.js +0 -82
  120. package/dist/cli/commands/merge.js.map +0 -1
  121. package/dist/cli/commands/migrate-dir.d.ts +0 -6
  122. package/dist/cli/commands/migrate-dir.d.ts.map +0 -1
  123. package/dist/cli/commands/migrate-dir.js +0 -125
  124. package/dist/cli/commands/migrate-dir.js.map +0 -1
  125. package/dist/cli/commands/migrate-legacy.d.ts +0 -2
  126. package/dist/cli/commands/migrate-legacy.d.ts.map +0 -1
  127. package/dist/cli/commands/migrate-legacy.js +0 -143
  128. package/dist/cli/commands/migrate-legacy.js.map +0 -1
  129. package/dist/cli/commands/migrate.d.ts +0 -2
  130. package/dist/cli/commands/migrate.d.ts.map +0 -1
  131. package/dist/cli/commands/migrate.js +0 -300
  132. package/dist/cli/commands/migrate.js.map +0 -1
  133. package/dist/cli/commands/reindex.d.ts +0 -14
  134. package/dist/cli/commands/reindex.d.ts.map +0 -1
  135. package/dist/cli/commands/reindex.js +0 -139
  136. package/dist/cli/commands/reindex.js.map +0 -1
  137. package/dist/cli/commands/report.d.ts +0 -2
  138. package/dist/cli/commands/report.d.ts.map +0 -1
  139. package/dist/cli/commands/report.js +0 -219
  140. package/dist/cli/commands/report.js.map +0 -1
  141. package/dist/cli/commands/start.d.ts +0 -2
  142. package/dist/cli/commands/start.d.ts.map +0 -1
  143. package/dist/cli/commands/start.js +0 -155
  144. package/dist/cli/commands/start.js.map +0 -1
  145. package/dist/cli/commands/status.d.ts +0 -2
  146. package/dist/cli/commands/status.d.ts.map +0 -1
  147. package/dist/cli/commands/status.js +0 -70
  148. package/dist/cli/commands/status.js.map +0 -1
  149. package/dist/cli/commands/update.d.ts +0 -2
  150. package/dist/cli/commands/update.d.ts.map +0 -1
  151. package/dist/cli/commands/update.js +0 -73
  152. package/dist/cli/commands/update.js.map +0 -1
  153. package/dist/schemas/run-json.d.ts.map +0 -1
  154. package/dist/schemas/run-json.js.map +0 -1
  155. package/dist/server/api.d.ts +0 -30
  156. package/dist/server/api.d.ts.map +0 -1
  157. package/dist/server/api.js +0 -239
  158. package/dist/server/api.js.map +0 -1
  159. package/dist/server/index.d.ts +0 -2
  160. package/dist/server/index.d.ts.map +0 -1
  161. package/dist/server/index.js +0 -228
  162. package/dist/server/index.js.map +0 -1
  163. package/dist/utils/run-data.d.ts.map +0 -1
  164. package/dist/utils/run-data.js.map +0 -1
  165. package/dist/utils/tokens.d.ts.map +0 -1
  166. package/dist/utils/tokens.js.map +0 -1
  167. package/src/assets/skills/audit.md +0 -98
  168. package/src/assets/skills/bug-fixer.md +0 -43
  169. package/src/assets/skills/code-generator.md +0 -71
  170. package/src/assets/skills/commit-code.md +0 -67
  171. package/src/assets/skills/dashboard-generator.md +0 -65
  172. package/src/assets/skills/dev-flower.md +0 -85
  173. package/src/assets/skills/deviation-recorder.md +0 -83
  174. package/src/assets/skills/docx-to-markdown.md +0 -69
  175. package/src/assets/skills/mcp-reviewer.md +0 -38
  176. package/src/assets/skills/requirement-analyzer.md +0 -103
  177. package/src/assets/skills/rules-evolver.md +0 -47
  178. package/src/assets/skills/self-reviewer.md +0 -49
  179. package/src/assets/skills/task-splitter.md +0 -60
  180. package/src/assets/skills/workflow-orchestrator.md +0 -209
  181. package/src/assets/templates/demo-run.json +0 -910
  182. package/src/assets/templates/run.json +0 -63
  183. package/src/dashboard/assets/index-B8QcPcg7.css +0 -1
  184. package/src/dashboard/assets/index-DcAl6lhS.js +0 -111
  185. package/src/dashboard/demo/overview.json +0 -71
  186. package/src/dashboard/demo/run.en.json +0 -1169
  187. package/src/dashboard/demo/run.json +0 -2667
  188. package/src/dashboard/demo/run.zh.json +0 -1169
  189. package/src/dashboard/demo/runs.json +0 -19
  190. package/src/dashboard/index.html +0 -13
  191. /package/dist/{utils → internal/runtime}/tokens.d.ts +0 -0
  192. /package/dist/{utils → internal/runtime}/tokens.js +0 -0
@@ -1,1169 +0,0 @@
1
- {
2
- "meta": {
3
- "schemaVersion": "2.0",
4
- "runId": "feat/order-management",
5
- "project": "saas-crm-platform",
6
- "developer": "sarah-johnson",
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": 5665,
41
- "nodeTimeBreakdown": {
42
- "Code Generation": 3955,
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": "Define order entity types and interfaces",
65
- "stageName": "Phase 1: Core Data Layer",
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:42.000Z"
72
- },
73
- {
74
- "taskId": "TASK-02",
75
- "title": "Create order API service with request wrapper",
76
- "stageName": "Phase 1: Core Data Layer",
77
- "prdPhase": "PRD1",
78
- "status": "done",
79
- "acceptance": "",
80
- "createdAt": "2026-03-20T09:12:57.000Z",
81
- "startedAt": "2026-03-20T09:12:57.000Z",
82
- "completedAt": "2026-03-20T09:15:29.000Z"
83
- },
84
- {
85
- "taskId": "TASK-03",
86
- "title": "Implement useOrders data fetching hook",
87
- "stageName": "Phase 1: Core Data Layer",
88
- "prdPhase": "PRD1",
89
- "status": "done",
90
- "acceptance": "",
91
- "createdAt": "2026-03-20T09:15:42.000Z",
92
- "startedAt": "2026-03-20T09:15:42.000Z",
93
- "completedAt": "2026-03-20T09:18:57.000Z"
94
- },
95
- {
96
- "taskId": "TASK-04",
97
- "title": "Build order list table component",
98
- "stageName": "Phase 2: List & Status",
99
- "prdPhase": "PRD1",
100
- "status": "done",
101
- "acceptance": "",
102
- "createdAt": "2026-03-20T09:19:10.000Z",
103
- "startedAt": "2026-03-20T09:19:10.000Z",
104
- "completedAt": "2026-03-20T09:23:40.000Z"
105
- },
106
- {
107
- "taskId": "TASK-05",
108
- "title": "Add order status badge component",
109
- "stageName": "Phase 2: List & Status",
110
- "prdPhase": "PRD1",
111
- "status": "done",
112
- "acceptance": "",
113
- "createdAt": "2026-03-20T09:23:55.000Z",
114
- "startedAt": "2026-03-20T09:23:55.000Z",
115
- "completedAt": "2026-03-20T09:25:00.000Z"
116
- },
117
- {
118
- "taskId": "TASK-06",
119
- "title": "Implement order detail slide-over panel",
120
- "stageName": "Phase 3: Detail & Actions",
121
- "prdPhase": "PRD1",
122
- "status": "done",
123
- "acceptance": "",
124
- "createdAt": "2026-03-20T09:25:15.000Z",
125
- "startedAt": "2026-03-20T09:25:15.000Z",
126
- "completedAt": "2026-03-20T09:31:03.000Z"
127
- },
128
- {
129
- "taskId": "TASK-07",
130
- "title": "Bulk action toolbar with permission guard",
131
- "stageName": "Phase 3: Detail & Actions",
132
- "prdPhase": "PRD1",
133
- "status": "done",
134
- "acceptance": "",
135
- "createdAt": "2026-03-20T09:31:18.000Z",
136
- "startedAt": "2026-03-20T09:31:18.000Z",
137
- "completedAt": "2026-03-20T09:33:16.000Z"
138
- },
139
- {
140
- "taskId": "TASK-08",
141
- "title": "PRD1 Build Verification",
142
- "stageName": "Build Verification",
143
- "prdPhase": "PRD1",
144
- "status": "done",
145
- "acceptance": "",
146
- "createdAt": "2026-03-20T09:33:30.000Z",
147
- "startedAt": "2026-03-20T09:33:30.000Z",
148
- "completedAt": "2026-03-20T09:34:42.000Z"
149
- },
150
- {
151
- "taskId": "TASK-09",
152
- "title": "Create revenue trend ECharts line chart",
153
- "stageName": "Phase 4: Chart Components",
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:15.000Z"
160
- },
161
- {
162
- "taskId": "TASK-10",
163
- "title": "Build order status distribution pie chart",
164
- "stageName": "Phase 4: Chart Components",
165
- "prdPhase": "PRD2",
166
- "status": "done",
167
- "acceptance": "",
168
- "createdAt": "2026-03-20T09:44:30.000Z",
169
- "startedAt": "2026-03-20T09:44:30.000Z",
170
- "completedAt": "2026-03-20T09:47:12.000Z"
171
- },
172
- {
173
- "taskId": "TASK-11",
174
- "title": "Implement date range filter bar",
175
- "stageName": "Phase 5: Filters & Search",
176
- "prdPhase": "PRD2",
177
- "status": "done",
178
- "acceptance": "",
179
- "createdAt": "2026-03-20T09:47:28.000Z",
180
- "startedAt": "2026-03-20T09:47:28.000Z",
181
- "completedAt": "2026-03-20T09:50:36.000Z"
182
- },
183
- {
184
- "taskId": "TASK-12",
185
- "title": "Add keyword search and multi-select filters",
186
- "stageName": "Phase 5: Filters & Search",
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:30.000Z"
193
- },
194
- {
195
- "taskId": "TASK-13",
196
- "title": "Create top 10 best-sellers ranking table",
197
- "stageName": "Phase 6: Reports",
198
- "prdPhase": "PRD2",
199
- "status": "done",
200
- "acceptance": "",
201
- "createdAt": "2026-03-20T09:54:45.000Z",
202
- "startedAt": "2026-03-20T09:54:45.000Z",
203
- "completedAt": "2026-03-20T09:57:07.000Z"
204
- },
205
- {
206
- "taskId": "TASK-14",
207
- "title": "Implement order data CSV export",
208
- "stageName": "Phase 6: Reports",
209
- "prdPhase": "PRD2",
210
- "status": "done",
211
- "acceptance": "",
212
- "createdAt": "2026-03-20T09:57:22.000Z",
213
- "startedAt": "2026-03-20T09:57:22.000Z",
214
- "completedAt": "2026-03-20T09:59:34.000Z"
215
- },
216
- {
217
- "taskId": "TASK-15",
218
- "title": "Add summary stats KPI card row",
219
- "stageName": "Phase 6: Reports",
220
- "prdPhase": "PRD2",
221
- "status": "done",
222
- "acceptance": "",
223
- "createdAt": "2026-03-20T09:59:50.000Z",
224
- "startedAt": "2026-03-20T09:59:50.000Z",
225
- "completedAt": "2026-03-20T10:01:28.000Z"
226
- },
227
- {
228
- "taskId": "TASK-16",
229
- "title": "PRD2 Build Verification",
230
- "stageName": "Build Verification",
231
- "prdPhase": "PRD2",
232
- "status": "done",
233
- "acceptance": "",
234
- "createdAt": "2026-03-20T10:01:45.000Z",
235
- "startedAt": "2026-03-20T10:01:45.000Z",
236
- "completedAt": "2026-03-20T10:03:33.000Z"
237
- },
238
- {
239
- "taskId": "TASK-17",
240
- "title": "Fix order total decimal precision bug",
241
- "stageName": "Bug Fixes",
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:50.000Z"
248
- },
249
- {
250
- "taskId": "TASK-18",
251
- "title": "Fix date picker timezone conversion error",
252
- "stageName": "Bug Fixes",
253
- "prdPhase": "PRD3",
254
- "status": "done",
255
- "acceptance": "",
256
- "createdAt": "2026-03-20T10:10:05.000Z",
257
- "startedAt": "2026-03-20T10:10:05.000Z",
258
- "completedAt": "2026-03-20T10:12:13.000Z"
259
- },
260
- {
261
- "taskId": "TASK-19",
262
- "title": "Fix empty state hidden by loading overlay",
263
- "stageName": "Bug Fixes",
264
- "prdPhase": "PRD3",
265
- "status": "done",
266
- "acceptance": "",
267
- "createdAt": "2026-03-20T10:12:28.000Z",
268
- "startedAt": "2026-03-20T10:12:28.000Z",
269
- "completedAt": "2026-03-20T10:13:08.000Z"
270
- },
271
- {
272
- "taskId": "TASK-20",
273
- "title": "Fix filter state reset on route navigation",
274
- "stageName": "Performance & UX",
275
- "prdPhase": "PRD3",
276
- "status": "done",
277
- "acceptance": "",
278
- "createdAt": "2026-03-20T10:13:22.000Z",
279
- "startedAt": "2026-03-20T10:13:22.000Z",
280
- "completedAt": "2026-03-20T10:14:37.000Z"
281
- },
282
- {
283
- "taskId": "TASK-21",
284
- "title": "Add skeleton screens for perceived performance",
285
- "stageName": "Performance & UX",
286
- "prdPhase": "PRD3",
287
- "status": "done",
288
- "acceptance": "",
289
- "createdAt": "2026-03-20T10:14:52.000Z",
290
- "startedAt": "2026-03-20T10:14:52.000Z",
291
- "completedAt": "2026-03-20T10:16:44.000Z"
292
- },
293
- {
294
- "taskId": "TASK-22",
295
- "title": "Final full build and smoke test",
296
- "stageName": "Build Verification",
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:55.000Z"
303
- }
304
- ],
305
- "deviations": [
306
- {
307
- "deviationId": "DEV-01",
308
- "title": "Filter state not persisted in URL, lost after navigation",
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": "Revenue chart uses hardcoded hex colors instead of design tokens",
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": "Date range filter missing timezone conversion for cross-timezone users",
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 export includes internal ID fields not intended for users",
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": "Top products table hardcodes 10 rows instead of configurable 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": "Bulk action bar hides button silently instead of showing permission hint",
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": "Order total shows floating point error with fractional quantities",
397
- "severity": "high",
398
- "source": "user-feedback",
399
- "status": "fixed",
400
- "files": [
401
- "src/utils/orderCalc.ts"
402
- ],
403
- "fix": "Replace native float arithmetic with Decimal.js",
404
- "reportedAt": "2026-03-20T10:08:00.000Z",
405
- "fixedAt": "2026-03-20T10:09:50.000Z"
406
- },
407
- {
408
- "bugId": "BUG-02",
409
- "title": "Date picker resets to today at DST boundary",
410
- "severity": "high",
411
- "source": "testing",
412
- "status": "fixed",
413
- "files": [
414
- "src/components/DateRangePicker.tsx"
415
- ],
416
- "fix": "Use dayjs UTC mode to handle DST boundary correctly",
417
- "reportedAt": "2026-03-20T10:09:50.000Z",
418
- "fixedAt": "2026-03-20T10:12:20.000Z"
419
- },
420
- {
421
- "bugId": "BUG-03",
422
- "title": "Empty state hidden behind loading spinner",
423
- "severity": "medium",
424
- "source": "self-review",
425
- "status": "fixed",
426
- "files": [
427
- "src/components/OrderList.tsx"
428
- ],
429
- "fix": "Move empty state check before loading state render",
430
- "reportedAt": "2026-03-20T10:12:20.000Z",
431
- "fixedAt": "2026-03-20T10:13:00.000Z"
432
- },
433
- {
434
- "bugId": "BUG-04",
435
- "title": "Search bar fires redundant API calls during IME composition",
436
- "severity": "medium",
437
- "source": "user-feedback",
438
- "status": "fixed",
439
- "files": [
440
- "src/components/SearchBar.tsx"
441
- ],
442
- "fix": "Listen to compositionend before triggering search debounce",
443
- "reportedAt": "2026-03-20T09:53:20.000Z",
444
- "fixedAt": "2026-03-20T09:54:38.000Z"
445
- }
446
- ],
447
- "reviews": [
448
- {
449
- "reviewId": "REV-01",
450
- "taskId": "TASK-06",
451
- "result": "pass",
452
- "issueCount": 0,
453
- "scope": "Order detail slide-over panel",
454
- "reviewedAt": "2026-03-20T09:31:22.000Z",
455
- "issues": []
456
- },
457
- {
458
- "reviewId": "REV-02",
459
- "taskId": "TASK-09",
460
- "result": "fail",
461
- "issueCount": 2,
462
- "scope": "Revenue trend chart component",
463
- "reviewedAt": "2026-03-20T09:45:00.000Z",
464
- "issues": [
465
- "Axis label color contrast too low",
466
- "Missing empty state when no data"
467
- ]
468
- },
469
- {
470
- "reviewId": "REV-03",
471
- "taskId": "TASK-09",
472
- "result": "pass",
473
- "issueCount": 0,
474
- "scope": "Revenue trend chart (post-fix review)",
475
- "reviewedAt": "2026-03-20T09:46:42.000Z",
476
- "issues": []
477
- },
478
- {
479
- "reviewId": "REV-04",
480
- "taskId": "TASK-16",
481
- "result": "pass",
482
- "issueCount": 0,
483
- "scope": "PRD2 full self-review",
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 final full self-review",
493
- "reviewedAt": "2026-03-20T10:18:08.000Z",
494
- "issues": []
495
- }
496
- ],
497
- "rules": [
498
- {
499
- "ruleId": "RULE-01",
500
- "category": "process",
501
- "sourceDeviation": "DEV-01",
502
- "content": "Filter, pagination, and sort state must be persisted via URL SearchParams. Never store only in component state.",
503
- "file": "rules.json#RULE-001",
504
- "sedimentedAt": "2026-03-20T09:35:52.000Z"
505
- },
506
- {
507
- "ruleId": "RULE-02",
508
- "category": "style",
509
- "sourceDeviation": "DEV-02",
510
- "content": "Never hardcode hex/rgb values in components. Always use project design tokens (CSS variables or semantic Tailwind colors).",
511
- "file": "rules.json#RULE-002",
512
- "sedimentedAt": "2026-03-20T09:45:52.000Z"
513
- },
514
- {
515
- "ruleId": "RULE-03",
516
- "category": "i18n",
517
- "sourceDeviation": "DEV-03",
518
- "content": "All date comparisons and storage must use UTC. Convert to user timezone only at the display layer. Never use new Date() for direct comparison.",
519
- "file": "rules.json#RULE-003",
520
- "sedimentedAt": "2026-03-20T09:51:42.000Z"
521
- },
522
- {
523
- "ruleId": "RULE-04",
524
- "category": "general",
525
- "sourceDeviation": "DEV-04",
526
- "content": "Export utilities must maintain an explicit field allowlist. Never spread objects blindly — always pick only explicitly approved fields.",
527
- "file": "rules.json#RULE-004",
528
- "sedimentedAt": "2026-03-20T10:00:02.000Z"
529
- },
530
- {
531
- "ruleId": "RULE-05",
532
- "category": "component",
533
- "sourceDeviation": "DEV-05",
534
- "content": "List components must accept a pageSize prop, defaulting to the global constant DEFAULT_PAGE_SIZE (currently 20).",
535
- "file": "rules.json#RULE-005",
536
- "sedimentedAt": "2026-03-20T09:57:02.000Z"
537
- },
538
- {
539
- "ruleId": "RULE-06",
540
- "category": "general",
541
- "sourceDeviation": null,
542
- "content": "After each task, always call aida_log_files to record file changes, then aida_log_review to complete the self-review gate.",
543
- "file": "rules.json#RULE-006",
544
- "sedimentedAt": "2026-03-20T09:20:02.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": "Workflow started",
713
- "timestamp": "2026-03-20T09:00:00.000Z",
714
- "prdPhase": "PRD1"
715
- },
716
- {
717
- "type": "requirement-analysis",
718
- "title": "Requirement analysis in progress",
719
- "timestamp": "2026-03-20T09:05:00.000Z",
720
- "prdPhase": "PRD1"
721
- },
722
- {
723
- "type": "task",
724
- "title": "TASK-01: Define order entity types and interfaces",
725
- "timestamp": "2026-03-20T09:12:00.000Z",
726
- "prdPhase": "PRD1"
727
- },
728
- {
729
- "type": "task-done",
730
- "title": "TASK-01: Define order entity types and interfaces",
731
- "timestamp": "2026-03-20T09:12:42.000Z",
732
- "prdPhase": "PRD1"
733
- },
734
- {
735
- "type": "task",
736
- "title": "TASK-02: Create order API service with request wrapper",
737
- "timestamp": "2026-03-20T09:12:57.000Z",
738
- "prdPhase": "PRD1"
739
- },
740
- {
741
- "type": "task-done",
742
- "title": "TASK-02: Create order API service with request wrapper",
743
- "timestamp": "2026-03-20T09:15:29.000Z",
744
- "prdPhase": "PRD1"
745
- },
746
- {
747
- "type": "task",
748
- "title": "TASK-03: Implement useOrders data fetching hook",
749
- "timestamp": "2026-03-20T09:15:42.000Z",
750
- "prdPhase": "PRD1"
751
- },
752
- {
753
- "type": "task-done",
754
- "title": "TASK-03: Implement useOrders data fetching hook",
755
- "timestamp": "2026-03-20T09:18:57.000Z",
756
- "prdPhase": "PRD1"
757
- },
758
- {
759
- "type": "task",
760
- "title": "TASK-04: Build order list table component",
761
- "timestamp": "2026-03-20T09:19:10.000Z",
762
- "prdPhase": "PRD1"
763
- },
764
- {
765
- "type": "rule",
766
- "title": "RULE-06: After each task, always call aida_log_fi",
767
- "timestamp": "2026-03-20T09:20:02.000Z"
768
- },
769
- {
770
- "type": "task-done",
771
- "title": "TASK-04: Build order list table component",
772
- "timestamp": "2026-03-20T09:23:40.000Z",
773
- "prdPhase": "PRD1"
774
- },
775
- {
776
- "type": "task",
777
- "title": "TASK-05: Add order status badge component",
778
- "timestamp": "2026-03-20T09:23:55.000Z",
779
- "prdPhase": "PRD1"
780
- },
781
- {
782
- "type": "task-done",
783
- "title": "TASK-05: Add order status badge component",
784
- "timestamp": "2026-03-20T09:25:00.000Z",
785
- "prdPhase": "PRD1"
786
- },
787
- {
788
- "type": "task",
789
- "title": "TASK-06: Implement order detail slide-over panel",
790
- "timestamp": "2026-03-20T09:25:15.000Z",
791
- "prdPhase": "PRD1"
792
- },
793
- {
794
- "type": "task-done",
795
- "title": "TASK-06: Implement order detail slide-over panel",
796
- "timestamp": "2026-03-20T09:31:03.000Z",
797
- "prdPhase": "PRD1"
798
- },
799
- {
800
- "type": "task",
801
- "title": "TASK-07: Bulk action toolbar with permission guard",
802
- "timestamp": "2026-03-20T09:31:18.000Z",
803
- "prdPhase": "PRD1"
804
- },
805
- {
806
- "type": "review",
807
- "title": "REV-01: pass",
808
- "timestamp": "2026-03-20T09:31:22.000Z",
809
- "prdPhase": "PRD1"
810
- },
811
- {
812
- "type": "deviation",
813
- "title": "DEV-06: Bulk action bar hides button silently in",
814
- "timestamp": "2026-03-20T09:31:40.000Z"
815
- },
816
- {
817
- "type": "task-done",
818
- "title": "TASK-07: Bulk action toolbar with permission guard",
819
- "timestamp": "2026-03-20T09:33:16.000Z",
820
- "prdPhase": "PRD1"
821
- },
822
- {
823
- "type": "task",
824
- "title": "TASK-08: PRD1 Build Verification",
825
- "timestamp": "2026-03-20T09:33:30.000Z",
826
- "prdPhase": "PRD1"
827
- },
828
- {
829
- "type": "deviation",
830
- "title": "DEV-01: Filter state not persisted in URL, lost ",
831
- "timestamp": "2026-03-20T09:34:10.000Z"
832
- },
833
- {
834
- "type": "task-done",
835
- "title": "TASK-08: PRD1 Build Verification",
836
- "timestamp": "2026-03-20T09:34:42.000Z",
837
- "prdPhase": "PRD1"
838
- },
839
- {
840
- "type": "rule",
841
- "title": "RULE-01: Filter, pagination, and sort state must ",
842
- "timestamp": "2026-03-20T09:35:52.000Z"
843
- },
844
- {
845
- "type": "task",
846
- "title": "TASK-09: Create revenue trend ECharts line chart",
847
- "timestamp": "2026-03-20T09:40:00.000Z",
848
- "prdPhase": "PRD2"
849
- },
850
- {
851
- "type": "task-done",
852
- "title": "TASK-09: Create revenue trend ECharts line chart",
853
- "timestamp": "2026-03-20T09:44:15.000Z",
854
- "prdPhase": "PRD2"
855
- },
856
- {
857
- "type": "task",
858
- "title": "TASK-10: Build order status distribution pie chart",
859
- "timestamp": "2026-03-20T09:44:30.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: Revenue chart uses hardcoded hex colors ",
871
- "timestamp": "2026-03-20T09:45:00.000Z"
872
- },
873
- {
874
- "type": "rule",
875
- "title": "RULE-02: Never hardcode hex/rgb values in compone",
876
- "timestamp": "2026-03-20T09:45:52.000Z"
877
- },
878
- {
879
- "type": "review",
880
- "title": "REV-03: pass",
881
- "timestamp": "2026-03-20T09:46:42.000Z",
882
- "prdPhase": "PRD2"
883
- },
884
- {
885
- "type": "task-done",
886
- "title": "TASK-10: Build order status distribution pie chart",
887
- "timestamp": "2026-03-20T09:47:12.000Z",
888
- "prdPhase": "PRD2"
889
- },
890
- {
891
- "type": "task",
892
- "title": "TASK-11: Implement date range filter bar",
893
- "timestamp": "2026-03-20T09:47:28.000Z",
894
- "prdPhase": "PRD2"
895
- },
896
- {
897
- "type": "deviation",
898
- "title": "DEV-03: Date range filter missing timezone conve",
899
- "timestamp": "2026-03-20T09:50:00.000Z"
900
- },
901
- {
902
- "type": "task-done",
903
- "title": "TASK-11: Implement date range filter bar",
904
- "timestamp": "2026-03-20T09:50:36.000Z",
905
- "prdPhase": "PRD2"
906
- },
907
- {
908
- "type": "task",
909
- "title": "TASK-12: Add keyword search and multi-select filters",
910
- "timestamp": "2026-03-20T09:50:50.000Z",
911
- "prdPhase": "PRD2"
912
- },
913
- {
914
- "type": "rule",
915
- "title": "RULE-03: All date comparisons and storage must us",
916
- "timestamp": "2026-03-20T09:51:42.000Z"
917
- },
918
- {
919
- "type": "bug",
920
- "title": "BUG-04: Search bar fires redundant API calls dur",
921
- "timestamp": "2026-03-20T09:53:20.000Z"
922
- },
923
- {
924
- "type": "task-done",
925
- "title": "TASK-12: Add keyword search and multi-select filters",
926
- "timestamp": "2026-03-20T09:54:30.000Z",
927
- "prdPhase": "PRD2"
928
- },
929
- {
930
- "type": "task",
931
- "title": "TASK-13: Create top 10 best-sellers ranking table",
932
- "timestamp": "2026-03-20T09:54:45.000Z",
933
- "prdPhase": "PRD2"
934
- },
935
- {
936
- "type": "deviation",
937
- "title": "DEV-05: Top products table hardcodes 10 rows ins",
938
- "timestamp": "2026-03-20T09:55:50.000Z"
939
- },
940
- {
941
- "type": "rule",
942
- "title": "RULE-05: List components must accept a pageSize p",
943
- "timestamp": "2026-03-20T09:57:02.000Z"
944
- },
945
- {
946
- "type": "task-done",
947
- "title": "TASK-13: Create top 10 best-sellers ranking table",
948
- "timestamp": "2026-03-20T09:57:07.000Z",
949
- "prdPhase": "PRD2"
950
- },
951
- {
952
- "type": "task",
953
- "title": "TASK-14: Implement order data CSV export",
954
- "timestamp": "2026-03-20T09:57:22.000Z",
955
- "prdPhase": "PRD2"
956
- },
957
- {
958
- "type": "deviation",
959
- "title": "DEV-04: CSV export includes internal ID fields n",
960
- "timestamp": "2026-03-20T09:58:20.000Z"
961
- },
962
- {
963
- "type": "task-done",
964
- "title": "TASK-14: Implement order data CSV export",
965
- "timestamp": "2026-03-20T09:59:34.000Z",
966
- "prdPhase": "PRD2"
967
- },
968
- {
969
- "type": "task",
970
- "title": "TASK-15: Add summary stats KPI card row",
971
- "timestamp": "2026-03-20T09:59:50.000Z",
972
- "prdPhase": "PRD2"
973
- },
974
- {
975
- "type": "rule",
976
- "title": "RULE-04: Export utilities must maintain an explic",
977
- "timestamp": "2026-03-20T10:00:02.000Z"
978
- },
979
- {
980
- "type": "task-done",
981
- "title": "TASK-15: Add summary stats KPI card row",
982
- "timestamp": "2026-03-20T10:01:28.000Z",
983
- "prdPhase": "PRD2"
984
- },
985
- {
986
- "type": "task",
987
- "title": "TASK-16: PRD2 Build Verification",
988
- "timestamp": "2026-03-20T10:01:45.000Z",
989
- "prdPhase": "PRD2"
990
- },
991
- {
992
- "type": "task-done",
993
- "title": "TASK-16: PRD2 Build Verification",
994
- "timestamp": "2026-03-20T10:03:33.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: Order total shows floating point error w",
1006
- "timestamp": "2026-03-20T10:08:00.000Z"
1007
- },
1008
- {
1009
- "type": "task",
1010
- "title": "TASK-17: Fix order total decimal precision bug",
1011
- "timestamp": "2026-03-20T10:08:20.000Z",
1012
- "prdPhase": "PRD3"
1013
- },
1014
- {
1015
- "type": "task-done",
1016
- "title": "TASK-17: Fix order total decimal precision bug",
1017
- "timestamp": "2026-03-20T10:09:50.000Z",
1018
- "prdPhase": "PRD3"
1019
- },
1020
- {
1021
- "type": "bug",
1022
- "title": "BUG-02: Date picker resets to today at DST bound",
1023
- "timestamp": "2026-03-20T10:09:50.000Z"
1024
- },
1025
- {
1026
- "type": "task",
1027
- "title": "TASK-18: Fix date picker timezone conversion error",
1028
- "timestamp": "2026-03-20T10:10:05.000Z",
1029
- "prdPhase": "PRD3"
1030
- },
1031
- {
1032
- "type": "task-done",
1033
- "title": "TASK-18: Fix date picker timezone conversion error",
1034
- "timestamp": "2026-03-20T10:12:13.000Z",
1035
- "prdPhase": "PRD3"
1036
- },
1037
- {
1038
- "type": "bug",
1039
- "title": "BUG-03: Empty state hidden behind loading spinne",
1040
- "timestamp": "2026-03-20T10:12:20.000Z"
1041
- },
1042
- {
1043
- "type": "task",
1044
- "title": "TASK-19: Fix empty state hidden by loading overlay",
1045
- "timestamp": "2026-03-20T10:12:28.000Z",
1046
- "prdPhase": "PRD3"
1047
- },
1048
- {
1049
- "type": "task-done",
1050
- "title": "TASK-19: Fix empty state hidden by loading overlay",
1051
- "timestamp": "2026-03-20T10:13:08.000Z",
1052
- "prdPhase": "PRD3"
1053
- },
1054
- {
1055
- "type": "task",
1056
- "title": "TASK-20: Fix filter state reset on route navigation",
1057
- "timestamp": "2026-03-20T10:13:22.000Z",
1058
- "prdPhase": "PRD3"
1059
- },
1060
- {
1061
- "type": "task-done",
1062
- "title": "TASK-20: Fix filter state reset on route navigation",
1063
- "timestamp": "2026-03-20T10:14:37.000Z",
1064
- "prdPhase": "PRD3"
1065
- },
1066
- {
1067
- "type": "task",
1068
- "title": "TASK-21: Add skeleton screens for perceived performance",
1069
- "timestamp": "2026-03-20T10:14:52.000Z",
1070
- "prdPhase": "PRD3"
1071
- },
1072
- {
1073
- "type": "task-done",
1074
- "title": "TASK-21: Add skeleton screens for perceived performance",
1075
- "timestamp": "2026-03-20T10:16:44.000Z",
1076
- "prdPhase": "PRD3"
1077
- },
1078
- {
1079
- "type": "task",
1080
- "title": "TASK-22: Final full build and smoke test",
1081
- "timestamp": "2026-03-20T10:17:00.000Z",
1082
- "prdPhase": "PRD3"
1083
- },
1084
- {
1085
- "type": "task-done",
1086
- "title": "TASK-22: Final full build and smoke test",
1087
- "timestamp": "2026-03-20T10:17:55.000Z",
1088
- "prdPhase": "PRD3"
1089
- },
1090
- {
1091
- "type": "review",
1092
- "title": "REV-05: pass",
1093
- "timestamp": "2026-03-20T10:18:08.000Z",
1094
- "prdPhase": "PRD3"
1095
- },
1096
- {
1097
- "type": "workflow-completed",
1098
- "title": "Workflow completed",
1099
- "timestamp": "2026-03-20T10:18:20.000Z",
1100
- "prdPhase": "PRD3"
1101
- }
1102
- ],
1103
- "workflow": [
1104
- {
1105
- "stage": "Requirement Ingestion",
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": "Requirement Analysis",
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": "Code Generation",
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": "Code Generation",
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": "Bug Fixes",
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 completed 22 tasks in 1.6h. Equivalent manual work estimated at 3 person-days — ~12x efficiency gain",
1155
- "source": "auto",
1156
- "createdAt": "2026-03-20T10:18:32.000Z"
1157
- },
1158
- {
1159
- "content": "6 deviations sedimented as project rules covering filter state, color tokens, date timezone — zero recurrence in subsequent PRDs",
1160
- "source": "manual",
1161
- "createdAt": "2026-03-20T10:18:42.000Z"
1162
- },
1163
- {
1164
- "content": "Self-review first-pass rate 80%. Revenue chart issues (contrast + empty state) detected and fixed in under 3 minutes",
1165
- "source": "auto",
1166
- "createdAt": "2026-03-20T10:18:52.000Z"
1167
- }
1168
- ]
1169
- }