@educa-corp/sdd-framework 0.2.4 → 0.2.6

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 (152) hide show
  1. package/commands/generate-architecture.md +706 -0
  2. package/commands/generate-architecture.tmpl +194 -0
  3. package/commands/generate-code.md +35 -9
  4. package/commands/generate-code.tmpl +35 -9
  5. package/commands/generate-tech-docs.md +259 -246
  6. package/commands/generate-tech-docs.tmpl +21 -0
  7. package/core/FRAMEWORK_VERSION +1 -1
  8. package/core/commands/generate-architecture.md +706 -0
  9. package/core/commands/generate-code.md +35 -9
  10. package/core/commands/generate-tech-docs.md +259 -246
  11. package/core/skills/setup-ai-first/SKILL.md +12 -4
  12. package/core/templates/architecture.template.md +392 -111
  13. package/core/templates/tech-design.template.md +238 -246
  14. package/docs/01-getting-started/installation.md +47 -112
  15. package/docs/01-getting-started/quickstart.md +58 -72
  16. package/docs/01-getting-started/what-is-sdd.md +75 -0
  17. package/docs/02-concepts/architecture.md +109 -0
  18. package/docs/02-concepts/glossary.md +87 -0
  19. package/docs/02-concepts/overview.md +93 -0
  20. package/docs/02-concepts/pipeline-steps/00-setup.md +102 -0
  21. package/docs/02-concepts/pipeline-steps/01-discovery.md +129 -0
  22. package/docs/02-concepts/pipeline-steps/02-specification.md +130 -0
  23. package/docs/02-concepts/pipeline-steps/03-design-spec.md +90 -0
  24. package/docs/02-concepts/pipeline-steps/04-bdd.md +120 -0
  25. package/docs/02-concepts/pipeline-steps/05-tech-docs.md +101 -0
  26. package/docs/02-concepts/pipeline-steps/06-code.md +119 -0
  27. package/docs/02-concepts/pipeline-steps/07-dev-selftest.md +92 -0
  28. package/docs/02-concepts/pipeline-steps/08-qc-automation.md +102 -0
  29. package/docs/02-concepts/pipeline-steps/09-validate-traces.md +104 -0
  30. package/docs/02-concepts/pipeline-steps/10-feedback-loop.md +105 -0
  31. package/docs/02-concepts/pipeline-steps/README.md +92 -0
  32. package/docs/02-concepts/roles-and-hitl.md +73 -0
  33. package/docs/02-concepts/traceability.md +94 -0
  34. package/docs/03-guides/architect.md +98 -0
  35. package/docs/03-guides/developer.md +76 -0
  36. package/docs/03-guides/product-owner.md +68 -0
  37. package/docs/03-guides/tester-qa.md +70 -0
  38. package/docs/04-reference/commands.md +105 -0
  39. package/docs/04-reference/configuration.md +94 -0
  40. package/docs/04-reference/model-selection.md +68 -0
  41. package/docs/04-reference/modules.md +74 -0
  42. package/docs/04-reference/trace-schema.md +93 -0
  43. package/docs/README.md +29 -40
  44. package/docs/explain/00-setup-ai-first.md +77 -0
  45. package/docs/explain/00b-generate-architecture.md +76 -0
  46. package/docs/explain/01-define-product.md +79 -0
  47. package/docs/explain/02-generate-prd.md +78 -0
  48. package/docs/explain/03-refine-prd.md +86 -0
  49. package/docs/explain/04-review-context.md +100 -0
  50. package/docs/explain/05-generate-design-spec.md +73 -0
  51. package/docs/explain/06-generate-bdd.md +77 -0
  52. package/docs/explain/07-generate-tech-docs.md +71 -0
  53. package/docs/explain/08-review-tech-docs.md +79 -0
  54. package/docs/explain/09-generate-code.md +78 -0
  55. package/docs/explain/10-review-code.md +70 -0
  56. package/docs/explain/11-map-testids.md +69 -0
  57. package/docs/explain/12-dev-gen-test.md +66 -0
  58. package/docs/explain/13-dev-run-test.md +69 -0
  59. package/docs/explain/14-dev-smoke-test.md +67 -0
  60. package/docs/explain/15-qc-analyze.md +68 -0
  61. package/docs/explain/16-qc-plan.md +61 -0
  62. package/docs/explain/17-qc-design-test.md +61 -0
  63. package/docs/explain/18-qc-review.md +59 -0
  64. package/docs/explain/19-qc-run-test.md +67 -0
  65. package/docs/explain/20-qc-report.md +61 -0
  66. package/docs/explain/21-validate-traces.md +68 -0
  67. package/docs/explain/22-generate-spec-manifest.md +60 -0
  68. package/docs/explain/23-fix-bug.md +69 -0
  69. package/docs/explain/24-debug.md +61 -0
  70. package/docs/explain/25-report-bug.md +65 -0
  71. package/docs/explain/26-propose-scenario.md +63 -0
  72. package/docs/explain/27-learn.md +65 -0
  73. package/docs/explain/28-sync.md +70 -0
  74. package/docs/explain/29-update-framework.md +65 -0
  75. package/docs/explain/README.md +134 -0
  76. package/package.json +1 -1
  77. package/skills/setup-ai-first/SKILL.md +12 -4
  78. package/skills/setup-ai-first/SKILL.tmpl +12 -4
  79. package/templates/architecture.template.md +392 -111
  80. package/templates/tech-design.template.md +238 -246
  81. package/docs/01-getting-started/README.md +0 -19
  82. package/docs/01-getting-started/core-concepts.md +0 -102
  83. package/docs/02-guides/README.md +0 -26
  84. package/docs/02-guides/bdd-input-checklist.md +0 -68
  85. package/docs/02-guides/developer/README.md +0 -49
  86. package/docs/02-guides/developer/bdd-and-trace.md +0 -126
  87. package/docs/02-guides/developer/commands.md +0 -76
  88. package/docs/02-guides/developer/pr-checklist.md +0 -16
  89. package/docs/02-guides/developer/scenarios.md +0 -460
  90. package/docs/02-guides/developer/workflow.md +0 -121
  91. package/docs/02-guides/prd-input-checklist.md +0 -94
  92. package/docs/02-guides/product-owner/README.md +0 -81
  93. package/docs/02-guides/product-owner/commands.md +0 -30
  94. package/docs/02-guides/product-owner/handoff-checklist.md +0 -42
  95. package/docs/02-guides/product-owner/prd-writing-rules.md +0 -45
  96. package/docs/02-guides/product-owner/scenarios.md +0 -438
  97. package/docs/02-guides/tech-docs-input-checklist.md +0 -109
  98. package/docs/02-guides/tester/README.md +0 -75
  99. package/docs/02-guides/tester/bug-reporting.md +0 -117
  100. package/docs/02-guides/tester/qc-automation.md +0 -165
  101. package/docs/02-guides/tester/reading-specs.md +0 -79
  102. package/docs/02-guides/tester/scenarios.md +0 -186
  103. package/docs/02-guides/tester/spec-manifest.md +0 -130
  104. package/docs/02-guides/tester/test-checklist.md +0 -31
  105. package/docs/02-guides/tester/workflow.md +0 -77
  106. package/docs/03-concepts/README.md +0 -20
  107. package/docs/03-concepts/architecture.md +0 -248
  108. package/docs/03-concepts/mechanisms-explained.md +0 -124
  109. package/docs/03-concepts/pipeline.md +0 -278
  110. package/docs/03-concepts/traceability.md +0 -152
  111. package/docs/04-operations/README.md +0 -33
  112. package/docs/04-operations/bug-flow.md +0 -364
  113. package/docs/04-operations/publishing.md +0 -154
  114. package/docs/04-operations/sync-and-update.md +0 -522
  115. package/docs/05-reference/README.md +0 -34
  116. package/docs/05-reference/command-cheatsheet.md +0 -147
  117. package/docs/05-reference/commands.md +0 -234
  118. package/docs/05-reference/model-selection.md +0 -74
  119. package/docs/05-reference/modules.md +0 -110
  120. package/docs/05-reference/trace-schema.md +0 -154
  121. package/docs/06-commands/README.md +0 -75
  122. package/docs/06-commands/explain-debug.md +0 -32
  123. package/docs/06-commands/explain-define-product.md +0 -43
  124. package/docs/06-commands/explain-dev-gen-test.md +0 -28
  125. package/docs/06-commands/explain-dev-run-test.md +0 -24
  126. package/docs/06-commands/explain-dev-smoke-test.md +0 -25
  127. package/docs/06-commands/explain-fix-bug.md +0 -28
  128. package/docs/06-commands/explain-generate-bdd.md +0 -45
  129. package/docs/06-commands/explain-generate-code.md +0 -53
  130. package/docs/06-commands/explain-generate-design-spec.md +0 -54
  131. package/docs/06-commands/explain-generate-prd.md +0 -45
  132. package/docs/06-commands/explain-generate-spec-manifest.md +0 -20
  133. package/docs/06-commands/explain-generate-tech-docs.md +0 -56
  134. package/docs/06-commands/explain-learn.md +0 -21
  135. package/docs/06-commands/explain-map-testids.md +0 -28
  136. package/docs/06-commands/explain-propose-scenario.md +0 -24
  137. package/docs/06-commands/explain-qc-analyze.md +0 -22
  138. package/docs/06-commands/explain-qc-design-test.md +0 -20
  139. package/docs/06-commands/explain-qc-plan.md +0 -21
  140. package/docs/06-commands/explain-qc-report.md +0 -23
  141. package/docs/06-commands/explain-qc-review.md +0 -24
  142. package/docs/06-commands/explain-qc-run-test.md +0 -27
  143. package/docs/06-commands/explain-refine-prd.md +0 -51
  144. package/docs/06-commands/explain-report-bug.md +0 -24
  145. package/docs/06-commands/explain-review-code.md +0 -45
  146. package/docs/06-commands/explain-review-context.md +0 -68
  147. package/docs/06-commands/explain-review-tech-docs.md +0 -45
  148. package/docs/06-commands/explain-setup-ai-first.md +0 -25
  149. package/docs/06-commands/explain-sync.md +0 -24
  150. package/docs/06-commands/explain-update-framework.md +0 -22
  151. package/docs/06-commands/explain-validate-traces.md +0 -25
  152. package/docs/t-sample.md +0 -826
@@ -1,460 +0,0 @@
1
- [📚 Docs](../../README.md) › [Guides](../README.md) › [Developer](README.md) › Tình huống thực tế
2
-
3
- # Tình Huống Thực Tế
4
-
5
- - [1. Nhận PRD + BDD mới và bắt đầu work](#tình-huống-1-nhận-prd--bdd-mới-và-bắt-đầu-work)
6
- - [2. Đọc và hiểu System BDD (BE dev)](#tình-huống-2-đọc-và-hiểu-system-bdd-be-dev)
7
- - [3. Đọc Web/App BDD (FE/App dev)](#tình-huống-3-đọc-webapp-bdd-feapp-dev)
8
- - [4. PRD thay đổi mid-sprint](#tình-huống-4-prd-thay-đổi-mid-sprint)
9
- - [4b. Chờ API design — BE + FE/App đồng thuận](#tình-huống-4b-chờ-api-design--be--feapp-đồng-thuận)
10
- - [5. Nhận bug report từ Tester](#tình-huống-5-nhận-bug-report-từ-tester)
11
- - [6. Nhận Design Spec + BDD từ PO (FE/App)](#tình-huống-6-nhận-design-spec--bdd-từ-po-feapp)
12
- - [7b. Brownfield — API đã tồn tại](#tình-huống-7b-brownfield--api-đã-tồn-tại-trên-hệ-thống-cũ)
13
- - [7. Setup service submodule (Umbrella)](#tình-huống-7-setup-service-submodule-umbrella-mode)
14
- - [8. Validate traces trước khi tạo PR lớn](#tình-huống-8-validate-traces-trước-khi-tạo-pr-lớn)
15
-
16
- ## Tình huống 1: Nhận PRD + BDD mới và bắt đầu work
17
-
18
- **Bối cảnh:** PO thông báo PRD `FT-042-checkout.md` và BDD đã approved, sẵn sàng implement.
19
- ```
20
- 1. git submodule update --remote my-project-specs
21
- (lấy PRD + BDD mới nhất từ PO)
22
-
23
- 2. /review-context my-project-specs/specs/payment/checkout/{TICKET-ID}-checkout.md
24
- → Kiểm tra Status = approved (bảng Metadata PRD; không code khi còn draft)
25
- → Đọc kỹ AC, UC, BR
26
-
27
- 3. Đọc BDD tương ứng theo platform của mình:
28
- FE/Web: my-project-specs/specs/payment/checkout/bdd/web/FT-042-UC*.feature
29
- App: my-project-specs/specs/payment/checkout/bdd/app/FT-042-UC*.feature
30
- BE: my-project-specs/specs/payment/checkout/bdd/system/FT-042-UC*.feature
31
-
32
- 4. Nếu có thắc mắc về PRD hoặc BDD → hỏi PO ngay, không tự suy diễn
33
- Ví dụ: "BR5 trong System BDD nói 'kiểm tra giới hạn thanh toán' — limit này
34
- có khác nhau theo tier user không? BDD không chỉ rõ."
35
-
36
- 5. Bắt đầu: /generate-tech-docs dựa trên BDD
37
- ```
38
- **Lưu ý:** Nếu `/review-context` báo P0 warning (domain không match config) → **dừng lại**, báo PO/DevOps fix config trước.
39
-
40
- ## Tình huống 2: Đọc và hiểu System BDD (BE dev)
41
-
42
- **Bối cảnh:** BE dev nhận thông báo BDD đã sẵn sàng tại `specs/auth/login/bdd/system/`.
43
-
44
- **System BDD tập trung vào:** API contracts được tổng hợp từ FE + App BDD · Business rule enforcement tại system level · Data contracts (request/response shape) · Cross-platform consistency.
45
- ```
46
- # Đọc file BDD (không generate):
47
- my-project-specs/specs/auth/login/bdd/system/FT-001-UC1-login-system.feature
48
- ```
49
- ```gherkin
50
- # Ví dụ System BDD do PO gen (tổng hợp từ web + app BDD)
51
- Feature: User Authentication — System Contract
52
- # @trace.prd: FT-001
53
- # @trace.platform: system
54
-
55
- Scenario: Successful login returns token and profile
56
- Given a registered user with valid credentials
57
- When the system receives a login request
58
- Then the system returns an auth token
59
- And the system returns the user profile
60
- And the session is valid for 3600 seconds
61
-
62
- Scenario: Account locked after 5 failed attempts
63
- Given a user with 4 failed login attempts
64
- When the system receives a 5th failed login
65
- Then the system locks the account for 30 minutes
66
- And the system signals the locked state with remaining time
67
- ```
68
- BE dev dùng System BDD để: thiết kế API endpoint + response schema (`/generate-tech-docs`) · generate code skeleton (`/generate-code`) · viết integration tests (`/dev-gen-test`).
69
-
70
- > **Đọc annotation `@system.resolution:` ở header (nếu có).** Khi web & app kỳ vọng response khác nhau, PO đã chốt cách giải quyết lúc gen System BDD — build contract đúng kiểu đó, **đừng tự đổi**:
71
- > - `union` → trả tất cả field cho mọi client (`{ token, redirect_url, user_profile }`).
72
- > - `platform-hint` → đọc header `X-Platform: web|app`, tailor response (System BDD dùng `Scenario Outline` + Examples).
73
- > - `separate-endpoints` → mỗi platform một endpoint (`/auth/login/web` · `/auth/login/app`).
74
- >
75
- > Thấy resolution bất hợp lý, hoặc cần field chưa có trong contract → phản hồi PO (contract decision), đừng sửa System BDD trực tiếp. Bối cảnh: [PO › Tình huống 12](../product-owner/scenarios.md#tình-huống-12--system-bdd-synthesis-outside-in--xử-lý-cross-platform-conflict).
76
-
77
- ## Tình huống 3: Đọc Web/App BDD (FE/App dev)
78
-
79
- **Bối cảnh:** FE dev nhận thông báo BDD web đã sẵn sàng tại `specs/auth/login/bdd/web/`.
80
- ```
81
- # Đọc file BDD (không generate):
82
- my-project-specs/specs/auth/login/bdd/web/FT-001-UC1-login-web.feature
83
- ```
84
- ```gherkin
85
- # Ví dụ Web BDD do PO gen (vocabulary: clicks, sees, navigates)
86
- Scenario: User sees error after wrong password
87
- Given user is on the Login screen
88
- When user submits login with wrong password
89
- Then user sees "Sai mật khẩu" error
90
- And the password field is cleared
91
-
92
- Scenario: Account locked — countdown shown
93
- Given user has submitted wrong password 5 times
94
- Then user sees "Tài khoản bị khoá. Thử lại sau 29:45"
95
- And the countdown decrements every second
96
- ```
97
- FE dev dùng Web BDD để:
98
- 1. Thiết kế component spec + API integration plan (`/generate-tech-docs`)
99
- 2. Gen UI + mock adapter (`/generate-code --phase=ui`) — mock **shape** từ BE contract nếu có, else System BDD + warn → Mock adapter trả về fixture data đúng với BDD `Then` clauses → Tester test toàn bộ FE flow ngay, không cần chờ BE
100
- 3. [Trong khi đó — tham gia review API contract, sign-off T7 gate]
101
- 4. Khi sign-off done → wire real API (`/generate-code --phase=integration`)
102
- 5. Viết E2E tests với Playwright/Cypress (`/dev-gen-test`)
103
-
104
- ## Tình huống 4: PRD thay đổi mid-sprint
105
-
106
- **Bối cảnh:** PO update PRD `FT-042` từ v1.0 → v1.1 khi dev đang code.
107
- ```
108
- PO notify: "FT-042 updated — BR7 thay đổi giới hạn từ 5tr → 10tr"
109
-
110
-
111
- Dev chạy:
112
- /review-context specs/payment/checkout/{TICKET-ID}-checkout.md
113
- → Xem diff từ v1.0 sang v1.1 (agent highlight thay đổi)
114
-
115
-
116
- Đánh giá impact:
117
- - BDD bị ảnh hưởng? → thông báo PO để PO update BDD trong spec repo, rồi pull lại
118
- - Tech Docs bị ảnh hưởng? → update API spec
119
- - Code bị ảnh hưởng? → update logic + tests
120
-
121
-
122
- /validate-traces
123
- → Đảm bảo không có trace nào còn trỏ về spec cũ
124
- ```
125
- **Nguyên tắc:** Không merge code khi traces broken. Fix traces trước.
126
-
127
- ## Tình huống 4b: Chờ API design — BE + FE/App đồng thuận
128
-
129
- **Bối cảnh:** System BDD đã gen, BE dev bắt đầu `/generate-tech-docs` nhưng FE/App chưa confirm API contract. **Trạng thái tech docs trong thời gian này:** `@trace.status: in-review`.
130
- ```
131
- BE dev: /generate-tech-docs auth/bdd/system/FT-001-UC1.feature # trỏ System BDD → phần backend
132
- # Umbrella mode (có spec_source): output nằm trong SPEC REPO chung
133
- → Output: free-trial-specs/specs/auth/login/tech-docs/FT-001-tech-design.md (1 doc/PRD)
134
- # Single-service (không có spec_source): output nằm tại project root
135
- → Output: specs/auth/login/tech-docs/FT-001-tech-design.md
136
- → @trace.status: draft
137
- → @trace.sign_off: { be_team: done, fe_team: pending, app_team: pending, sa: pending }
138
- → Publish: commit + push file lên spec repo (2-layer) để FE/App `/sync` đọc được
139
-
140
- BE dev: /review-tech-docs free-trial-specs/specs/auth/login/tech-docs/FT-001-tech-design.md
141
- → Chạy T1–T7 (bao gồm T7 cross-team contract check)
142
- → Report: "Sign-off gate: 🔒 BLOCKED — pending: fe_team, app_team, sa"
143
- ```
144
- **FE dev review API contract:**
145
- ```
146
- # FE dev mở tech-design file → xem API contract section
147
- # Xác nhận: response fields có đủ cho web BDD expectations không?
148
- # Nếu ok → thêm comment hoặc báo BE dev cập nhật sign_off
149
- ```
150
- Khi FE/App confirm xong → BE dev update header:
151
- ```yaml
152
- # @trace.sign_off:
153
- # be_team: done
154
- # fe_team: done ← FE đã confirm
155
- # app_team: done ← App đã confirm
156
- # sa: done ← SA đã approve
157
- ```
158
- ```
159
- BE dev: /review-tech-docs --resume {tech-design-file}
160
- → Sign-off gate: ✅ READY
161
- → @trace.status: approved
162
- → BE có thể chạy /generate-code
163
- → FE chạy /generate-code --phase=integration để wire API thật
164
- ```
165
- ```
166
- # FE — sau khi sign-off gate approved:
167
- /generate-code --phase=integration auth/FT-001-UC1
168
- → Reads existing mock adapter interface ({UC-ID}ApiPort)
169
- → Generates real API adapter với calls đến endpoints trong tech-doc
170
- → Flips DI/env flag: service dùng real adapter thay mock
171
- → Mock adapter giữ lại cho unit test
172
- ```
173
- **Nguyên tắc:**
174
- - `/generate-code` (không phase flag) cho BE trả về warning nếu tech docs status là `in-review` hoặc `draft`.
175
- - FE dùng `--phase=ui` được ngay sau khi đọc BDD — không cần chờ.
176
- - FE dùng `--phase=integration` chỉ sau khi sign-off gate `approved`.
177
-
178
- ## Tình huống 5: Nhận bug report từ Tester
179
-
180
- **Bối cảnh:** Tester gửi bug report theo đúng format spec-driven, có đầy đủ spec context.
181
- ```
182
- Bug ID : BUG-20260605-003
183
- Feature : FT-001 — User Login
184
- Service : BE
185
- Severity : Major
186
-
187
- Spec context:
188
- PRD : specs/auth/login/{TICKET-ID}-login.md (v1.0)
189
- BDD : free-trial-specs/specs/auth/login/bdd/system/FT-001-login.feature
190
- → Scenario: "Lock account after 5 failed attempts"
191
- Tech Doc : free-trial-specs/specs/auth/login/tech-docs/FT-001-auth-api.md
192
-
193
- AC bị vi phạm:
194
- AC3: "Sai password 5 lần liên tiếp → khoá tài khoản 30 phút"
195
-
196
- BDD Scenario bị fail:
197
- Given : user has 0 failed attempts
198
- When : login with wrong password 5 times
199
- Then : 5th attempt returns 423 Locked AND retry_after = 1800
200
-
201
- Actual: 5th attempt trả 401, không có retry_after, tài khoản không bị khoá
202
- ```
203
-
204
- **Bước 1 — Tìm code implement scenario bị fail:**
205
- ```
206
- Đọc theo thứ tự: PRD → BDD → Code
207
-
208
- PRD AC3: "5 lần sai → khoá 30 phút" → rõ ràng ✅
209
- BDD SC3: "Then 423 Locked, retry_after=1800" → đúng theo PRD ✅
210
- Code: ??? → kiểm tra tiếp
211
- ```
212
- Chạy:
213
- ```
214
- /fix-bug "BUG-20260605-003: FT-001-UC2-BR3 — account not locked after 5 failures
215
- PRD: specs/auth/login/{TICKET-ID}-login.md
216
- BDD: free-trial-specs/specs/auth/login/bdd/system/FT-001-login.feature"
217
- ```
218
- Agent sẽ: đọc BDD scenario được chỉ định · tìm code implement scenario đó (theo `@trace.bdd`) · so sánh logic thực tế vs spec · propose fix có giải thích.
219
-
220
- **Bước 2 — Xác định bug thuộc layer nào:** Đọc theo thứ tự PRD → BDD → Code để tìm chỗ lệch. Có 3 khả năng:
221
-
222
- | PRD | BDD | Code | → Fix ở đâu |
223
- |---|---|---|---|
224
- | ✅ rõ | ✅ đúng | ❌ sai | Fix code |
225
- | ✅ rõ | ❌ sai | ❌ sai | Fix BDD + code |
226
- | ❌ mơ hồ | bất kỳ | bất kỳ | Hỏi PO trước, không tự fix |
227
-
228
- > Flow đầy đủ cho cả 6 cases (bao gồm PRD change, Design Spec bug, env bug) và cách phối hợp với PO/Tester: xem [Operations › Bug Flow](../../04-operations/bug-flow.md).
229
-
230
- **Bước 3 — Sau khi fix:**
231
- ```
232
- /validate-traces
233
- → Đảm bảo @trace.bdd trong code vẫn trỏ đúng BDD scenario
234
- → Không có trace broken
235
-
236
- /dev-run-test
237
- → BDD pass = fix đúng theo spec
238
-
239
- Notify tester:
240
- "BUG-20260605-003 fixed — deploy to staging [link commit/PR]
241
- Root cause: Case A — code dùng > thay vì >=
242
- BDD: không đổi (spec đã đúng)
243
- Re-test: FT-001-UC2-SC3"
244
- ```
245
-
246
- ## Tình huống 6: Nhận Design Spec + BDD từ PO (FE/App)
247
-
248
- **Bối cảnh:** PO tạo Design Spec + BDD web cho tính năng checkout — FE cần implement.
249
- ```
250
- PO thông báo: "FT-042 Design Spec + BDD đã sẵn sàng"
251
-
252
-
253
- git submodule update --remote my-project-specs
254
-
255
- FE dev đọc:
256
- - my-project-specs/specs/payment/checkout/{TICKET-ID}-checkout.md (business rules)
257
- - my-project-specs/specs/payment/checkout/design-spec/FT-042-*.md (screens, components)
258
- - my-project-specs/specs/payment/checkout/bdd/web/FT-042-UC*.feature (BDD đã gen sẵn)
259
-
260
-
261
- Bật Figma Dev Mode MCP (nếu dùng Figma — để FE codegen chính xác):
262
- → Mở Figma DESKTOP app + enable Dev Mode MCP server (local, http://127.0.0.1:3845)
263
- → `/generate-code` (FE/App UI) tự detect server local + prompt nếu chưa bật
264
- → Dùng real tokens, components, Code Connect thay vì web link → codegen sát design hơn
265
-
266
-
267
- /generate-tech-docs payment/FT-042-UC1
268
- → Gen component spec, API integration plan dựa trên Design Spec + BDD
269
-
270
-
271
- /generate-code payment/FT-042-UC1 --phase=ui
272
- → Gen UI components + mock API adapter (fixture từ System BDD Then clauses)
273
- → FE codegen đọc Figma Dev Mode MCP local nếu đang bật (tokens/components/Code Connect)
274
- → Tester có thể test FE ngay
275
- │ [trong khi đó: tham gia review API contract — T7 sign-off gate]
276
-
277
- [Nhận thông báo: sign-off gate approved]
278
-
279
-
280
- /generate-code payment/FT-042-UC1 --phase=integration
281
- → Wire real API adapter thay thế mock
282
- → /dev-gen-test payment/FT-042-UC1
283
- → /review-code {files-changed}
284
- → /dev-run-test
285
- ```
286
- **Lưu ý:** BE không cần đọc Design Spec — chỉ đọc System BDD tại `specs/{domain}/{prd-slug}/bdd/system/`.
287
-
288
- ## Tình huống 7b: Brownfield — API đã tồn tại trên hệ thống cũ
289
-
290
- **Bối cảnh:** PO viết PRD cho feature mới nhưng BE API đã có sẵn trên hệ thống cũ, chưa có tài liệu. PO khai báo luôn trong PRD thay vì thiết kế lại.
291
-
292
- **Dấu hiệu nhận ra:** PRD Metadata có `| **API Source** | existing |` · PRD có section "Existing API Contract" với bảng endpoint + response.
293
-
294
- **Dev workflow (đơn giản hơn greenfield):**
295
- ```
296
- git submodule update --remote my-project-specs
297
-
298
- 1. /review-context → đọc PRD + BDD
299
- → BDD system đã dùng contract sẵn có từ PRD (không synthesis)
300
- → @trace.api_source: existing trong BDD header
301
-
302
- 2. /generate-tech-docs {feature-file}
303
- → Mode: Reverse-document
304
- → §2 API Endpoints: mô tả lại API đã tồn tại từ bảng PRD
305
- → Ghi chú gaps nếu contract thực tế khác BDD expectations
306
-
307
- 3. /review-tech-docs {tech-design-file}
308
- → T7 sign-off gate: tự động SKIP (không có API design mới)
309
- → Chỉ review T1–T6 (architecture, entity, BDD traceability, ...)
310
- → Approved nhanh hơn
311
-
312
- 4. /generate-code {feature-file} ← không cần --phase
313
- → API đã live, gen real adapter trực tiếp
314
- ```
315
-
316
- **Điểm khác biệt so với greenfield:**
317
-
318
- | | Greenfield | Brownfield (API existing) |
319
- |---|---|---|
320
- | System BDD | Synthesize từ FE + App BDD | Dùng PRD contract trực tiếp |
321
- | T7 gate | Bắt buộc | Tự động skip |
322
- | `--phase=ui` | Cần nếu BE chưa ready | Không cần |
323
- | `generate-tech-docs` | Design mới | Reverse-document |
324
-
325
- ## Tình huống 7: Setup service submodule (Umbrella mode)
326
-
327
- **Bối cảnh:** Project dùng umbrella repo. Dev được assign vào service `mass-product-be`.
328
-
329
- **Setup lần đầu:**
330
- ```bash
331
- # 1. Clone umbrella repo
332
- git clone {umbrella-repo-url} mass-product
333
- cd mass-product
334
-
335
- # 2. Mở Claude Code TẠI umbrella root (QUAN TRỌNG)
336
- code . ← hoặc claude .
337
-
338
- # 3. Chạy một lệnh duy nhất — setup toàn bộ
339
- /sync
340
- # → tự detect setup mode (submodule chưa init)
341
- # → git pull + git submodule update --init --recursive --remote
342
- # → validate service configs (cảnh báo nếu thiếu .agent/project-context.yaml)
343
- # → sync Living Docs panel
344
-
345
- # 4. Framework tự detect umbrella mode từ project-context.yaml
346
- # Khi chạy /review-context với PRD có Domain: be (bảng Metadata)
347
- # → CODE route tới mass-product-be/ · BDD đọc từ spec repo mass-product-spec/specs/{domain}/{prd-slug}/bdd/ (spec_source set)
348
- ```
349
-
350
- **Update hằng ngày — cũng chỉ 1 lệnh:**
351
- ```bash
352
- /sync
353
- # → git pull + submodule update --remote
354
- # → refresh Living Docs
355
- ```
356
-
357
- **project-context.yaml của umbrella:**
358
- ```yaml
359
- setup:
360
- mode: umbrella
361
- spec_source: "mass-product-spec"
362
- services:
363
- be:
364
- path: "mass-product-be"
365
- module: "NestJS"
366
- # specs_dir KHÔNG khai khi spec_source set — BDD đọc từ spec repo, không per-service
367
- web:
368
- path: "mass-product-web"
369
- module: "NextJS"
370
- ```
371
-
372
- > **BDD (specs_dir):** không khai trong `services` khi có `spec_source`. Tất cả BDD (web/app/system) nằm ở `{spec_source}/specs/bdd` (vd `mass-product-spec/specs/bdd`) — context-loader tự route `specs_dir` về đó; mọi `specs_dir` per-service đều bị **bỏ qua**. Per-service `specs_dir` **chỉ** dùng khi KHÔNG có `spec_source`.
373
- >
374
- > **Tech-docs (API contract):** không khai trong `services`. Khi `setup.spec_source` được set, BE tech-design (API contract) **LUÔN** nằm tại `{spec_source}/specs/tech-docs` (vd `mass-product-spec/specs/tech-docs`) — context-loader tự route `tech_docs_dir` về đó. BE generate xong → commit + push lên spec repo; FE/App đọc qua `/sync` + `/generate-code --phase=integration`. Per-service tech-docs **chỉ** khi KHÔNG có `spec_source`.
375
- >
376
- > **Bắt buộc:** Mỗi service submodule cũng cần file `.agent/project-context.yaml` riêng. Framework đọc file này (context-loader Step 1.6) để lấy đúng `test_command` và `build_command` khi `/dev-run-test` hoặc `/dev-gen-test` chạy từ umbrella root.
377
-
378
- **project-context.yaml của từng service submodule:**
379
- ```yaml
380
- # mass-product-be/.agent/project-context.yaml
381
- tech_stack:
382
- language: "TypeScript"
383
- framework: "NestJS"
384
- module: "nestjs"
385
-
386
- conventions:
387
- test_command: "npm test"
388
- build_command: "npm run build"
389
-
390
- paths:
391
- trace_dir: ".trace"
392
- ```
393
- ```yaml
394
- # mass-product-web/.agent/project-context.yaml
395
- tech_stack:
396
- language: "TypeScript"
397
- framework: "Next.js 14"
398
- module: "nextjs"
399
-
400
- conventions:
401
- test_command: "npx vitest run"
402
- build_command: "npm run build"
403
-
404
- paths:
405
- trace_dir: ".trace"
406
- ```
407
-
408
- Khi `/dev-run-test` chạy từ umbrella root cho một UC thuộc domain `be`:
409
- 1. Step 1.5 detect `service_root = "mass-product-be"`
410
- 2. Step 1.6 load `mass-product-be/.agent/project-context.yaml` → `test_command = "npm test"`
411
- 3. Lệnh test chạy: `cd mass-product-be && npm test`
412
-
413
- **BDD + trace ở spec repo (1 tầng); code ở service (2 tầng):**
414
- ```bash
415
- # BDD (.feature) + trace (.tsv) → SPEC repo (1 tầng — khi spec_source set)
416
- cd mass-product-specs
417
- git add specs/auth/login/bdd/FT-001-login.feature .trace/auth/login/FT-001.tsv
418
- git commit -m "feat(bdd): add login BDD scenarios — FT-001"
419
- git push
420
-
421
- # Code → service submodule (commit 2 lớp)
422
- cd ../mass-product-be
423
- git add src/
424
- git commit -m "feat(FT-001): login implementation"
425
- git push origin feature/ft-001-login
426
- cd .. ← về umbrella root
427
- git add mass-product-be
428
- git commit -m "chore: update mass-product-be submodule pointer — FT-001"
429
- git push
430
- ```
431
- **Không commit lớp 2 (pointer) → umbrella repo vẫn trỏ về commit cũ của service.**
432
-
433
- ## Tình huống 8: Validate traces trước khi tạo PR lớn
434
-
435
- **Bối cảnh:** Dev refactor module Auth — đổi tên `AuthService` → `IdentityService`.
436
- ```
437
- Sau khi refactor xong:
438
-
439
- /validate-traces
440
-
441
-
442
- Agent kiểm tra:
443
- - BDD có @trace.module: AuthService → BROKEN (class không còn tồn tại)
444
- - Code comments @trace.bdd: FT-001-UC1-SC1 → còn hợp lệ không?
445
- - Tech Docs mention "AuthService" → stale reference
446
-
447
-
448
- Report:
449
- ❌ BROKEN specs/auth/login/bdd/FT-001-login.feature @trace.module: AuthService (not found)
450
- ❌ BROKEN specs/auth/login/tech-docs/FT-001-auth-api.md "AuthService" referenced 7 times
451
- ✅ OK src/identity/identity.service.ts @trace.bdd: FT-001-UC1-SC1
452
-
453
-
454
- Fix: Update @trace.module và references → re-run /validate-traces → all green → tạo PR
455
- ```
456
- **Quy tắc:** PR không được merge khi còn broken traces.
457
-
458
- ---
459
-
460
- ← [Workflow](workflow.md) · Tiếp theo: [Checklist trước khi tạo PR](pr-checklist.md)
@@ -1,121 +0,0 @@
1
- [📚 Docs](../../README.md) › [Guides](../README.md) › [Developer](README.md) › Workflow
2
-
3
- # Workflow Cơ Bản
4
-
5
- > Sơ đồ render thành flowchart trên GitHub (Mermaid). Bản text ASCII (mở mục bên dưới) là fallback cho viewer không hỗ trợ Mermaid.
6
-
7
- ```mermaid
8
- flowchart TD
9
- A([Nhận PRD + BDD mới từ PO]) --> B["/sync<br/>kéo specs + services · refresh Living Docs"]
10
- B --> C["/review-context {prd}<br/>kiểm tra domain · status=approved<br/>đọc AC / UC / BR + BDD"]
11
- C --> D["Đọc BDD web/app/system từ spec repo<br/>(dev KHÔNG tự generate BDD)"]
12
- D --> TD
13
-
14
- subgraph TD["TECH DESIGN + CODE — BE và FE làm SONG SONG"]
15
- direction LR
16
- subgraph BE["BE track (system) — trỏ System BDD → §4 API contract"]
17
- direction TB
18
- BE1["/generate-tech-docs {system}<br/>§4 API contract ← System BDD<br/>endpoint · data model · DB"] --> BE2["/review-tech-docs → approved<br/>§4 = API contract<br/>(client §4.5 map theo)"] --> BE3["/generate-code {system}<br/>code BE ← System BDD + §4"]
19
- end
20
- subgraph FE["FE/App track (web · app) — không chờ BE deploy"]
21
- direction TB
22
- FE1["① /generate-code {bdd} --phase=ui<br/>UI ← Web/App BDD + Design Spec<br/>mock ← §4 API contract (nếu có) · else System BDD<br/>emit test-id · Tester test ngay"] --> GATE{{"GATE — làm tiếp khi tech-doc<br/>đã có §4 API contract (approved)"}}
23
- GATE --> FE2["② /generate-tech-docs {web|app}<br/>append §4.5 client ← Web/App BDD<br/>§4.5.4 map API · §4.5.6 test-id"] --> FE2b["/review-tech-docs → approved<br/>(bump revision)"] --> FE3["③ /generate-code --phase=integration<br/>thay mock bằng API thật theo §4.5.4"]
24
- end
25
- BE2 -. "§4 API contract" .-> GATE
26
- end
27
-
28
- TD --> E["/dev-gen-test → /dev-run-test<br/>dev tự kiểm (dev_selftest)<br/>ghi vào spec .trace"]
29
- E --> F["/validate-traces<br/>cập nhật Living Docs (.living-docs)"]
30
- F --> G["/review-code — 4 lăng kính:<br/>Traceability · Layer · Coding Standards · Spec Compliance"]
31
- G --> H([Tạo PR → notify PO/SA review])
32
- ```
33
-
34
- > **Full-stack / không tách mock:** chỉ cần BE track — chạy `/generate-code {bdd}` một lần (bỏ qua FE 2-phase).
35
-
36
- <details>
37
- <summary>Bản text (ASCII fallback — cho viewer không render Mermaid)</summary>
38
-
39
- ```
40
- Nhận thông báo PRD + BDD mới từ PO
41
-
42
-
43
- /sync # pull specs + services + refresh Living Docs (1 lệnh, preferred)
44
- (tương đương raw: git submodule update --remote my-project-specs — lấy spec mới nhất, gồm BDD PO đã gen)
45
-
46
-
47
- /review-context {prd-file}
48
- → Kiểm tra Domain, Status = approved (bảng Metadata PRD)
49
- → Đọc hiểu AC, UC, BR trong PRD
50
- → Đọc BDD tương ứng trong specs/{domain}/{prd-slug}/bdd/{platform}/
51
- → Nếu có gì không rõ: hỏi PO TRƯỚC khi tiếp tục
52
-
53
-
54
- (Đọc BDD từ spec submodule — KHÔNG tự generate BDD)
55
- FE/Web: my-project-specs/specs/{domain}/{prd-slug}/bdd/web/{TICKET-ID}-UC*.feature
56
- App: my-project-specs/specs/{domain}/{prd-slug}/bdd/app/{TICKET-ID}-UC*.feature
57
- BE: my-project-specs/specs/{domain}/{prd-slug}/bdd/system/{TICKET-ID}-UC*.feature
58
-
59
-
60
- ══════════ TECH DESIGN + CODE — BE track & FE track CHẠY SONG SONG ══════════
61
- (/generate-tech-docs là platform-aware: đọc @trace.platform → BE = API contract · FE/App = client design)
62
-
63
- BE track (system) ── trỏ System BDD → §4 API contract ──
64
- /generate-tech-docs {system} → §4: endpoints · data model · DB · caching
65
- /review-tech-docs → APPROVED → §4 = API contract mà client §4.5 map theo
66
- /generate-code {system} → code theo BDD (@trace.bdd)
67
- (full-stack / không tách mock: chỉ cần track này — /generate-code {bdd} một lần)
68
-
69
-
70
- FE/App track (web|app) ── KHÔNG chặn chờ BE ──
71
-
72
- ① BẮT ĐẦU NGAY (song song với BE):
73
- /generate-code {bdd} --phase=ui → UI + mock adapter
74
- • UI ← Web/App BDD + Design Spec
75
- • mock shape = §4 API contract nếu có, else System BDD (+warn)
76
- • fixture values: LUÔN từ System BDD
77
- • emit test-id (convention {uc}-{screen}-{element}-{type})
78
- • Tester test FE NGAY (không cần BE deploy API)
79
-
80
- ╔═══════════════════▼═══════════ GATE ═══════════════════
81
- ║ Làm tiếp khi tech-doc đã có §4 API contract (approved)
82
- ╚═══════════════════╤════════════════════════════════════
83
-
84
- ② /generate-tech-docs {web|app} → append §4.5 client vào tech-doc gộp
85
- • components · state
86
- • §4.5.4 API-integration map THEO §4.1 endpoints
87
- • §4.5.6 Test Selectors (test-id cho element có action)
88
- /review-tech-docs → approved (bump revision)
89
-
90
- ③ /generate-code {bdd} --phase=integration
91
- → wire real API theo §4.5.4 tech-doc gộp (thay mock)
92
-
93
-
94
- /dev-gen-test {bdd-file}
95
- → Gen unit test (dev self-check, không phải coverage chính thức)
96
- → /dev-run-test để verify → ghi dev_selftest (pass/fail) + dev_selftest_at vào TSV authoritative {spec_source}/.trace (commit 1 tầng ở spec repo)
97
- → /validate-traces (hoặc /sync) → regenerate report Living Docs {spec_source}/.living-docs/ (gitignored)
98
-
99
-
100
- /review-code {files}
101
- → 4 lăng kính: Traceability / Layer Architecture / Coding Standards / Spec Compliance
102
- → Fix issues trước khi tạo PR
103
-
104
-
105
- Tạo PR → notify PO/SA review
106
- ```
107
-
108
- </details>
109
-
110
- > **Vì sao đúng thứ tự này? — Chuỗi outside-in.** Toàn bộ pipeline đi từ ngoài (client) vào trong (hệ thống):
111
- > 1. **PO gen BDD: web → app → System** — System BDD (BE) được **tổng hợp từ web+app BDD** (hành vi client định nghĩa trước, BE/system suy ra để phục vụ các flow đó). *(Project chỉ-BE: System BDD gen thẳng từ PRD.)*
112
- > 2. **BE tech-docs trước** — API contract dẫn xuất từ **System BDD**.
113
- > 3. **§4.5 client sau** — trỏ vào Web/App BDD → append §4.5 vào cùng doc; §4.5.4 map theo §4.1 endpoints (nên có §4 approved trước để khỏi rework).
114
- >
115
- > FE **không** bị chặn chờ BE nhờ `--phase=ui` (mock shape: §4 API contract nếu có, else System BDD), rồi `--phase=integration` wire API thật khi §4.5.4 đã có. Chi tiết flow: [Concepts › Pipeline](../../03-concepts/pipeline.md).
116
-
117
- > **Commit ở đâu, push mấy tầng?** Code nằm trong service submodule → **commit 2 tầng** (service rồi umbrella pointer). Tech-docs + `.trace/` (dev_selftest/qc_status) đẩy lên **spec repo** (1 tầng, cross-repo). Sơ đồ git đầy đủ theo từng role: [Sync & Update — Git flow theo role](../../04-operations/sync-and-update.md#ai-commit-vào-repo-nào-git-flow-theo-role).
118
-
119
- ---
120
-
121
- ← [BDD & Trace System](bdd-and-trace.md) · Tiếp theo: [Tình huống thực tế](scenarios.md)
@@ -1,94 +0,0 @@
1
- [📚 Docs](../README.md) › [Guides](README.md) › Checklist Input PRD
2
-
3
- # Checklist Input PRD — Để PRD Chuẩn Ngay Lần Đầu
4
-
5
- > Muốn `/generate-prd` ra PRD tốt **ngay lần đầu**, đừng trông vào `/refine-prd` để vá — hãy chuẩn bị đúng đầu vào trước.
6
-
7
- ## Hiểu trước cho đúng
8
-
9
- - **PRD sinh ra từ một file khảo sát (product-definition)** — output của `/define-product`. Bạn **không gõ thẳng** PRD.
10
- - **Không có "generate-prd cho BE" riêng.** PRD là tài liệu nghiệp vụ **dùng chung cho mọi platform** (một bản phục vụ cả FE/App/BE). Cái "system/BE" chỉ xuất hiện ở bước sau (`/generate-bdd`).
11
- - Vì vậy "PRD chuẩn ngay lần đầu" = **chuẩn bị tốt 7 thứ dưới đây trước khi chạy `/generate-prd`**.
12
-
13
- ---
14
-
15
- ## 7 câu tự hỏi trước khi bấm `/generate-prd`
16
-
17
- **1. Bản khảo sát đã làm xong chưa?**
18
- Đã chạy `/define-product` đi hết 7 bước, không bỏ dở. Máy sẽ **không cho** sinh PRD nếu còn dang dở.
19
- → *Vì PRD là tài liệu để ký duyệt — không dựng từ thứ chưa chốt.*
20
-
21
- **2. "Luật" và "cách xử lý" của tính năng đã viết rõ chưa?** *(quan trọng nhất)*
22
- Hệ thống **phải làm gì / không được làm gì** (Business Rules), và **xử lý ra sao** trong từng trường hợp (Business Logic). Viết cụ thể, đừng để câu chung chung kiểu "xử lý hợp lý".
23
- → *Đây là phần dev dựa vào để code. Mơ hồ ở đây = code sai ở đó.*
24
-
25
- **3. Đã liệt kê các trường hợp hỏng chưa?**
26
- Không chỉ lúc chạy ngon, mà cả lúc lỗi: thiếu dữ liệu, điều kiện không thoả, hai người bấm cùng lúc, service khác chết.
27
- → *Hệ thống sống nhờ xử lý đúng mấy ca lỗi này; quên là lỗ hổng.*
28
-
29
- **4. Tính năng này cần gì từ service/đội khác không?**
30
- Ghi rõ: **cần dữ liệu/khả năng gì, lấy từ ai, để làm gì**. Nếu không cần thì ghi "Không có".
31
- → *Tính năng hiếm khi đứng một mình; thiếu mục này dễ tắc giữa chừng.*
32
-
33
- **5. API của tính năng thuộc loại nào? — phải quyết trước**
34
- Chọn 1 trong 3:
35
- - **Đã có sẵn** (API chạy production rồi) → **đưa đường dẫn tới tài liệu API thật** (file swagger/openapi, link, hoặc thư mục code BE) **mà máy mở được**. Mở không được → PRD sẽ ghi "còn thiếu", chưa chuẩn.
36
- - **Tự làm mới** → để trống, thiết kế sau ở `/generate-tech-docs`.
37
- - **Đối tác đang làm song song** → chọn loại này (đừng chọn "đã có sẵn").
38
- → *Đây là chỗ quyết định độ chuẩn nhiều nhất cho tính năng BE.*
39
-
40
- **6. Mỗi tiêu chí nghiệm thu (AC) có kiểm được đúng/sai rõ ràng không?**
41
- Tránh kiểu "nhanh", "ổn". Phải đo được.
42
- → *AC mơ hồ thì sau này không ai biết tính năng "đạt" hay "chưa".*
43
-
44
- **7. Tên gọi và dữ liệu đã dùng đúng từ điển chung chưa?**
45
- Đảm bảo `business-dictionary.md` (từ chuẩn) và `core-entities.md` (danh sách thực thể/trường dữ liệu) đã cập nhật cho tính năng này.
46
- → *Gọi sai tên một bảng/trường là lệch cả chuỗi sau.*
47
-
48
- ---
49
-
50
- ## Checklist nhanh
51
-
52
- - [ ] Khảo sát `/define-product` đã xong (7 bước, không gap)
53
- - [ ] Business Rules + cách xử lý viết rõ, không mơ hồ *(đòn bẩy lớn nhất)*
54
- - [ ] Đã liệt kê đủ các ca lỗi / trường hợp hỏng
55
- - [ ] Phụ thuộc service/đội khác ghi rõ (hoặc "Không có")
56
- - [ ] Đã quyết **loại API**; nếu "đã có sẵn" → đường dẫn contract **mở được**
57
- - [ ] Mỗi AC kiểm được đúng/sai rõ ràng
58
- - [ ] Từ điển chung + danh sách thực thể đã cập nhật
59
- - [ ] Định danh đúng: Domain (khớp cấu hình service), PO, mã Ticket
60
-
61
- ---
62
-
63
- ## Riêng tính năng BE — chú ý nhất ở đâu?
64
-
65
- BE không có Design Spec / màn hình đỡ phía trước, nên **PRD chính là spec**. Hai thứ quyết định độ chuẩn:
66
-
67
- 1. **Business Rules + Business Logic (câu 2)** — vì BE đọc PRD thẳng rồi sinh System BDD từ đây.
68
- 2. **Loại API (câu 5)** — BE "đã có sẵn" mà đường dẫn contract mở không được thì PRD sẽ kẹt ở trạng thái "còn thiếu".
69
-
70
- > Tính năng BE thuần **không có màn hình** → phần Wireframe để trống/N/A là đúng; đừng để máy bịa màn hình.
71
-
72
- ---
73
-
74
- ## Sau khi sinh PRD
75
-
76
- `/refine-prd` và `/review-context` là để **nhặt sạn** (làm rõ, bắt mâu thuẫn, thêm edge case) — **không phải** để vá cái thiếu từ khâu khảo sát. Chuẩn bị tốt 7 thứ trên thì hai bước này nhẹ tênh.
77
-
78
- ---
79
-
80
- ## Map sang các bước của `/define-product` *(cho ai muốn chính xác)*
81
-
82
- | Câu hỏi | Nằm ở bước nào của discovery |
83
- |---|---|
84
- | 1. Khảo sát xong | toàn bộ Phase 1–7, `Status: completed` |
85
- | 2. Luật + cách xử lý | Phase 4 (Business Rules) + Phase 5 (Business Logic) |
86
- | 3. Ca lỗi | Phase 2 (Edge Cases) |
87
- | 4. Phụ thuộc liên service | Phase 1, câu 8 |
88
- | 5. Loại API | hỏi lúc `/generate-prd` (API Source) |
89
- | 6. AC kiểm được | Phase 6 (Acceptance Criteria) |
90
- | 7. Từ điển / thực thể | Phase 0 (Knowledge Sync) + `business-dictionary.md` / `core-entities.md` |
91
-
92
- ---
93
-
94
- ← [Guides](README.md) · Liên quan: [Checklist Input BDD (System/BE)](bdd-input-checklist.md) · [Quy tắc viết PRD](product-owner/prd-writing-rules.md) · [Checklist handoff](product-owner/handoff-checklist.md)