@educa-corp/sdd-framework 0.2.3 → 0.2.5
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.
- package/commands/generate-architecture.md +706 -0
- package/commands/generate-architecture.tmpl +194 -0
- package/commands/generate-code.md +16 -2
- package/commands/generate-code.tmpl +16 -2
- package/commands/generate-tech-docs.md +19 -0
- package/commands/generate-tech-docs.tmpl +19 -0
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/generate-architecture.md +706 -0
- package/core/commands/generate-code.md +16 -2
- package/core/commands/generate-tech-docs.md +19 -0
- package/core/skills/setup-ai-first/SKILL.md +12 -4
- package/core/templates/architecture.template.md +392 -111
- package/docs/01-getting-started/installation.md +47 -112
- package/docs/01-getting-started/quickstart.md +58 -72
- package/docs/01-getting-started/what-is-sdd.md +75 -0
- package/docs/02-concepts/architecture.md +109 -0
- package/docs/02-concepts/glossary.md +87 -0
- package/docs/02-concepts/overview.md +93 -0
- package/docs/02-concepts/pipeline-steps/00-setup.md +102 -0
- package/docs/02-concepts/pipeline-steps/01-discovery.md +129 -0
- package/docs/02-concepts/pipeline-steps/02-specification.md +130 -0
- package/docs/02-concepts/pipeline-steps/03-design-spec.md +90 -0
- package/docs/02-concepts/pipeline-steps/04-bdd.md +120 -0
- package/docs/02-concepts/pipeline-steps/05-tech-docs.md +101 -0
- package/docs/02-concepts/pipeline-steps/06-code.md +119 -0
- package/docs/02-concepts/pipeline-steps/07-dev-selftest.md +92 -0
- package/docs/02-concepts/pipeline-steps/08-qc-automation.md +102 -0
- package/docs/02-concepts/pipeline-steps/09-validate-traces.md +104 -0
- package/docs/02-concepts/pipeline-steps/10-feedback-loop.md +105 -0
- package/docs/02-concepts/pipeline-steps/README.md +92 -0
- package/docs/02-concepts/roles-and-hitl.md +73 -0
- package/docs/02-concepts/traceability.md +94 -0
- package/docs/03-guides/architect.md +98 -0
- package/docs/03-guides/developer.md +76 -0
- package/docs/03-guides/product-owner.md +68 -0
- package/docs/03-guides/tester-qa.md +70 -0
- package/docs/04-reference/commands.md +105 -0
- package/docs/04-reference/configuration.md +94 -0
- package/docs/04-reference/model-selection.md +68 -0
- package/docs/04-reference/modules.md +74 -0
- package/docs/04-reference/trace-schema.md +93 -0
- package/docs/README.md +29 -40
- package/docs/explain/00-setup-ai-first.md +77 -0
- package/docs/explain/00b-generate-architecture.md +76 -0
- package/docs/explain/01-define-product.md +79 -0
- package/docs/explain/02-generate-prd.md +78 -0
- package/docs/explain/03-refine-prd.md +86 -0
- package/docs/explain/04-review-context.md +100 -0
- package/docs/explain/05-generate-design-spec.md +73 -0
- package/docs/explain/06-generate-bdd.md +77 -0
- package/docs/explain/07-generate-tech-docs.md +71 -0
- package/docs/explain/08-review-tech-docs.md +79 -0
- package/docs/explain/09-generate-code.md +78 -0
- package/docs/explain/10-review-code.md +70 -0
- package/docs/explain/11-map-testids.md +69 -0
- package/docs/explain/12-dev-gen-test.md +66 -0
- package/docs/explain/13-dev-run-test.md +69 -0
- package/docs/explain/14-dev-smoke-test.md +67 -0
- package/docs/explain/15-qc-analyze.md +68 -0
- package/docs/explain/16-qc-plan.md +61 -0
- package/docs/explain/17-qc-design-test.md +61 -0
- package/docs/explain/18-qc-review.md +59 -0
- package/docs/explain/19-qc-run-test.md +67 -0
- package/docs/explain/20-qc-report.md +61 -0
- package/docs/explain/21-validate-traces.md +68 -0
- package/docs/explain/22-generate-spec-manifest.md +60 -0
- package/docs/explain/23-fix-bug.md +69 -0
- package/docs/explain/24-debug.md +61 -0
- package/docs/explain/25-report-bug.md +65 -0
- package/docs/explain/26-propose-scenario.md +63 -0
- package/docs/explain/27-learn.md +65 -0
- package/docs/explain/28-sync.md +70 -0
- package/docs/explain/29-update-framework.md +65 -0
- package/docs/explain/README.md +134 -0
- package/package.json +1 -1
- package/skills/setup-ai-first/SKILL.md +12 -4
- package/skills/setup-ai-first/SKILL.tmpl +12 -4
- package/templates/architecture.template.md +392 -111
- package/docs/01-getting-started/README.md +0 -19
- package/docs/01-getting-started/core-concepts.md +0 -102
- package/docs/02-guides/README.md +0 -26
- package/docs/02-guides/bdd-input-checklist.md +0 -68
- package/docs/02-guides/developer/README.md +0 -49
- package/docs/02-guides/developer/bdd-and-trace.md +0 -126
- package/docs/02-guides/developer/commands.md +0 -76
- package/docs/02-guides/developer/pr-checklist.md +0 -16
- package/docs/02-guides/developer/scenarios.md +0 -460
- package/docs/02-guides/developer/workflow.md +0 -121
- package/docs/02-guides/prd-input-checklist.md +0 -94
- package/docs/02-guides/product-owner/README.md +0 -81
- package/docs/02-guides/product-owner/commands.md +0 -30
- package/docs/02-guides/product-owner/handoff-checklist.md +0 -42
- package/docs/02-guides/product-owner/prd-writing-rules.md +0 -45
- package/docs/02-guides/product-owner/scenarios.md +0 -438
- package/docs/02-guides/tech-docs-input-checklist.md +0 -109
- package/docs/02-guides/tester/README.md +0 -75
- package/docs/02-guides/tester/bug-reporting.md +0 -117
- package/docs/02-guides/tester/qc-automation.md +0 -165
- package/docs/02-guides/tester/reading-specs.md +0 -79
- package/docs/02-guides/tester/scenarios.md +0 -186
- package/docs/02-guides/tester/spec-manifest.md +0 -130
- package/docs/02-guides/tester/test-checklist.md +0 -31
- package/docs/02-guides/tester/workflow.md +0 -77
- package/docs/03-concepts/README.md +0 -20
- package/docs/03-concepts/architecture.md +0 -248
- package/docs/03-concepts/mechanisms-explained.md +0 -124
- package/docs/03-concepts/pipeline.md +0 -278
- package/docs/03-concepts/traceability.md +0 -152
- package/docs/04-operations/README.md +0 -33
- package/docs/04-operations/bug-flow.md +0 -364
- package/docs/04-operations/publishing.md +0 -154
- package/docs/04-operations/sync-and-update.md +0 -522
- package/docs/05-reference/README.md +0 -34
- package/docs/05-reference/command-cheatsheet.md +0 -147
- package/docs/05-reference/commands.md +0 -234
- package/docs/05-reference/model-selection.md +0 -74
- package/docs/05-reference/modules.md +0 -110
- package/docs/05-reference/trace-schema.md +0 -154
- package/docs/06-commands/README.md +0 -75
- package/docs/06-commands/explain-debug.md +0 -32
- package/docs/06-commands/explain-define-product.md +0 -43
- package/docs/06-commands/explain-dev-gen-test.md +0 -28
- package/docs/06-commands/explain-dev-run-test.md +0 -24
- package/docs/06-commands/explain-dev-smoke-test.md +0 -25
- package/docs/06-commands/explain-fix-bug.md +0 -28
- package/docs/06-commands/explain-generate-bdd.md +0 -45
- package/docs/06-commands/explain-generate-code.md +0 -53
- package/docs/06-commands/explain-generate-design-spec.md +0 -54
- package/docs/06-commands/explain-generate-prd.md +0 -45
- package/docs/06-commands/explain-generate-spec-manifest.md +0 -20
- package/docs/06-commands/explain-generate-tech-docs.md +0 -56
- package/docs/06-commands/explain-learn.md +0 -21
- package/docs/06-commands/explain-map-testids.md +0 -28
- package/docs/06-commands/explain-propose-scenario.md +0 -24
- package/docs/06-commands/explain-qc-analyze.md +0 -22
- package/docs/06-commands/explain-qc-design-test.md +0 -20
- package/docs/06-commands/explain-qc-plan.md +0 -21
- package/docs/06-commands/explain-qc-report.md +0 -23
- package/docs/06-commands/explain-qc-review.md +0 -24
- package/docs/06-commands/explain-qc-run-test.md +0 -27
- package/docs/06-commands/explain-refine-prd.md +0 -51
- package/docs/06-commands/explain-report-bug.md +0 -24
- package/docs/06-commands/explain-review-code.md +0 -45
- package/docs/06-commands/explain-review-context.md +0 -68
- package/docs/06-commands/explain-review-tech-docs.md +0 -45
- package/docs/06-commands/explain-setup-ai-first.md +0 -25
- package/docs/06-commands/explain-sync.md +0 -24
- package/docs/06-commands/explain-update-framework.md +0 -22
- package/docs/06-commands/explain-validate-traces.md +0 -25
- package/docs/t-sample.md +0 -826
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
[← Concepts](../) · [← Docs Home](../../)
|
|
2
|
+
|
|
3
|
+
# ⭐ Pipeline Steps — Chi tiết từng bước (Step-by-step Reference)
|
|
4
|
+
|
|
5
|
+
Đây là phần **lõi** của tài liệu Concepts. Mỗi trang mô tả **một bước** trong pipeline theo cùng một khuôn: bạn đưa gì vào, nhận gì ra, ai làm gì, framework xử lý ra sao, và điểm dừng của con người (HITL) nằm ở đâu.
|
|
6
|
+
|
|
7
|
+
> Nếu bạn chỉ muốn nắm bức tranh lớn trước → đọc [Overview](../overview.md).
|
|
8
|
+
> Nếu bạn muốn biết **vai trò của mình** đi qua những bước nào → đọc [Guides theo vai trò](../../03-guides/).
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Bản đồ pipeline (Pipeline Map)
|
|
13
|
+
|
|
14
|
+
```mermaid
|
|
15
|
+
flowchart TD
|
|
16
|
+
S["0 · Setup<br/>/setup-ai-first"] --> D["1 · Discovery<br/>/define-product"]
|
|
17
|
+
D --> SP["2 · Specification<br/>/generate-prd · /refine-prd · /review-context"]
|
|
18
|
+
SP --> DS["3 · Design-Spec<br/>/generate-design-spec<br/><i>(chỉ FE/App)</i>"]
|
|
19
|
+
SP --> B["4 · BDD<br/>/generate-bdd · /review-context"]
|
|
20
|
+
DS --> B
|
|
21
|
+
B --> T["5 · Tech-Docs<br/>/generate-tech-docs · /review-tech-docs"]
|
|
22
|
+
T --> C["6 · Code<br/>/generate-code · /review-code"]
|
|
23
|
+
C --> DV["7 · Dev self-test<br/>/dev-gen-test · /dev-run-test · /dev-smoke-test"]
|
|
24
|
+
DV --> Q["8 · QC Automation<br/>/qc-analyze → … → /qc-report"]
|
|
25
|
+
Q --> V["9 · Validate Traces<br/>/validate-traces"]
|
|
26
|
+
V -.->|"report-bug · propose-scenario · learn"| SP
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Đặc tính bất biến:** pipeline **một chiều** — output của bước N là input của bước N+1. Mỗi bước có **gate đầu vào** (validate) và **gate đầu ra** (findings/approval). Kênh feedback ngược (bước 10) **không tạo loop** mà để cải tiến spec và tri thức dự án.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Danh sách các bước (Steps)
|
|
34
|
+
|
|
35
|
+
| # | Bước | Command chính | Owner | HITL |
|
|
36
|
+
|---|------|---------------|-------|:----:|
|
|
37
|
+
| 0 | [Setup](00-setup.md) | `/setup-ai-first` | Admin/Lead | ⚪ một lần |
|
|
38
|
+
| 1 | [Discovery](01-discovery.md) | `/define-product` | PO | 🔴 cao nhất |
|
|
39
|
+
| 2 | [Specification](02-specification.md) | `/generate-prd` · `/refine-prd` · `/review-context` | PO (+SA/Dev review) | 🔴 cao |
|
|
40
|
+
| 3 | [Design-Spec](03-design-spec.md) | `/generate-design-spec` | PO/PM | 🟠 vừa *(chỉ FE/App)* |
|
|
41
|
+
| 4 | [BDD](04-bdd.md) | `/generate-bdd` · `/review-context` | PO (+Dev) | 🔴 cao |
|
|
42
|
+
| 5 | [Tech-Docs](05-tech-docs.md) | `/generate-tech-docs` · `/review-tech-docs` | SA/Lead | 🟠 vừa |
|
|
43
|
+
| 6 | [Code](06-code.md) | `/generate-code` · `/review-code` · `/fix-bug` | Dev | 🟡 mỏng |
|
|
44
|
+
| 7 | [Dev self-test](07-dev-selftest.md) | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` | Dev | 🟡 mỏng |
|
|
45
|
+
| 8 | [QC Automation](08-qc-automation.md) | `/qc-analyze` … `/qc-report` | QA/Tester | 🟠 vừa |
|
|
46
|
+
| 9 | [Validate Traces](09-validate-traces.md) | `/validate-traces` | Dev/QA/Lead | ⚪ read-only |
|
|
47
|
+
| 10 | [Feedback Loop](10-feedback-loop.md) | `/report-bug` · `/propose-scenario` · `/learn` · `/sync` | Tester/tất cả | ⚪ |
|
|
48
|
+
|
|
49
|
+
> **HITL dày ở thượng nguồn, mỏng ở hạ nguồn** — vì sai ở PRD/BDD **nhân lên theo cấp số nhân** xuống code/test. Xem [Roles & HITL](../roles-and-hitl.md).
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Cách đọc mỗi trang (Page template)
|
|
54
|
+
|
|
55
|
+
Mọi trang bước dùng chung các mục sau:
|
|
56
|
+
|
|
57
|
+
| Mục | Trả lời câu hỏi |
|
|
58
|
+
|-----|-----------------|
|
|
59
|
+
| **Tóm tắt** | Bước này là gì trong một câu? Command nào? |
|
|
60
|
+
| **Mục đích** (Purpose) | Tại sao bước này tồn tại? Bỏ nó thì mất gì? |
|
|
61
|
+
| **Input** (Đầu vào) | Cần có gì trước khi chạy? |
|
|
62
|
+
| **Output** (Đầu ra) | Chạy xong sinh ra file/trạng thái gì? |
|
|
63
|
+
| **Ai làm gì** (Roles) | Con người và AI mỗi bên đảm nhận phần nào? |
|
|
64
|
+
| **Câu hỏi cần trả lời** | Bước này giúp đội trả lời những câu hỏi nào? |
|
|
65
|
+
| **Framework xử lý thế nào** (Mechanics) | Bên trong AI làm những gì? |
|
|
66
|
+
| **HITL / Gate** | Con người dừng ở đâu, duyệt cái gì? |
|
|
67
|
+
| **Anti-pattern** | Lỗi thường gặp cần tránh. |
|
|
68
|
+
| **Bước tiếp theo** | Đi đâu sau khi xong. |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Khung chung mọi command (Common Gate)
|
|
73
|
+
|
|
74
|
+
Trước khi chạy phần logic riêng, **mọi** `/command` đều đi qua một **Gate** giống nhau. Hiểu Gate này một lần, bạn hiểu 90% "phần đầu" của mọi lệnh — các trang bước sẽ **không lặp lại** phần này:
|
|
75
|
+
|
|
76
|
+
| Bước Gate | Làm gì | Ý nghĩa với người dùng |
|
|
77
|
+
|-----------|--------|------------------------|
|
|
78
|
+
| **0 · Sub-agent mode** | Nếu lệnh được gọi bởi orchestrator (payload JSON `_agent_mode`), bỏ qua phần hỏi-đáp và chạy đúng phạm vi được giao | Bạn không thấy trực tiếp — đây là cơ chế fan-out per-UC |
|
|
79
|
+
| **0-B · Model check** | Khuyến nghị dùng model **Opus**. `Y` = đang dùng · `S` = bỏ qua (chấp nhận rủi ro) · khác = dừng | Checkpoint **mềm** — bảo vệ chất lượng suy luận |
|
|
80
|
+
| **1 · Target file** | Xác định file mục tiêu từ `$ARGUMENTS` (path / UC-ID / ticket), hoặc liệt kê cho bạn chọn | Bạn có thể gọi lệnh không cần path — AI tự dò theo bố cục `specs/{domain}/{prd-slug}/…` |
|
|
81
|
+
| **2 · Context loader** | Nạp context (rules, project-context, CLAUDE.md, entity, spec…) theo thứ tự tối ưu | "Thủ thư" chọn đúng-đủ-gọn context. Xem [Architecture](../architecture.md) |
|
|
82
|
+
| **3 · CHECKPOINT** | Trình bày: target, phạm vi, file sẽ tạo/sửa → chờ bạn `Y` | Điểm dừng đầu tiên trước khi AI làm việc thật |
|
|
83
|
+
|
|
84
|
+
> Các lệnh **read-only** (`/review-code`, `/validate-traces`, `/debug`) bỏ qua checkpoint ghi-file.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Ký hiệu (Legend)
|
|
89
|
+
|
|
90
|
+
- 🔴 HITL cao · 🟠 vừa · 🟡 mỏng · ⚪ không/đọc-thôi
|
|
91
|
+
- 🛑 = checkpoint bắt buộc dừng · 🔒 = gate trạng thái (chặn downstream tới khi `approved`)
|
|
92
|
+
- 🤖 = AI thực thi · 👤 = con người quyết định
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
[← Glossary](glossary.md) · [Concepts](./) · [Traceability →](traceability.md)
|
|
2
|
+
|
|
3
|
+
# Roles & HITL — Vai trò và điểm dừng con người
|
|
4
|
+
|
|
5
|
+
> Ai làm gì ở mỗi giai đoạn, và tại sao điểm dừng của con người (HITL) **không cào bằng**.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Ma trận Role × Pipeline
|
|
10
|
+
|
|
11
|
+
| Role | Discovery | Specification | Design | Implementation | Dev-test | QC |
|
|
12
|
+
|------|:---------:|:-------------:|:------:|:--------------:|:--------:|:--:|
|
|
13
|
+
| **PO / Business** | 🟢 Lead | 🟢 Lead | 🟡 Review | ⚪ | ⚪ | 🟡 Review gap |
|
|
14
|
+
| **SA / Architect** | 🟡 Consult | 🟡 Review (SA lens) | 🟢 Lead (tech-docs) | 🟡 Review | ⚪ | ⚪ |
|
|
15
|
+
| **QA / Tester** | 🟡 Consult | 🟡 Feedback | 🟡 Review | 🟡 Review | 🟡 | 🟢 Lead (qc-*) |
|
|
16
|
+
| **Dev** | ⚪ | 🟡 Review (DEV lens) | 🟡 Review | 🟢 Lead (code) | 🟢 Lead | 🟡 Triage |
|
|
17
|
+
| **AI Agent** | 🤖 Co-pilot | 🤖 Draft PRD/BDD | 🤖 Draft design/tech | 🤖 Generate code | 🤖 Run smoke | 🤖 Run Playwright |
|
|
18
|
+
|
|
19
|
+
🟢 Lead · 🟡 Consult/Review · ⚪ Không tham gia · 🤖 AI thực thi (luôn dưới HITL)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Mật độ HITL (HITL Density)
|
|
24
|
+
|
|
25
|
+
**Rule vàng:** sai ở thượng nguồn nhân lên cấp số nhân → checkpoint **dày** ở spec/design, **mỏng** ở code/test.
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
Discovery ████████████ 🔴 cao nhất — chốt từng chặng
|
|
29
|
+
PRD ██████████ 🔴 review-context sạch critical + approve
|
|
30
|
+
BDD █████████ 🔴 UC decomposition + findings B1–B6
|
|
31
|
+
Tech-Docs ██████ 🟠 review đa chiều + ký T7
|
|
32
|
+
Code ███ 🟡 comprehension checkpoint
|
|
33
|
+
Dev-test ██ 🟡 dev tự chạy
|
|
34
|
+
QC █████ 🟠 cổng review test & script
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Hai loại điểm dừng (Checkpoint vs Gate)
|
|
40
|
+
|
|
41
|
+
| | Checkpoint (🛑) | Gate (🔒) |
|
|
42
|
+
|---|---|---|
|
|
43
|
+
| **Cơ chế** | AI trình output, hỏi `Y/N` | Field trạng thái do người đặt |
|
|
44
|
+
| **Ví dụ** | UC decomposition, comprehension | `Status: approved`, `@trace.status: approved` |
|
|
45
|
+
| **Chặn downstream?** | Không — chỉ dừng tại chỗ | Có — chặn tới khi `approved` |
|
|
46
|
+
|
|
47
|
+
> **Gate = trạng thái, không phải lệnh.** Không có `/approve-prd` — "duyệt" là người đặt `| Status | approved |` trong Metadata PRD (hoặc `@trace.status: approved` trong `.feature`).
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Nguyên tắc thiết kế checkpoint
|
|
52
|
+
|
|
53
|
+
1. **Tường minh** — marker thống nhất (🛑/CHECKPOINT) để AI không "trượt qua".
|
|
54
|
+
2. **Hỏi đúng câu** — không "OK chưa?" mà *"UC list đủ chưa? thiếu/thừa UC nào?"*.
|
|
55
|
+
3. **Short-circuit** — AI tự detect không có gap thì được skip, nhưng phải nêu lý do.
|
|
56
|
+
4. **Save state** — workflow dài (Discovery 8 chặng) lưu state để resume.
|
|
57
|
+
5. **Reject = học** — con người sửa → cân nhắc `/learn` ghi lesson.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Anti-pattern (cần tránh)
|
|
62
|
+
|
|
63
|
+
- ❌ AI đi thẳng từ "ý tưởng" tới code, bỏ qua PRD/BDD.
|
|
64
|
+
- ❌ Sinh code khi BDD còn `draft`.
|
|
65
|
+
- ❌ Checkpoint chỉ "confirm Y/N" mà không trình output cụ thể.
|
|
66
|
+
- ❌ Đưa chi tiết kỹ thuật vào PRD/BDD (sai altitude).
|
|
67
|
+
- ❌ AI tự fix tự review — lặp lỗi; review là **read-only**.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Đọc theo vai trò của bạn (Role Guides)
|
|
72
|
+
|
|
73
|
+
→ [Product Owner](../../03-guides/product-owner.md) · [Developer](../../03-guides/developer.md) · [Architect](../../03-guides/architect.md) · [Tester/QA](../../03-guides/tester-qa.md)
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
[← Roles & HITL](roles-and-hitl.md) · [Concepts](./) · [Architecture →](architecture.md)
|
|
2
|
+
|
|
3
|
+
# Traceability — Truy vết đầu-cuối (End-to-end Trace)
|
|
4
|
+
|
|
5
|
+
> Từ scenario nhìn xuống biết code nào hiện thực; từ code nhìn lên biết scenario nào yêu cầu. Đây là một trong ba "trái tim" của framework.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Trace tags theo artifact
|
|
10
|
+
|
|
11
|
+
| Artifact | Trace tag |
|
|
12
|
+
|----------|-----------|
|
|
13
|
+
| **BDD scenario** | `@trace.id` · `@trace.scenario` · `@trace.business_rules` · `@trace.bdd_version` · `@trace.prd_version` |
|
|
14
|
+
| **Code** (boundary only) | `@trace.implements` · `@trace.source` — *KHÔNG lưu version* (tránh dual SSOT) |
|
|
15
|
+
| **Test** | `@trace.verifies` · `@trace.covers` |
|
|
16
|
+
| **Bug fix** | `@trace.fixes` · `@trace.root_cause` · `@trace.regression` |
|
|
17
|
+
|
|
18
|
+
→ Đầy đủ field & format: [Reference › Trace Schema](../04-reference/trace-schema.md).
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Boundary-only tagging
|
|
23
|
+
|
|
24
|
+
Chỉ tag `@trace` ở **boundary**, không tag mọi file → tránh **tag explosion**:
|
|
25
|
+
|
|
26
|
+
| ✅ Tag | ❌ Không tag |
|
|
27
|
+
|--------|-------------|
|
|
28
|
+
| Controller / Handler / Middleware / Steps file | Entity / Repository / DTO / Interface / Base class |
|
|
29
|
+
|
|
30
|
+
> Shared code (entity, repo) được dò qua **import chain** từ boundary — không cần tag riêng.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Trace state — file `.tsv`
|
|
35
|
+
|
|
36
|
+
`.trace/{domain}/{prd-slug}/{UC-ID}-{platform}.tsv` — mỗi UC × platform một sổ. Trong umbrella, nằm ở **spec repo dùng chung** (một nơi authoritative để PM/PO quản lý).
|
|
37
|
+
|
|
38
|
+
| Cột | Chủ sở hữu | Ý nghĩa |
|
|
39
|
+
|-----|-----------|---------|
|
|
40
|
+
| `status` | `/generate-code`, `/validate-traces` | OK / GAP / DRIFT / UNTRACKED |
|
|
41
|
+
| `implemented_by` | `/generate-code` | File code hiện thực SC |
|
|
42
|
+
| `dev_selftest` | `/dev-run-test` | Smoke của **dev** |
|
|
43
|
+
| `qc_status` | `/qc-run-test`, `/report-bug` | Trạng thái QC **chính thức** (Playwright) |
|
|
44
|
+
| `bdd_version` / `spec_ver` | spec | Version để phát hiện drift |
|
|
45
|
+
| `gen_ver` | `/generate-code` | Version lúc sinh code (so với `spec_ver`) |
|
|
46
|
+
| `test_count` | test | Số test phủ SC |
|
|
47
|
+
| `last_updated` | nhiều | Mốc cập nhật |
|
|
48
|
+
|
|
49
|
+
> **`dev_selftest` ≠ `qc_status`.** Dev smoke (nhanh, tự kiểm) và QC chính thức (Playwright, evidence) là **hai trục độc lập** — không lấn quyền nhau.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Phân loại coverage (Coverage Status)
|
|
54
|
+
|
|
55
|
+
`/validate-traces` phân loại mỗi SC theo **thứ tự ưu tiên** (rule sớm thắng):
|
|
56
|
+
|
|
57
|
+
| # | Trạng thái | Điều kiện | Hành động |
|
|
58
|
+
|---|-----------|-----------|-----------|
|
|
59
|
+
| 1 | **UNTRACKED** | `gen_ver == —` | Chưa sinh code → `/generate-code` |
|
|
60
|
+
| 2 | **DRIFT** | có code **và** `spec_ver != gen_ver` | Spec đổi → **regen trước khi test** |
|
|
61
|
+
| 3 | **GAP** | có code **và** `test_count == — / 0` | Có code, chưa test → bù test |
|
|
62
|
+
| 4 | **OK** | version khớp, có code, có test | Đủ phủ |
|
|
63
|
+
|
|
64
|
+
> **DRIFT xét trước GAP:** SC có code + chưa test + spec vừa drift phải hiện `DRIFT` (không phải `GAP`) — vì `/generate-code` xử GAP = "skip codegen" còn DRIFT = "regenerate". Nếu GAP thắng, code lỗi thời bị bỏ qua.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Single SSOT cho version
|
|
69
|
+
|
|
70
|
+
- **Version chỉ ở spec level** (`bdd_version`/`prd_version`). Code **không** lưu version riêng — nó dùng `.tsv` (`gen_ver`) để so.
|
|
71
|
+
- Lưu version cả spec lẫn code = **dual SSOT** → drift không đáng tin.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Luồng truy vết (Trace Flow)
|
|
76
|
+
|
|
77
|
+
```mermaid
|
|
78
|
+
flowchart LR
|
|
79
|
+
PRD["PRD<br/>prd_version"] --> BDD["Scenario<br/>@trace.id + bdd_version"]
|
|
80
|
+
BDD --> CODE["Code boundary<br/>@trace.implements/source"]
|
|
81
|
+
CODE --> TEST["Test<br/>@trace.verifies"]
|
|
82
|
+
BDD -.-> TSV[".tsv state<br/>status/gen_ver/qc_status"]
|
|
83
|
+
CODE -.-> TSV
|
|
84
|
+
TEST -.-> TSV
|
|
85
|
+
TSV --> VM["/validate-traces<br/>Coverage Matrix"]
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Đọc tiếp (Next)
|
|
91
|
+
|
|
92
|
+
- [Architecture](architecture.md) — 3 lớp & context-loader
|
|
93
|
+
- [Pipeline › Validate Traces](pipeline-steps/09-validate-traces.md) — dùng ma trận coverage
|
|
94
|
+
- [Reference › Trace Schema](../04-reference/trace-schema.md) — field đầy đủ
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
[← Docs Home](../README.md) · [Guides](./)
|
|
2
|
+
|
|
3
|
+
# Guide · Architect / SA
|
|
4
|
+
|
|
5
|
+
> Bạn **sở hữu bức tranh kiến trúc** (`architecture.md`), **quyết trade-off thiết kế** và **chốt contract giữa các team**. Vai trò nặng ở **Kiến trúc nền** + **Tech-Docs**, cộng lăng kính SA khi review PRD.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Chuỗi bước của bạn (Your path)
|
|
10
|
+
|
|
11
|
+
```mermaid
|
|
12
|
+
flowchart LR
|
|
13
|
+
A["/generate-architecture<br/>🟢 SSOT nền · 1 lần + refresh"] --> R["/refine-prd<br/>🟡 SA lens"]
|
|
14
|
+
R --> T["/generate-tech-docs<br/>🟢 Lead"]
|
|
15
|
+
T --> RT["/review-tech-docs<br/>🟢 + ký T7"]
|
|
16
|
+
RT --> C["/review-code<br/>🟡 khi cần"]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
`/generate-architecture` là **bước nền một-lần** (rồi refresh khi kiến trúc đổi) — nằm ngoài vòng lặp per-feature, nhưng là thứ mọi tech-design về sau bám vào.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Kiến trúc nền — `architecture.md` (bạn sở hữu)
|
|
24
|
+
|
|
25
|
+
`architecture.md` là **nguồn chân lý (SSOT) kiến trúc cắt ngang** toàn hệ thống. `/generate-tech-docs` nạp nó để tech-design bám đúng kiến trúc thật, thay vì mỗi feature tự suy một kiểu.
|
|
26
|
+
|
|
27
|
+
**Bạn KHÔNG điền tay 140 ô.** Chạy `/generate-architecture` — lệnh tự lo phần nặng, bạn chỉ **verify**:
|
|
28
|
+
|
|
29
|
+
1. **Tự hút cái đã biết** — đọc `project-context.yaml` + `CLAUDE.md`, tài liệu có sẵn (`--from=docs/**/*.md`), và scan code (brownfield). Điền sẵn tối đa.
|
|
30
|
+
2. **Chỉ hỏi cái chưa biết** — phỏng vấn bằng **câu dễ hiểu** (có ví dụ, Có/Không), và **bỏ qua** mọi câu đã có đáp án từ bước 1. Nếu còn mơ hồ, nó **đào sâu** đúng chỗ đó tới khi đủ để viết — bạn luôn gõ được *"để sau"* để hoãn.
|
|
31
|
+
3. **Bạn verify** — mở file, sửa chỗ AI đoán sai (đối chiếu `<!-- nguồn -->`), rồi đổi `verified_by: AI-draft` → **tên bạn**. Chỉ khi đó doc mới thành **ràng buộc kiến trúc chính thức**; còn `AI-draft` thì tech-docs vẫn dùng nhưng gắn ⚠️.
|
|
32
|
+
|
|
33
|
+
**Phân tầng (tier) — điền có ưu tiên, khỏi ngộp:**
|
|
34
|
+
|
|
35
|
+
| Tier | Nghĩa | AI nạp khi sinh code? |
|
|
36
|
+
|------|-------|----------------------|
|
|
37
|
+
| **core** | Nền mọi feature cần (Tech Stack · Tầng · Đặt tên · API · DB) | ✅ |
|
|
38
|
+
| **conditional** | Chỉ khi hệ thống có (Multi-tenant, Event Bus, Sharding, Auth…) | ✅ nếu bật; nếu không → để **STUB** |
|
|
39
|
+
| **ops** | Vận hành, chỉ người đọc (Observability, Deploy, NFR…) | ❌ (không làm nhiễu context) |
|
|
40
|
+
|
|
41
|
+
**Điền dần & làm mới:**
|
|
42
|
+
- `/generate-architecture --section=multi-tenant` — lấp/refresh **đúng một mục** đang STUB, không phải làm lại cả file.
|
|
43
|
+
- `/generate-architecture --from=<paths>` — nạp thêm tài liệu có sẵn để hút nội dung.
|
|
44
|
+
- Chạy lại bất cứ lúc nào để **refresh**; nếu file đã verify, lệnh chỉ đề xuất **drift** (không đè bản bạn đã duyệt).
|
|
45
|
+
- **Umbrella:** kiến trúc là code-level → chạy `/generate-architecture {service-path}` cho từng service.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Việc của bạn ở mỗi bước
|
|
50
|
+
|
|
51
|
+
| Bước | Bạn làm gì |
|
|
52
|
+
|------|-----------|
|
|
53
|
+
| Kiến trúc nền | `/generate-architecture` → **verify** `architecture.md` (đổi `verified_by` thành tên bạn). Refresh khi kiến trúc đổi |
|
|
54
|
+
| Review PRD | Lăng kính **SA** trong `/refine-prd` — đọc PRD bằng **mắt kiến trúc** nhưng viết lại bằng **lời nghiệp vụ** (rủi ro, phụ thuộc, nhất quán hệ thống) |
|
|
55
|
+
| [Tech-Docs](../02-concepts/pipeline-steps/05-tech-docs.md) | Lead `/generate-tech-docs` — chuẩn hoá entity/API/dependency; **reverse-document** khi API đã tồn tại. Nó tự nạp `architecture.md` (core+conditional) |
|
|
56
|
+
| Review Tech-Docs | `/review-tech-docs` đa chiều; **ký cổng liên team T7** cho contract cross-service |
|
|
57
|
+
| Code | `/review-code` khi cần soát kiến trúc |
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Nguyên tắc sống còn cho SA
|
|
62
|
+
|
|
63
|
+
1. **`architecture.md` là SSOT kiến trúc** — bạn sở hữu và **verify** nó. `AI-draft` chưa verify chỉ là gợi ý; đổi `verified_by` = tên bạn để nó thành ràng buộc chính thức.
|
|
64
|
+
2. **Tech-design LÀ API contract** — BE viết, FE/App đọc ở `/generate-code --phase=integration`. Chốt sai = đốt budget cả hai phía.
|
|
65
|
+
3. **Một tech-design gộp full-stack cho cả PRD** (không per-UC/per-platform); §10 UC Coverage ánh xạ finding về từng UC.
|
|
66
|
+
4. **Reverse-document khi API tồn tại** — mô tả as-is, không "tự chế" shape mới.
|
|
67
|
+
5. **Ký T7 trước khi code** — contract cross-service phải được các team liên quan xác nhận.
|
|
68
|
+
6. **Entity catalog là nguồn chân lý** — dùng nó khi sinh tech-docs để nhất quán với PRD/BDD.
|
|
69
|
+
7. Với dependency cross-service → cân nhắc sinh **System BDD**.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Câu hỏi bạn cần trả lời được
|
|
74
|
+
|
|
75
|
+
- Kiến trúc cắt ngang (tầng, multi-tenant, nguồn dữ liệu, auth) đã được ghi & verify trong `architecture.md` chưa?
|
|
76
|
+
- Mỗi UC hiện thực bằng API/endpoint/DTO nào?
|
|
77
|
+
- Entity/field/quan hệ/enum chuẩn là gì?
|
|
78
|
+
- Contract BE↔FE có khớp & đủ cho mọi scenario không?
|
|
79
|
+
- Dependency cross-service nào cần System BDD + ký T7?
|
|
80
|
+
- Có trade-off kiến trúc nào PO/Dev chưa thấy?
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Anti-pattern
|
|
85
|
+
|
|
86
|
+
- ❌ Để `architecture.md` mãi ở `verified_by: AI-draft` — tech-docs sẽ kế thừa giả định chưa ai xác nhận.
|
|
87
|
+
- ❌ Điền tay cả template từ giấy trắng thay vì để `/generate-architecture` hút từ config/tài liệu/code.
|
|
88
|
+
- ❌ Tự chế shape DTO/endpoint khi API đã tồn tại.
|
|
89
|
+
- ❌ Bỏ cổng ký T7 → hai team hiểu contract khác nhau, rework tốn kém.
|
|
90
|
+
- ❌ Đưa chi tiết kỹ thuật vào PRD khi review (SA lens viết bằng lời nghiệp vụ).
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Lệnh của bạn (Your commands)
|
|
95
|
+
|
|
96
|
+
`/generate-architecture` · `/generate-tech-docs` · `/review-tech-docs` · `/refine-prd` (SA lens) · `/review-code` · `/generate-spec-manifest`
|
|
97
|
+
|
|
98
|
+
→ [Bảng lệnh đầy đủ](../04-reference/commands.md) · [Architecture](../02-concepts/architecture.md)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
[← Docs Home](../README.md) · [Guides](./)
|
|
2
|
+
|
|
3
|
+
# Guide · Developer (FE / BE / App)
|
|
4
|
+
|
|
5
|
+
> Bạn **nhận spec đã duyệt và sinh code từ nó**. Code là *hệ quả của spec*, không phải nguồn. Vai trò của bạn nặng ở **hạ nguồn** (Code → Dev-test) + review lăng kính DEV ở thượng nguồn.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Chuỗi bước của bạn (Your path)
|
|
10
|
+
|
|
11
|
+
```mermaid
|
|
12
|
+
flowchart LR
|
|
13
|
+
R["/refine-prd · /review-context<br/>🟡 DEV lens"] --> G["/generate-code<br/>🟢 Lead"]
|
|
14
|
+
G --> RC["/review-code<br/>🟡 read-only"]
|
|
15
|
+
RC --> T["/dev-gen-test → /dev-run-test<br/>🟢 Lead"]
|
|
16
|
+
T --> S["/dev-smoke-test<br/>🟢"]
|
|
17
|
+
S --> FX["/fix-bug<br/>🟢 khi có bug"]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Việc của bạn ở mỗi bước
|
|
23
|
+
|
|
24
|
+
| Bước | Bạn làm gì |
|
|
25
|
+
|------|-----------|
|
|
26
|
+
| Review upstream | Lăng kính **DEV** trong `/refine-prd` — bắt chỗ mơ hồ khó hiện thực |
|
|
27
|
+
| [Code](../02-concepts/pipeline-steps/06-code.md) | Chạy `/generate-code`; xác nhận **comprehension checkpoint** (drift new/drifted/synced); đảm bảo build pass |
|
|
28
|
+
| Review code | `/review-code` (read-only) — soát kỹ, **không auto-fix** |
|
|
29
|
+
| [Dev self-test](../02-concepts/pipeline-steps/07-dev-selftest.md) | `/dev-gen-test` → `/dev-run-test` (set `dev_selftest`) → `/dev-smoke-test` |
|
|
30
|
+
| [Bug fix](../02-concepts/pipeline-steps/10-feedback-loop.md) | `/fix-bug` — root cause → sửa → regression test |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Nguyên tắc sống còn cho Dev
|
|
35
|
+
|
|
36
|
+
1. **Không sinh code cho file không có `.feature` backing** (ngoài fix-bug/debug).
|
|
37
|
+
2. **Boundary-only tagging** — tag `@trace.implements` ở controller/handler, không tag entity/repo.
|
|
38
|
+
3. **Scope Lock** — chỉ implement UC target; code UC khác trong file dùng chung là **bất khả xâm phạm**. Đọc `@trace.implements` để bảo toàn, đừng xoá.
|
|
39
|
+
4. **Version chỉ ở spec** — code không lưu version; drift dò qua `.tsv`.
|
|
40
|
+
5. **Build phải pass** trước commit (`{conventions.build_command}`, ≤3 retry).
|
|
41
|
+
6. `CLAUDE.md` (§2 layer/package, §3 coding standards, §5 error handling) là nguồn — AI *follow*, bạn giữ nó cập nhật.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Frontend: hai phase
|
|
46
|
+
|
|
47
|
+
| Phase | Khi nào | Việc |
|
|
48
|
+
|-------|---------|------|
|
|
49
|
+
| `--phase=ui` | BE contract chưa sẵn | Sinh UI + layer **mock API** từ System BDD |
|
|
50
|
+
| `--phase=integration` | BE contract `approved` | Nối vào contract thật (đọc tech-design từ spec repo) |
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Câu hỏi bạn cần trả lời được
|
|
55
|
+
|
|
56
|
+
- SC nào **mới / drifted / synced** so với lần sinh trước?
|
|
57
|
+
- Code theo **layer/package/convention** nào của stack này?
|
|
58
|
+
- Contract (DTO/endpoint/error) lấy từ đâu — tech-design §4 hay System BDD?
|
|
59
|
+
- Build pass chưa? Smoke pass chưa?
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Anti-pattern
|
|
64
|
+
|
|
65
|
+
- ❌ Tag `@trace` mọi file → tag explosion.
|
|
66
|
+
- ❌ Tái tạo file dùng chung "chỉ gồm scenario UC này" → xoá nhầm nghiệp vụ UC khác.
|
|
67
|
+
- ❌ Coi `dev_selftest` thay QC chính thức.
|
|
68
|
+
- ❌ Để AI tự review code nó vừa sinh.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Lệnh của bạn (Your commands)
|
|
73
|
+
|
|
74
|
+
`/generate-code` · `/review-code` · `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` · `/fix-bug` · `/map-testids` · `/debug`
|
|
75
|
+
|
|
76
|
+
→ [Bảng lệnh đầy đủ](../04-reference/commands.md) · [Traceability](../02-concepts/traceability.md)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
[← Docs Home](../README.md) · [Guides](./)
|
|
2
|
+
|
|
3
|
+
# Guide · Product Owner / BA
|
|
4
|
+
|
|
5
|
+
> Bạn **định nghĩa cái gì đáng làm**. Vai trò của bạn nặng nhất ở **thượng nguồn** (Discovery → PRD → BDD) — nơi sai một ly đi một dặm.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Chuỗi bước của bạn (Your path)
|
|
10
|
+
|
|
11
|
+
```mermaid
|
|
12
|
+
flowchart LR
|
|
13
|
+
A["/define-product<br/>🟢 Lead"] --> B["/generate-prd<br/>🟢 Lead"]
|
|
14
|
+
B --> C["/refine-prd<br/>🟢 accept findings"]
|
|
15
|
+
C --> D["/review-context PRD<br/>🔒 approve"]
|
|
16
|
+
D --> E["/generate-design-spec<br/>🟡 review (FE/App)"]
|
|
17
|
+
E --> F["/generate-bdd<br/>🟢 UC decomposition"]
|
|
18
|
+
F --> G["/review-context BDD<br/>🔒 approve"]
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Sau khi BDD `approved`, bạn bàn giao xuống Dev/SA — nhưng vẫn nhận **product-gap** từ QC.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Việc của bạn ở mỗi bước
|
|
26
|
+
|
|
27
|
+
| Bước | Bạn làm gì | Quyết định |
|
|
28
|
+
|------|-----------|------------|
|
|
29
|
+
| [Discovery](../02-concepts/pipeline-steps/01-discovery.md) | Trả lời Q&A 8 chặng, **chốt từng chặng** | Vấn đề, user, UC, BR, AC, edge case, scope |
|
|
30
|
+
| [Specification](../02-concepts/pipeline-steps/02-specification.md) | Duyệt PRD draft; **accept/reject từng finding** của `/refine-prd`; đặt `Status: approved` | Scope & terminology đúng chưa |
|
|
31
|
+
| [Design-Spec](../02-concepts/pipeline-steps/03-design-spec.md) | Review spec visual bám Figma (FE/App) | Visual khớp intent |
|
|
32
|
+
| [BDD](../02-concepts/pipeline-steps/04-bdd.md) | Chốt **UC decomposition**; đặt `@trace.status: approved` | Cấu trúc UC/SC đúng |
|
|
33
|
+
| [QC](../02-concepts/pipeline-steps/08-qc-automation.md) | Nhận **product-gap**, quyết ưu tiên sửa | Gap nào là lỗi sản phẩm |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Nguyên tắc sống còn cho PO
|
|
38
|
+
|
|
39
|
+
1. **Viết thuần ngôn ngữ nghiệp vụ** — đừng nhét API/retry/timeout vào PRD/BDD. Business Language Guard sẽ chặn, nhưng bạn nên tự giữ altitude.
|
|
40
|
+
2. **Bốn ngăn không lộn**: AC (nghiệm thu) · BR/BL (cơ chế) · Scope (ranh giới) · Dictionary (định nghĩa).
|
|
41
|
+
3. **Gate là trạng thái, không phải lệnh** — "duyệt" = bạn tự đặt `| Status | approved |`. Chỉ đặt khi **sạch finding critical**.
|
|
42
|
+
4. **Chốt từng chặng, đừng "để AI tự hiểu"** — AI sẽ suy diễn và bạn trả giá ở downstream.
|
|
43
|
+
5. Khi bạn sửa cùng một kiểu nhiều lần → gợi ý team `/learn` để ghi lesson.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Câu hỏi bạn cần trả lời được
|
|
48
|
+
|
|
49
|
+
- Tính năng này giải quyết pain point gì? Cho ai?
|
|
50
|
+
- Gồm những UC/BR/AC nào? Edge case nào?
|
|
51
|
+
- Cái gì **trong** scope, cái gì **ngoài**?
|
|
52
|
+
- Mỗi scenario BDD có phủ đúng một AC/BR không?
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Anti-pattern
|
|
57
|
+
|
|
58
|
+
- ❌ Đặt `approved` khi còn finding critical → phá gate, code rác.
|
|
59
|
+
- ❌ Bỏ `/refine-prd` "vì PRD trông ổn".
|
|
60
|
+
- ❌ Nhảy từ ý tưởng thẳng sang yêu cầu Dev code.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Lệnh của bạn (Your commands)
|
|
65
|
+
|
|
66
|
+
`/define-product` · `/generate-prd` · `/refine-prd` · `/review-context` · `/generate-design-spec` · `/generate-bdd`
|
|
67
|
+
|
|
68
|
+
→ [Bảng lệnh đầy đủ](../04-reference/commands.md) · [Glossary](../02-concepts/glossary.md)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
[← Docs Home](../README.md) · [Guides](./)
|
|
2
|
+
|
|
3
|
+
# Guide · Tester / QA
|
|
4
|
+
|
|
5
|
+
> Bạn **chạy kiểm thử chính thức** (dây chuyền `/qc-*`, Playwright) và là **kênh feedback** đưa bug/scenario ngược về spec. Bạn ghi `qc_status` — trạng thái QC chính thức, có evidence.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Chuỗi bước của bạn (Your path)
|
|
10
|
+
|
|
11
|
+
```mermaid
|
|
12
|
+
flowchart LR
|
|
13
|
+
A["/qc-analyze"] --> P["/qc-plan"] --> D["/qc-design-test"]
|
|
14
|
+
D --> R["/qc-review<br/>🛑 cổng"] --> RUN["/qc-run-test<br/>ghi qc_status"] --> REP["/qc-report<br/>product-gap"]
|
|
15
|
+
REP --> FB["/report-bug · /propose-scenario"]
|
|
16
|
+
FB --> SYNC["/sync"]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Việc của bạn ở mỗi bước
|
|
22
|
+
|
|
23
|
+
| Trạm | Bạn làm gì |
|
|
24
|
+
|------|-----------|
|
|
25
|
+
| [`/qc-analyze`](../02-concepts/pipeline-steps/08-qc-automation.md) | Phân rã yêu cầu + phát hiện **gap tài liệu** |
|
|
26
|
+
| `/qc-plan` | Đánh giá rủi ro + câu hỏi cho dev |
|
|
27
|
+
| `/qc-design-test` | Thiết kế test case Markdown (`*.Test.md`) |
|
|
28
|
+
| `/qc-review` | 🛑 **Cổng review** case & script trước khi chạy |
|
|
29
|
+
| `/qc-run-test` | Chạy pytest-playwright, ghi **`qc_status`**; phân loại FAIL |
|
|
30
|
+
| `/qc-report` | Report + evidence, đẩy **product-gap** về PO/Dev |
|
|
31
|
+
| [Feedback](../02-concepts/pipeline-steps/10-feedback-loop.md) | `/report-bug`, `/propose-scenario` — kênh có hồ sơ spec |
|
|
32
|
+
|
|
33
|
+
Bạn cũng dùng `/validate-traces` để thấy **gap chưa phủ** (spec ↔ code ↔ test).
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Nguyên tắc sống còn cho QA
|
|
38
|
+
|
|
39
|
+
1. **`qc_status` ≠ `dev_selftest`** — bạn ghi QC chính thức (Playwright, evidence); dev smoke là trục độc lập.
|
|
40
|
+
2. **Không bao giờ fake-pass** — FAIL do product-gap thì **giữ FAIL + evidence**, đẩy về PO/Dev. Chỉ sửa script khi là script-bug (selector/logic).
|
|
41
|
+
3. **Không chạy test kém** — phải qua cổng `/qc-review` trước `/qc-run-test`.
|
|
42
|
+
4. **Bug phải spec-anchored** — `/report-bug` gắn `@trace` tới UC/SC để truy vết & regression.
|
|
43
|
+
5. Stack QC cố định: Python + pytest-playwright + Page Object (module `qc-playwright`), **độc lập** module của dev.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Câu hỏi bạn cần trả lời được
|
|
48
|
+
|
|
49
|
+
- Yêu cầu phân rã thành test case nào? Tài liệu có gap gì?
|
|
50
|
+
- Rủi ro nào cao? Cần hỏi dev gì?
|
|
51
|
+
- SC nào PASS/FAIL chính thức? FAIL là **script-bug** hay **product-gap**?
|
|
52
|
+
- Bug này gắn với scenario/spec nào?
|
|
53
|
+
- Scenario nào còn thiếu cần đề xuất (`/propose-scenario`)?
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Anti-pattern
|
|
58
|
+
|
|
59
|
+
- ❌ Sửa script cho "xanh" khi thực chất là product-gap → giấu lỗi sản phẩm.
|
|
60
|
+
- ❌ Chạy `/qc-run-test` khi chưa qua `/qc-review`.
|
|
61
|
+
- ❌ Lẫn `qc_status` với `dev_selftest`.
|
|
62
|
+
- ❌ Bug không gắn spec → khó truy vết, khó regression.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Lệnh của bạn (Your commands)
|
|
67
|
+
|
|
68
|
+
`/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` · `/report-bug` · `/propose-scenario` · `/validate-traces`
|
|
69
|
+
|
|
70
|
+
→ [Bảng lệnh đầy đủ](../04-reference/commands.md) · [Traceability](../02-concepts/traceability.md)
|