@educa-corp/sdd-framework 0.9.1 → 0.9.3
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/bin/qc-base-map.json +595 -0
- package/bin/self-check.js +146 -0
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/propose-scenario.md +1 -1
- package/core/commands/qc-analyze.md +398 -37
- package/core/commands/qc-design-test.md +141 -2
- package/core/commands/qc-plan.md +159 -10
- package/core/commands/qc-review.md +134 -1
- package/core/commands/qc-run-test.md +135 -2
- package/core/commands/refine-prd.md +47 -20
- package/core/commands/report-bug.md +1 -1
- package/core/commands/review-context.md +27 -1
- package/core/modules/qc-playwright/stack-profile.yaml +3 -3
- package/core/skills/qc/qa-analyst/DOC_GAP.template.md +147 -0
- package/core/skills/qc/qa-analyst/acceptance-criteria.md +5 -3
- package/core/skills/qc/qa-analyst/business-rules.md +39 -5
- package/core/skills/qc/qa-analyst/data-flow.md +6 -4
- package/core/skills/qc/qa-analyst/exhaustive-gap-scanner.md +174 -0
- package/core/skills/qc/qa-analyst/spec-breakdown.md +10 -8
- package/core/skills/qc/qa-analyst/spec-issue-reporter.md +112 -0
- package/core/skills/qc/qa-designer/e2e/journey.md +3 -3
- package/core/skills/qc/qa-designer/exploratory/charter.md +1 -1
- package/core/skills/qc/qa-designer/exploratory/explore-to-functional.md +2 -2
- package/core/skills/qc/qa-designer/functional/api.md +3 -3
- package/core/skills/qc/qa-designer/functional/gui-feature.md +3 -3
- package/core/skills/qc/qa-designer/functional/gui-screen.md +3 -3
- package/core/skills/qc/qa-designer/integration/api.md +3 -3
- package/core/skills/qc/qa-designer/integration/db.md +3 -3
- package/core/skills/qc/qa-designer/integration/gui.md +3 -3
- package/core/skills/qc/qa-designer/integration/kafka.md +3 -3
- package/core/skills/qc/qa-designer/non-functional.md +3 -3
- package/core/skills/qc/qa-planner/risk-model.md +106 -0
- package/core/skills/qc/qa-planner/test-plan.md +35 -21
- package/core/skills/qc/qa-reviewer/script/e2e.md +1 -1
- package/core/skills/qc/qa-reviewer/script/exploratory.md +1 -1
- package/core/skills/qc/qa-reviewer/script/functional.md +1 -1
- package/core/skills/qc/qa-reviewer/script/integration.md +1 -1
- package/core/skills/qc/qa-reviewer/script/non-functional.md +1 -1
- package/core/skills/qc/qa-reviewer/test-case/e2e.md +1 -1
- package/core/skills/qc/qa-reviewer/test-case/exploratory.md +1 -1
- package/core/skills/qc/qa-reviewer/test-case/functional.md +1 -1
- package/core/skills/qc/qa-reviewer/test-case/integration.md +2 -2
- package/core/skills/qc/qa-reviewer/test-case/non-functional.md +1 -1
- package/core/skills/qc/qa-runner/e2e.md +1 -1
- package/core/skills/qc/qa-runner/exploratory/session.md +2 -2
- package/core/skills/qc/qa-runner/functional/api.md +1 -1
- package/core/skills/qc/qa-runner/functional/gui-feature.md +1 -1
- package/core/skills/qc/qa-runner/functional/gui-screen.md +1 -1
- package/core/skills/qc/qa-runner/integration.md +1 -1
- package/core/skills/qc/qa-runner/non-functional.md +1 -1
- package/core/skills/qc/qa-runner/report/report.md +1 -1
- package/core/steps/context-loader.md +1 -1
- package/core/steps/gap-verify.md +231 -0
- package/core/steps/qc-scope.md +119 -0
- package/core/steps/review-fanout.md +27 -1
- package/core/templates/project-context.yaml +5 -3
- package/docs/02-concepts/pipeline-steps/08-qc-automation.md +2 -2
- package/docs/04-reference/commands.md +1 -1
- package/docs/04-reference/configuration.md +146 -146
- package/docs/explain/03-refine-prd.md +8 -6
- package/docs/explain/15-qc-analyze.md +10 -7
- package/docs/explain/16-qc-plan.md +3 -3
- package/docs/explain/17-qc-design-test.md +1 -1
- package/docs/plans/qc-implementation-log.md +1587 -0
- package/docs/plans/qc-merge-plan.md +502 -0
- package/docs/plans/qc-sync-command.md +359 -0
- package/package.json +1 -1
- package/scripts/migrate-qc-docs.js +261 -0
- package/core/skills/qc/qa-analyst/DOC_GAPS.template.md +0 -63
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0
|
|
3
|
+
updated: 2026-08-25
|
|
4
|
+
ported_from: ui-automation-testing
|
|
5
|
+
upstream_path: skills/qa-tc-analyst/risk-acceptance-analyzer.md
|
|
6
|
+
upstream_sha: 5eca5091acd30e063d20b63f12b04e2d1c78ac83
|
|
7
|
+
port_completeness: partial
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Risk Model — cách tính mức rủi ro và dùng nó để chia độ sâu test
|
|
11
|
+
|
|
12
|
+
`test-plan.md` có **khung** bảng rủi ro (`§6`) nhưng không có **cách điền**. File này là cách điền.
|
|
13
|
+
|
|
14
|
+
Nạp cùng `test-plan.md` khi lập plan. Đầu ra không phải file riêng — nó điền vào `§6 Rủi ro`
|
|
15
|
+
và `§5 Tiêu chí Vào/Ra` của `TEST_PLAN.md`.
|
|
16
|
+
|
|
17
|
+
## Cố ý chỉ port một phần
|
|
18
|
+
|
|
19
|
+
Bản upstream (`risk-acceptance-analyzer`) có 5 phase. Ba phase bị **cố ý bỏ** vì trạm 1 đã làm rồi:
|
|
20
|
+
|
|
21
|
+
| Phase upstream | Vì sao không port |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Test Conditions | trùng vai với `qa-analyst/spec-breakdown` + `business-rules` (trạm 1) |
|
|
24
|
+
| Ambiguity & Gap | trùng vai với `DOC_GAP` + `steps/gap-verify.md` (trạm 1) |
|
|
25
|
+
| Acceptance Criteria | trùng vai với `qa-analyst/acceptance-criteria` (trạm 1) |
|
|
26
|
+
|
|
27
|
+
Chỉ port **Phase 3 (Risk Register)** và **Phase 5 (Ưu tiên + Entry/Exit)** — hai phần trạm 2 sở hữu.
|
|
28
|
+
|
|
29
|
+
*Ghi `port_completeness: partial` ở frontmatter — lần đồng bộ sau đừng hiểu phần thiếu là
|
|
30
|
+
"ta cố ý xoá nội dung".*
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Bước 1 — Liệt kê rủi ro sản phẩm
|
|
35
|
+
|
|
36
|
+
Bảy nguồn rủi ro. Quét từng cái, không bỏ nguồn nào chỉ vì "feature này chắc không có":
|
|
37
|
+
|
|
38
|
+
| # | Nguồn | Dấu hiệu trong PRD/BR |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| 1 | **Logic phức tạp** | nhiều điều kiện AND/OR lồng nhau, bảng định tuyến, công thức tính |
|
|
41
|
+
| 2 | **Tiền / thanh toán** | giao dịch, hoàn tiền, mã giảm giá, hạn mức |
|
|
42
|
+
| 3 | **Dữ liệu nhạy cảm** | thông tin cá nhân, số điện thoại, thông tin định danh |
|
|
43
|
+
| 4 | **Tích hợp nhiều phần** | gọi dịch vụ khác, hàng đợi sự kiện, đồng bộ dữ liệu |
|
|
44
|
+
| 5 | **Code mới hoặc sửa nhiều** | feature xây mới, hoặc vùng vừa refactor |
|
|
45
|
+
| 6 | **Lịch sử lỗi cao** | vùng đã từng có bug — tra `{paths.bug_reports_dir}` cho UC/feature này |
|
|
46
|
+
| 7 | **Ảnh hưởng nhiều người dùng** | luồng chính mọi người đều đi qua, màn đăng nhập, trang chủ |
|
|
47
|
+
|
|
48
|
+
> Nguồn 6 là nguồn duy nhất **tra được bằng dữ liệu thật** trong framework — sổ bug nằm ở
|
|
49
|
+
> `{paths.bug_reports_dir}`. Đừng đoán "vùng này chắc ổn"; mở ra đếm.
|
|
50
|
+
|
|
51
|
+
## Bước 2 — Chấm mức cho từng rủi ro
|
|
52
|
+
|
|
53
|
+
Hai chiều, mỗi chiều ba mức:
|
|
54
|
+
|
|
55
|
+
- **Khả năng xảy ra** — Cao / Trung bình / Thấp
|
|
56
|
+
- **Mức thiệt hại nếu xảy ra** — Cao / Trung bình / Thấp
|
|
57
|
+
|
|
58
|
+
Nhân lại ra **P0 → P3**:
|
|
59
|
+
|
|
60
|
+
| Khả năng \ Thiệt hại | Cao | Trung bình | Thấp |
|
|
61
|
+
|---|:---:|:---:|:---:|
|
|
62
|
+
| **Cao** | **P0** | **P1** | P2 |
|
|
63
|
+
| **Trung bình** | **P1** | P2 | P3 |
|
|
64
|
+
| **Thấp** | P2 | P3 | P3 |
|
|
65
|
+
|
|
66
|
+
> **Chấm hai chiều riêng rồi mới nhân** — đừng chấm thẳng ra P0/P1 theo cảm tính. Hai chiều
|
|
67
|
+
> tách nhau là chỗ tranh luận trở nên cụ thể: *"cái này thiệt hại cao nhưng khả năng thấp"*
|
|
68
|
+
> là một câu nói được, còn *"cái này P1"* thì không cãi được, chỉ tin hoặc không tin.
|
|
69
|
+
|
|
70
|
+
## Bước 3 — Dùng mức rủi ro để chia **độ sâu** test
|
|
71
|
+
|
|
72
|
+
Đây là chỗ bảng rủi ro trả lại giá trị. Không có bước này thì nó chỉ là một bảng trang trí.
|
|
73
|
+
|
|
74
|
+
| Mức | Test sâu tới đâu | Tự động hoá |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| **P0** | nhiều kỹ thuật cùng lúc: phân lớp tương đương + giá trị biên + bảng quyết định + chuyển trạng thái | ✅ ưu tiên — cả kiểm thử hồi quy |
|
|
77
|
+
| **P1** | hai kỹ thuật trở lên, phủ đủ nhánh chính + nhánh lỗi | ✅ nếu ổn định |
|
|
78
|
+
| **P2** | một kỹ thuật, phủ luồng thuận + một nhánh lỗi tiêu biểu | tuỳ |
|
|
79
|
+
| **P3** | danh sách kiểm tay, không cần test case đầy đủ | ❌ |
|
|
80
|
+
|
|
81
|
+
**Thứ tự chạy:** rủi ro cao **và** phụ thuộc thấp làm trước — không phải "P0 làm hết rồi mới tới P1".
|
|
82
|
+
Một P0 đang chờ gap chặn thì không chạy được; làm P1 sẵn sàng trước là đúng.
|
|
83
|
+
|
|
84
|
+
**Tháp test:** end-to-end tự động **chỉ** cho luồng P0/P1 trọng yếu. E2E cho P2/P3 là đắt và giòn —
|
|
85
|
+
tiền không đáng.
|
|
86
|
+
|
|
87
|
+
## Bước 4 — Điền Entry / Exit theo rủi ro
|
|
88
|
+
|
|
89
|
+
`test-plan.md §5` đã có khung. Rủi ro làm nó cụ thể hơn:
|
|
90
|
+
|
|
91
|
+
- **Entry** — mọi gap 🔴 chặn đã `Answered`; **và** mọi rủi ro P0 đã có ít nhất một cách giảm thiểu ghi rõ.
|
|
92
|
+
- **Exit** — phủ 100% vùng P0 · không còn defect mở ở vùng P0/P1 · tỉ lệ pass đạt ngưỡng đã khai.
|
|
93
|
+
|
|
94
|
+
> **Rủi ro P0 không có cách giảm thiểu = chưa đủ điều kiện bắt đầu.** Ghi ra một rủi ro rồi
|
|
95
|
+
> không nói làm gì với nó là ghi cho có.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Điền vào `TEST_PLAN.md §6`
|
|
100
|
+
|
|
101
|
+
| Rủi ro | Nguồn (1–7) | Khả năng | Thiệt hại | Mức | Giảm thiểu (loại test + kỹ thuật) |
|
|
102
|
+
|---|---|---|---|---|---|
|
|
103
|
+
| … | 2 · tiền | Cao | Cao | **P0** | functional/api + giá trị biên; e2e luồng thanh toán |
|
|
104
|
+
|
|
105
|
+
Mỗi dòng rủi ro phải **trỏ được về BR-xx hoặc GAP-xx** đã có ở `REQUIREMENT_ANALYSIS.md` /
|
|
106
|
+
`DOC_GAP.md` — rủi ro không neo vào yêu cầu nào là rủi ro tự nghĩ ra.
|
|
@@ -1,24 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1.0
|
|
3
3
|
updated: 2026-06-11
|
|
4
|
-
ported_from:
|
|
4
|
+
ported_from: ui-automation-testing
|
|
5
|
+
upstream_path: skills/qa-tc-analyst/test-plan.md
|
|
6
|
+
upstream_sha: f259b4d123c565a42ba6c6ec96980a8e4c66284f
|
|
5
7
|
---
|
|
6
8
|
|
|
7
9
|
# Lập Test Plan
|
|
8
10
|
|
|
9
|
-
Tổng hợp **output của qa-analyst** thành **Test Plan** cho một feature
|
|
11
|
+
Tổng hợp **output của qa-analyst** thành **Test Plan** cho một feature — tức **một plan cho cả
|
|
12
|
+
(PRD × nền)**, các UC là các hàng bên trong.
|
|
10
13
|
|
|
11
14
|
**Đầu vào (bắt buộc, chỉ 2 nguồn — đúng 2 file qa-analyst trả ra):**
|
|
12
|
-
1. `{
|
|
13
|
-
|
|
15
|
+
1. `{qc_artifact_dir}REQUIREMENT_ANALYSIS.md` — chức năng, BR-xx, AC-xx, data flow của **mọi UC
|
|
16
|
+
trong phạm vi**, kèm mục *Mâu thuẫn chéo UC* (qa-analyst).
|
|
17
|
+
2. `{qc_artifact_dir}DOC_GAP.md` — bảng gap 11 cột `GAP-UC{N}-{nnn}`, mức độ, gap Blocker, và
|
|
18
|
+
bảng *Phạm vi phân tích* (qa-analyst). **Lọc cột `UC`** khi cần phần của một UC cụ thể.
|
|
14
19
|
|
|
15
20
|
## Khi nào trigger
|
|
16
21
|
- "lập test plan cho [Feature]" / "viết test plan"
|
|
17
|
-
- Sau khi qa-analyst xong (đã có REQUIREMENT_ANALYSIS +
|
|
22
|
+
- Sau khi qa-analyst xong (đã có REQUIREMENT_ANALYSIS + DOC_GAP)
|
|
18
23
|
- Trước khi qa-designer thiết kế chi tiết TC — test plan là khung định hướng
|
|
19
24
|
|
|
20
25
|
## Khi KHÔNG trigger
|
|
21
|
-
- Chưa có REQUIREMENT_ANALYSIS /
|
|
26
|
+
- Chưa có REQUIREMENT_ANALYSIS / DOC_GAP → chạy qa-analyst trước
|
|
22
27
|
- Thiết kế test case chi tiết (.Test.md) → dùng qa-designer
|
|
23
28
|
- Bóc tách yêu cầu/spec, lập danh sách gap → dùng qa-analyst
|
|
24
29
|
|
|
@@ -28,7 +33,7 @@ Tổng hợp **output của qa-analyst** thành **Test Plan** cho một feature.
|
|
|
28
33
|
|
|
29
34
|
1. Đọc `REQUIREMENT_ANALYSIS.md`: nắm chức năng, các BR-xx và AC-xx, data flow,
|
|
30
35
|
integration/failure point.
|
|
31
|
-
2. Đọc `
|
|
36
|
+
2. Đọc `DOC_GAP.md`: lấy danh sách gap, đặc biệt **gap Blocker còn Open** → đây là
|
|
32
37
|
nguồn cho cột "Phụ thuộc" và cho Entry criteria.
|
|
33
38
|
3. Map mỗi nhóm BR sang **layer test** của qa-designer: functional/gui-screen,
|
|
34
39
|
gui-feature, api, integration, e2e/journey, non-functional.
|
|
@@ -47,38 +52,45 @@ Tổng hợp **output của qa-analyst** thành **Test Plan** cho một feature.
|
|
|
47
52
|
criteria yêu cầu đóng các gap đó trước khi thiết kế TC.
|
|
48
53
|
- Liệt kê **E2E journey** đầy đủ (mỗi journey: tiền điều kiện, kết quả/định tuyến kỳ
|
|
49
54
|
vọng, BR, phụ thuộc, priority) + bộ **verify point chung** sau submit.
|
|
50
|
-
- Mục Rủi ro:
|
|
55
|
+
- Mục Rủi ro: **nạp `risk-model.md`** — quét đủ 7 nguồn, chấm khả năng × thiệt hại → P0–P3,
|
|
56
|
+
rồi dùng mức đó chia độ sâu test. Đừng chấm thẳng ra P0/P1 theo cảm tính.
|
|
51
57
|
|
|
52
58
|
---
|
|
53
59
|
|
|
54
60
|
## Output — Template `TEST_PLAN.md`
|
|
55
61
|
|
|
56
|
-
Đặt tại `{
|
|
62
|
+
Đặt tại `{qc_artifact_dir}TEST_PLAN.md`:
|
|
57
63
|
|
|
58
64
|
```markdown
|
|
59
|
-
# Test Plan – <
|
|
65
|
+
# Test Plan – <TICKET-ID> <Tên feature> / <nền>
|
|
60
66
|
|
|
61
67
|
| Trường | Giá trị |
|
|
62
68
|
|---|---|
|
|
63
|
-
| Feature / Project / Module | … |
|
|
69
|
+
| Feature / Project / Module | `<TICKET-ID>` — … |
|
|
70
|
+
| Nền (platform) | `<web \| app \| system>` |
|
|
71
|
+
| UC trong phạm vi | `<UC-ID>` · `<UC-ID>` … (`⏸ chưa xét`: `<UC-ID>`) |
|
|
64
72
|
| Người lập | qa-planner |
|
|
65
73
|
| Ngày / Phiên bản | … |
|
|
66
|
-
| Nguồn | REQUIREMENT_ANALYSIS ·
|
|
74
|
+
| Nguồn | REQUIREMENT_ANALYSIS · DOC_GAP |
|
|
67
75
|
|
|
68
76
|
## 1. Mục tiêu
|
|
69
77
|
Mục tiêu test của feature (1–3 câu).
|
|
70
78
|
|
|
71
79
|
## 2. Phạm vi
|
|
72
|
-
- **In scope:** chức năng/BR được test.
|
|
73
|
-
- **Out of scope:** phần để tài liệu/feature khác; nội dung gạch ngang đã loại
|
|
80
|
+
- **In scope:** chức năng/BR được test, **theo từng UC** (`<UC-ID>`: …).
|
|
81
|
+
- **Out of scope:** phần để tài liệu/feature khác; nội dung gạch ngang đã loại; và **UC
|
|
82
|
+
`⏸ Chưa xét`** (BDD chưa `approved`) — liệt kê rõ mã UC + lý do. *Không ghi ra thì một UC bị
|
|
83
|
+
bỏ trông giống một UC không có gì để test.*
|
|
74
84
|
|
|
75
85
|
## 3. Test items theo vùng & độ ưu tiên
|
|
76
86
|
Bảng — mỗi vùng kèm rule chi tiết + metadata:
|
|
77
87
|
|
|
78
|
-
| # | Vùng test | Rule chi tiết | Layer (qa-designer) | Loại test | Pri | Ước lượng |
|
|
79
|
-
|
|
80
|
-
| ① | <vùng> | **BR-xx:** … <br>**BR-yy:** … | functional/gui-screen | Functional/Negative | P0 | n |
|
|
81
|
-
| … | … | … | … | … | … | … |
|
|
88
|
+
| # | UC | Vùng test | Rule chi tiết | Layer (qa-designer) | Loại test | Pri | Ước lượng |
|
|
89
|
+
|---|---|---|---|---|---|---|---|
|
|
90
|
+
| ① | `<UC-ID>` | <vùng> | **BR-xx:** … <br>**BR-yy:** … | functional/gui-screen | Functional/Negative | P0 | n |
|
|
91
|
+
| … | … | … | … | … | … | … | … |
|
|
92
|
+
|
|
93
|
+
*Cột `UC` bắt buộc — một plan phủ nhiều UC, không có nó thì không ai biết vùng test nào của UC nào.*
|
|
82
94
|
|
|
83
95
|
> Tổng ước lượng sơ bộ: ~N test case (+ E2E).
|
|
84
96
|
|
|
@@ -95,12 +107,14 @@ Kỹ thuật áp dụng: EP+BVA, Decision Table (cho logic điều kiện), stat
|
|
|
95
107
|
integration, negative/exploratory; tự động hoá theo `CLAUDE.md` (Playwright + pytest-playwright + Trace + pytest-html).
|
|
96
108
|
|
|
97
109
|
## 5. Tiêu chí Vào / Ra
|
|
98
|
-
- **Entry
|
|
110
|
+
- **Entry (chấm theo TỪNG UC, không chấm cả PRD):** gap 🔴 Blocker của **UC đó** (lọc cột `UC`
|
|
111
|
+
trong DOC_GAP) đã Answered; doc phụ thuộc sẵn sàng; môi trường + tài khoản role.
|
|
112
|
+
Ghi `Ready`/`Blocked` cho mỗi UC — blocker ở UC3 không dừng thiết kế test UC1.
|
|
99
113
|
- **Exit:** pass P0=100%, P1≥95%; không còn defect Blocker/Critical; mọi BR/AC được trace; báo cáo pytest-html + Playwright Trace.
|
|
100
114
|
|
|
101
115
|
## 6. Rủi ro (risk-based)
|
|
102
|
-
| Rủi ro |
|
|
103
|
-
(
|
|
116
|
+
| Rủi ro | Nguồn | Khả năng | Thiệt hại | Mức | Giảm thiểu |
|
|
117
|
+
(cách chấm mức + 7 nguồn rủi ro + cách dùng mức để chia độ sâu test: xem `risk-model.md`)
|
|
104
118
|
|
|
105
119
|
## 7. Dữ liệu & Môi trường
|
|
106
120
|
Tài khoản các role, dữ liệu mẫu (biên/edge), môi trường staging.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1.0
|
|
3
3
|
updated: 2026-06-11
|
|
4
|
-
ported_from:
|
|
4
|
+
ported_from: ui-automation-testing
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Review Test Case — Integration
|
|
@@ -21,7 +21,7 @@ Review bộ TC tích hợp (GUI↔Backend, API, DB) và đánh giá chất lư
|
|
|
21
21
|
## Phase 1 — Clarify
|
|
22
22
|
|
|
23
23
|
1. Đọc tất cả TC integration trong folder chỉ định; xác định loại: GUI↔Backend / API / DB
|
|
24
|
-
2. Đọc REQUIREMENT_ANALYSIS +
|
|
24
|
+
2. Đọc REQUIREMENT_ANALYSIS + DOC_GAP nếu có
|
|
25
25
|
3. Xác định chuỗi tích hợp (caller → component → downstream)
|
|
26
26
|
|
|
27
27
|
---
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
version: 1.0
|
|
3
3
|
updated: 2026-06-11
|
|
4
|
-
ported_from:
|
|
4
|
+
ported_from: ui-automation-testing
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Session Template & Convert Findings — Exploratory
|
|
@@ -33,4 +33,4 @@ Input: session note (#BUG + #IDEA).
|
|
|
33
33
|
- **Weekly summary** (nếu yêu cầu): overview, top findings, coverage gap, recommendations.
|
|
34
34
|
|
|
35
35
|
## Output
|
|
36
|
-
Mode 1: file session note. Mode 2: bug reports + file TC trong `{
|
|
36
|
+
Mode 1: file session note. Mode 2: bug reports + file TC trong `{qc_artifact_dir}test-cases/` + summary.
|
|
@@ -35,7 +35,7 @@ Thực hiện các bước theo đúng thứ tự. Lưu mọi thứ vào bộ nh
|
|
|
35
35
|
**Paths (nếu có):**
|
|
36
36
|
- `paths.specs_dir` → gốc của spec artifact — PRD, BDD, tech-docs, design-spec. Cấu trúc: `{specs_dir}/{domain}/{prd-slug}/{ {TICKET-ID}-{prd-slug}.md | bdd/ | tech-docs/ | design-spec/}` (file PRD đặt tên `{TICKET-ID}-{prd-slug}.md`, là file `.md` duy nhất ở gốc feature folder)
|
|
37
37
|
- `paths.refinement_dir` → thư mục output cho findings/review
|
|
38
|
-
- `paths.qc_dir` → gốc artifact QC automation (
|
|
38
|
+
- `paths.qc_dir` → gốc artifact QC automation (ở top-level, gom theo **PRD**: `{qc_dir}/{TICKET-ID}/{platform}/` — một `DOC_GAP.md` / `TEST_PLAN.md` / `REQUIREMENT_ANALYSIS.md` cho cả PRD, các UC là mục bên trong. Xem `steps/qc-scope.md`)
|
|
39
39
|
- `paths.qc_skills_dir` → nơi các lệnh qc-* nạp QC skill (mặc định bundled `.agent/skills/qc`; override sang repo/submodule riêng của team QC để bản nâng cấp framework không ghi đè)
|
|
40
40
|
- `paths.product_definitions_dir` → gốc product definition
|
|
41
41
|
- `paths.domain_knowledge_dir` → gốc domain knowledge
|