@relipa/ai-flow-kit 0.1.3 → 0.1.4-beta.0
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/README.md +113 -0
- package/bin/aiflow.js +49 -1
- package/custom/skills/ba-skills/skill-ba-phan-tich-ban-dau-v1.md +44 -0
- package/custom/skills/ba-skills/skill-ba-prototype-v1.md +35 -0
- package/custom/skills/ba-skills/skill-ba-qa-template-v1.md +21 -0
- package/custom/skills/ba-skills/skill-ba-qa-v1.md +35 -0
- package/custom/skills/ba-skills/skill-ba-template-phan-tich-ban-dau-v1.md +30 -0
- package/custom/skills/ba-skills/skill-ba-template-uc-v1.md +83 -0
- package/custom/skills/ba-skills/skill-ba-ve-luong-mermaid-v1.md +35 -0
- package/custom/skills/ba-skills/skill-ba-viet-spec-uc-v1.md +38 -0
- package/custom/skills/ba-skills/skill-ba-xay-dung-business-rules-v1.md +39 -0
- package/custom/skills/execute-flow/SKILL.md +22 -2
- package/custom/skills/gate-review/SKILL.md +195 -0
- package/custom/skills/generate-test-report/SKILL.md +1 -1
- package/custom/skills/generate-testcase/SKILL.md +52 -5
- package/custom/skills/test-analysis/SKILL.md +39 -1
- package/custom/skills/test-skills/categories/00-core/00.01.requirement-analysis.md +111 -0
- package/custom/skills/test-skills/categories/00-core/00.02.risk-analysis.md +24 -0
- package/custom/skills/test-skills/categories/00-core/00.03.test-scenario-builder.md +90 -0
- package/custom/skills/test-skills/categories/00-core/00.04.testcase-review.md +68 -0
- package/custom/skills/test-skills/categories/01-test-design/01.01.boundary-value-analysis.md +30 -0
- package/custom/skills/test-skills/categories/01-test-design/01.02.equivalence.partitioning.md +27 -0
- package/custom/skills/test-skills/categories/01-test-design/01.03.decision-table.md +26 -0
- package/custom/skills/test-skills/categories/01-test-design/01.04.state.transition.md +26 -0
- package/custom/skills/test-skills/categories/01-test-design/01.05.pairwise.md +25 -0
- package/custom/skills/test-skills/categories/01-test-design/01.06.error-guessing.md +28 -0
- package/custom/skills/test-skills/categories/02-ui-testing/02.01.UI-layout.md +29 -0
- package/custom/skills/test-skills/categories/02-ui-testing/02.02.form-validation.md +57 -0
- package/custom/skills/test-skills/categories/02-ui-testing/02.03.navigation.md +27 -0
- package/custom/skills/test-skills/categories/02-ui-testing/02.04.localization.md +27 -0
- package/custom/skills/test-skills/categories/02-ui-testing/02.05.accessibility.md +27 -0
- package/custom/skills/test-skills/categories/03-business-testing/03.01.CRUD-testing.md +51 -0
- package/custom/skills/test-skills/categories/03-business-testing/03.02.workflow-testing.md +44 -0
- package/custom/skills/test-skills/categories/03-business-testing/03.03.permission-testing.md +41 -0
- package/custom/skills/test-skills/categories/03-business-testing/03.04.dependency-validation.md +40 -0
- package/custom/skills/test-skills/categories/03-business-testing/03.05.notification-testing.md +43 -0
- package/custom/skills/test-skills/categories/03-business-testing/03.06.calculation.testing.md +44 -0
- package/custom/skills/test-skills/categories/04-data-testing/04.01.database-testing.md +43 -0
- package/custom/skills/test-skills/categories/04-data-testing/04.02.import-export-testing.md +43 -0
- package/custom/skills/test-skills/categories/04-data-testing/04.03.data-mapping.md +39 -0
- package/custom/skills/test-skills/categories/04-data-testing/04.04.duplicate-handling.md +39 -0
- package/custom/skills/test-skills/categories/04-data-testing/04.05.migration.md +42 -0
- package/custom/skills/test-skills/categories/05-integration/05.01.API-testing.md +37 -0
- package/custom/skills/test-skills/categories/05-integration/05.02.third-party-integration.md +36 -0
- package/custom/skills/test-skills/categories/05-integration/05.03.batch-processing.md +38 -0
- package/custom/skills/test-skills/categories/05-integration/05.04.file-upload-download.md +40 -0
- package/custom/skills/test-skills/categories/08-domain-skills/CMS.md +34 -0
- package/custom/skills/test-skills/categories/08-domain-skills/Ecommerce.md +35 -0
- package/custom/skills/test-skills/categories/99-review/99.01.coverage-review.md +35 -0
- package/custom/skills/test-skills/categories/99-review/99.02.knowledge-learning.md +34 -0
- package/custom/skills/test-skills/categories/99-review/99.03.repository-update.md +33 -0
- package/custom/skills/test-skills/categories/99-review/99.04.change-history.md +38 -0
- package/custom/skills/test-skills/rules/Directory_and_Naming_Convention.md +257 -0
- package/custom/skills/test-skills/rules/QA_Writing_Standards.md +49 -0
- package/custom/skills/test-skills/template/template_testcase.md +92 -0
- package/custom/templates/shared/create-spec-workflow.md +441 -0
- package/custom/templates/shared/create-testcase-workflow.md +470 -0
- package/custom/templates/shared/gate-workflow.md +122 -16
- package/package.json +2 -2
- package/scripts/create-score-excel.js +17 -7
- package/scripts/init.js +48 -1
- package/scripts/review.js +91 -0
- package/scripts/update.js +4 -1
- package/scripts/use.js +22 -16
package/README.md
CHANGED
|
@@ -70,6 +70,82 @@ PM writes ticket on Backlog/Jira
|
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
73
|
+
## Execute Test Flow
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
aiflow execute PROJ-44 (or ./testcases.md or aiflow execute)
|
|
77
|
+
│
|
|
78
|
+
▼
|
|
79
|
+
⛩️ GATE 1 — Pre-flight & Work Plan [AI + QA]
|
|
80
|
+
Parse TC file → verify ak-test/{repo}/ exists
|
|
81
|
+
Check BASE_URL env var + playwright.config.ts
|
|
82
|
+
Create execution work plan
|
|
83
|
+
│ Ready
|
|
84
|
+
▼
|
|
85
|
+
⛩️ GATE 2 — Script Sync [AI]
|
|
86
|
+
Hash-based TC↔script sync
|
|
87
|
+
Generate new / update changed / skip unchanged
|
|
88
|
+
Uses Playwright MCP for selectors — never fabricates
|
|
89
|
+
│ Scripts synced
|
|
90
|
+
▼
|
|
91
|
+
⛩️ GATE 3 — Execute & Evidence [AI]
|
|
92
|
+
Run: npx playwright test
|
|
93
|
+
Organize evidence per run-{N}/: screenshots, trace.zip, result.md
|
|
94
|
+
Auto-draft bug files for failed TCs
|
|
95
|
+
Support RETEST: [TC_ID] loop
|
|
96
|
+
│ Tests done
|
|
97
|
+
▼
|
|
98
|
+
⛩️ GATE 4 — Report & Bug Logging [AI + QA]
|
|
99
|
+
Generate testreport.md with Go/No-Go recommendation
|
|
100
|
+
Log each failed TC to Jira/Backlog — interactive confirm per bug
|
|
101
|
+
│
|
|
102
|
+
▼
|
|
103
|
+
DONE
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Execute Test Flow
|
|
109
|
+
|
|
110
|
+
Flow độc lập cho QA — không cần chạy lại phân tích (Gates 1–2 của Development Flow).
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
QA nhận TC file (từ ticket hoặc file)
|
|
114
|
+
│
|
|
115
|
+
▼
|
|
116
|
+
⛩️ GATE 1 — Context & Work Plan [AI + QA]
|
|
117
|
+
aiflow execute PROJ-44 → claude
|
|
118
|
+
AI kiểm tra: MCP Playwright, ak-test/, BASE_URL, playwright.config.ts
|
|
119
|
+
AI parse TC file → extract TCs, phân loại Auto / Manual
|
|
120
|
+
AI xuất work plan + danh sách TCs cần thực thi
|
|
121
|
+
│ Work Plan ready
|
|
122
|
+
▼
|
|
123
|
+
⛩️ GATE 2 — Script Sync [AI]
|
|
124
|
+
Hash-based TC ↔ script sync
|
|
125
|
+
Gen mới TC chưa có script (Playwright MCP → selector DOM thật)
|
|
126
|
+
Cập nhật script đã thay đổi, bỏ qua script không đổi
|
|
127
|
+
Không fabricate selector — luôn lấy từ DOM thật
|
|
128
|
+
│ Scripts synced
|
|
129
|
+
▼
|
|
130
|
+
⛩️ GATE 3 — Execute & Evidence [AI]
|
|
131
|
+
Chạy Playwright, tổ chức evidence theo run-{N}/
|
|
132
|
+
Cập nhật cột R1/R2 trong TC file
|
|
133
|
+
Tổng hợp kết quả pass/fail per TC
|
|
134
|
+
│ Tests done
|
|
135
|
+
▼
|
|
136
|
+
⛩️ GATE 4 — Report & Bug Logging [AI + QA]
|
|
137
|
+
AI tạo: testreport.md
|
|
138
|
+
AI hỏi từng bug → QA xác nhận log lên Jira/Backlog
|
|
139
|
+
QA review → DONE
|
|
140
|
+
│
|
|
141
|
+
▼
|
|
142
|
+
DONE
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
> **Entry points:** `aiflow execute PROJ-44` (từ ticket) · `aiflow execute ./testcases/AD10.md` (từ file) · `aiflow execute` (manual — AI hỏi TC file path)
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
73
149
|
## Installation
|
|
74
150
|
|
|
75
151
|
```bash
|
|
@@ -454,6 +530,43 @@ Then run `aiflow update` or `aiflow sync-skills` to apply.
|
|
|
454
530
|
|
|
455
531
|
> Summary of major changes per version. See full details in [CHANGELOG.md](docs/common/CHANGELOG.md).
|
|
456
532
|
|
|
533
|
+
### v0.1.3 — 2026-06-18
|
|
534
|
+
- **Execute Test Flow (4-Gate):** New `aiflow execute` command + `execute-flow` skill — Pre-flight → Script Sync → Execute & Evidence → Report & Bug Logging.
|
|
535
|
+
- **`script-sync` skill:** Hash-based TC↔Playwright script sync — gen new, update changed, skip unchanged. Uses MCP browser tools for selectors, never fabricates.
|
|
536
|
+
- **`ak execute` command** (`ak ex` alias): Standalone QA entry point — accepts ticket ID, TC file path, or interactive mode.
|
|
537
|
+
- **▶️ Execute Test** added to `ak use` type selector; `taskType: "execute"` routes AI to execute-flow skill automatically.
|
|
538
|
+
- **Playwright harness scaffold** (`ak scaffold playwright`): Creates full `ak-test/{repo}/` structure with config, fixtures, and page objects.
|
|
539
|
+
- Fixes: `screenId` casing ambiguity, `--reporter` flag overriding config reporters, Gate 1 missing `playwright.config.ts` check.
|
|
540
|
+
|
|
541
|
+
### v0.1.2 — 2026-06-13
|
|
542
|
+
- **Testing Workflow (4-Gate):** New `taskType: "testing"` — Test Analysis → Test Planning → Test Execution → Test Report. AI auto-routes skill per gate.
|
|
543
|
+
- **`python-ml` framework:** Supports scikit-learn / PyTorch / TensorFlow / MLflow / Wandb. Auto-detected from `requirements.txt` / `pyproject.toml`.
|
|
544
|
+
- **Task type selector in `ak use`:** Interactive list after loading ticket — auto-detects and pre-selects task type.
|
|
545
|
+
- **Critical fix — `update`/`init` not updating CLAUDE.md/GEMINI.md:** Fixed 3 compounding causes (`framework` singular vs. plural, missing `force: true`, per-file confirm dialogs).
|
|
546
|
+
- **Backup before overwrite:** AI instruction files backed up to `.aiflow/bk/YYYY-MM-DD_HH-MM_<filename>` before any overwrite.
|
|
547
|
+
- **`aiflow update` no longer wipes `.claude/`:** Now clears only `.claude/skills/`, preserving `settings.json` and hooks.
|
|
548
|
+
|
|
549
|
+
### v0.1.1 — 2026-06-08
|
|
550
|
+
- **Ubuntu/Linux clipboard in `ak prompt`:** Auto-detects display server (Wayland/X11) and package manager — offers to install clipboard tool if missing.
|
|
551
|
+
- **`figma-to-component` image detection & export:** Scans node tree for image nodes, exports to `public/assets/figma/`, renders with `<Image>`/`<img>`.
|
|
552
|
+
- **`figma-to-component` MCP pre-check (Step 0):** Verifies MCP connected before running; stops with setup instructions if not.
|
|
553
|
+
- **`figma-to-component` CSS tooling detection:** Branches on Tailwind / CSS Modules / styled-components / vanilla CSS; maps Figma Styles/Variables to existing tokens.
|
|
554
|
+
- **Critical fix — `figma-to-component` source/installed divergence:** Synced both copies to canonical version with correct tool names and 4-tier framework detection.
|
|
555
|
+
|
|
556
|
+
### v0.1.3 — 2026-06-22
|
|
557
|
+
|
|
558
|
+
**QA Automation Suite — End-to-end test execution với Playwright MCP**
|
|
559
|
+
|
|
560
|
+
- New `aiflow execute` command with full 4-gate Execute Flow (pre-flight → script sync → run → report).
|
|
561
|
+
- New skill suite for QA: `execute-flow`, `automation-testing`, `script-sync`, `generate-testcase`, `generate-test-report`, `log-bug`, `test-analysis`, `evidence-aggregation`, `retest-orchestration`, `coverage-check`.
|
|
562
|
+
- Playwright harness template (`custom/harness/playwright/`) — pre-wired `playwright.config.ts`, `BasePage`, fixtures, và auth setup.
|
|
563
|
+
- New `aiflow scaffold` command (`ak sc`) — tự động tạo cấu trúc `ak-test/{repo}/` từ template.
|
|
564
|
+
- Hash-based TC↔script sync: chỉ gen/update script khi TC thay đổi, bỏ qua TC không đổi — không mất thời gian re-gen.
|
|
565
|
+
- Selector lấy từ DOM thật qua Playwright MCP — không fabricate, không đoán.
|
|
566
|
+
- ML framework support: `python-ml` template + 7 ML skills (`frame-ml-problem`, `explore-data`, `design-experiment`, `train-model`, `evaluate-model`, `improve-algorithm`, `deploy-model`).
|
|
567
|
+
- New `pr-impact-analysis` skill — phân tích breaking changes của PR trước khi merge.
|
|
568
|
+
- Deprecated `aiflow` CLI alias — dùng `ak` thay thế (warning hiện khi dùng `aiflow`).
|
|
569
|
+
|
|
457
570
|
### v0.1.0 — 2026-05-28
|
|
458
571
|
- Multi-target `ak use` — load multiple tickets/files in a single call (primary + supplementary).
|
|
459
572
|
- Auto link resolution — auto-fetch Backlog/Jira URLs found in the ticket description (capped at 5 links).
|
package/bin/aiflow.js
CHANGED
|
@@ -503,6 +503,53 @@ program
|
|
|
503
503
|
}
|
|
504
504
|
});
|
|
505
505
|
|
|
506
|
+
// ── review ────────────────────────────────────────────────────
|
|
507
|
+
const reviewCmd = program.command('review').description('Gate review file operations');
|
|
508
|
+
|
|
509
|
+
reviewCmd
|
|
510
|
+
.command('check')
|
|
511
|
+
.description('Check review file state — called by AI before accepting APPROVED')
|
|
512
|
+
.requiredOption('-g, --gate <n>', 'gate number (string — supports sub-phases like 2a, 2b)')
|
|
513
|
+
.requiredOption('-t, --ticket <id>', 'ticket ID')
|
|
514
|
+
.action(async (opts) => {
|
|
515
|
+
const { checkReviewFile } = require('../scripts/review');
|
|
516
|
+
const result = await checkReviewFile(opts.gate, opts.ticket);
|
|
517
|
+
|
|
518
|
+
if (!result.exists) {
|
|
519
|
+
console.log(chalk.red(`\n ✗ Review file not found for gate ${opts.gate}, ticket ${opts.ticket}`));
|
|
520
|
+
console.log(chalk.gray(` Expected: .aiflow/review/gate-${opts.gate}-${opts.ticket}.md`));
|
|
521
|
+
console.log(chalk.yellow(' → Re-generate the review file before accepting APPROVED.\n'));
|
|
522
|
+
process.exit(1);
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
if (result.passed) {
|
|
526
|
+
console.log(chalk.green(`\n ✅ All ${result.total} items checked — gate can proceed\n`));
|
|
527
|
+
process.exit(0);
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
const pendingCount = result.unchecked.length + result.commented.length;
|
|
531
|
+
console.log(chalk.red(`\n ❌ Review incomplete — ${pendingCount} item(s) pending:\n`));
|
|
532
|
+
|
|
533
|
+
if (result.commented.length > 0) {
|
|
534
|
+
console.log(chalk.yellow(' Items with comments (need AI revision):'));
|
|
535
|
+
result.commented.forEach(({ item, comment }) => {
|
|
536
|
+
console.log(chalk.yellow(` • ${item}`));
|
|
537
|
+
console.log(chalk.gray(` Comment: "${comment}"`));
|
|
538
|
+
});
|
|
539
|
+
if (result.unchecked.length > 0) console.log('');
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
if (result.unchecked.length > 0) {
|
|
543
|
+
console.log(chalk.red(' Items unchecked (no comment — please check or add a comment):'));
|
|
544
|
+
result.unchecked.forEach(item => {
|
|
545
|
+
console.log(chalk.red(` • ${item}`));
|
|
546
|
+
});
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
console.log(chalk.gray('\n → Check all items in the review file, then type APPROVED again.\n'));
|
|
550
|
+
process.exit(1);
|
|
551
|
+
});
|
|
552
|
+
|
|
506
553
|
// ── remove ────────────────────────────────────────────────────
|
|
507
554
|
program
|
|
508
555
|
.command('remove')
|
|
@@ -531,7 +578,7 @@ program
|
|
|
531
578
|
.description('Manually synchronize AI Instruction files with local custom skills')
|
|
532
579
|
.action(async () => {
|
|
533
580
|
const projectDir = process.cwd();
|
|
534
|
-
const { setupFramework, AI_TOOL_FILES, ensureAiflowGitignored } = require('../scripts/init');
|
|
581
|
+
const { setupFramework, AI_TOOL_FILES, ensureAiflowGitignored, setupClaudeCommands } = require('../scripts/init');
|
|
535
582
|
const fs = require('fs-extra');
|
|
536
583
|
const path = require('path');
|
|
537
584
|
const chalk = require('chalk');
|
|
@@ -551,6 +598,7 @@ program
|
|
|
551
598
|
for (const fw of frameworks) {
|
|
552
599
|
await setupFramework(projectDir, fw, frameworks.length > 1, selectedTools, { force: true });
|
|
553
600
|
}
|
|
601
|
+
await setupClaudeCommands(projectDir);
|
|
554
602
|
await ensureAiflowGitignored(projectDir);
|
|
555
603
|
console.log(chalk.green('✨ Sync completed!'));
|
|
556
604
|
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Skill: Phân tích yêu cầu ban đầu (BA Analyst) - Phiên bản v1
|
|
2
|
+
|
|
3
|
+
## 1. Mục đích (Purpose)
|
|
4
|
+
Kỹ năng này giúp Business Analyst (hoặc Agent) quét, đọc hiểu và cấu trúc hóa các yêu cầu thô được cung cấp bởi khách hàng hoặc các stakeholders. Mục tiêu là phân tách rõ ràng giữa các thông tin thực tế (Facts) và các giả định (Assumptions), phát hiện các khoảng trống nghiệp vụ (Gaps), và tạo cơ sở cho việc lập danh sách câu hỏi làm rõ (Q&A) cũng như dự thảo spec ban đầu.
|
|
5
|
+
|
|
6
|
+
## 2. Kiến thức cần có (Prerequisite Knowledge)
|
|
7
|
+
- **Tư duy phân tích (Analytical Thinking):** Khả năng chia nhỏ một yêu cầu lớn thành các luồng nghiệp vụ nhỏ và các thành phần cấu thành.
|
|
8
|
+
- **Phân biệt Fact vs. Assumption:**
|
|
9
|
+
- *Fact (Sự thật):* Thông tin được ghi rõ ràng trong tài liệu, được khẳng định từ khách hàng.
|
|
10
|
+
- *Assumption (Giả định):* Những giả thiết do BA đưa ra dựa trên kinh nghiệm hoặc ngữ cảnh mà chưa được khách hàng xác nhận bằng văn bản.
|
|
11
|
+
- **Kỹ thuật Gap Analysis:** Kỹ thuật nhận diện các điểm chưa thống nhất, các thông tin bị thiếu (ví dụ: thiếu thông báo lỗi khi validate thất bại, thiếu quy tắc lưu trữ vào cơ sở dữ liệu, thiếu mô tả quyền truy cập).
|
|
12
|
+
- **Thuật ngữ phần mềm cơ bản:** Khách hàng (Client), Người dùng (User), Tác nhân (Actor), Ràng buộc (Constraints), Luồng chính (Happy Path), Trường hợp ngoại lệ (Edge cases).
|
|
13
|
+
|
|
14
|
+
## 3. Quy trình thực hiện (Step-by-step Process)
|
|
15
|
+
- **Bước 1: Tiếp nhận và đọc quét (Read & Scan):**
|
|
16
|
+
Đọc toàn bộ tài liệu đầu vào (ví dụ trong folder `TÀI LIỆU/input/`) ít nhất 2 lần để nắm bức tranh tổng thể và ngữ cảnh nghiệp vụ.
|
|
17
|
+
Sau đó đọc source code liên quan (nếu workspace có source repos):
|
|
18
|
+
- Ưu tiên đọc: data models/entity, API endpoints hiện tại, service/business logic
|
|
19
|
+
- Mục đích: hiểu hệ thống đang tồn tại, tìm constraints kỹ thuật, tránh đề xuất mâu thuẫn architecture
|
|
20
|
+
- Nếu GitNexus MCP có sẵn: dùng `gitnexus: query()` / `gitnexus: context()` thay vì đọc file trực tiếp
|
|
21
|
+
- **Bước 2: Phân loại thông tin (Categorize):**
|
|
22
|
+
Trích xuất các thông tin theo các cấu trúc:
|
|
23
|
+
- Mục tiêu của chức năng.
|
|
24
|
+
- Các tác nhân tham gia vào luồng.
|
|
25
|
+
- Các yêu cầu chức năng (các hành động, nút bấm, trường thông tin).
|
|
26
|
+
- Các yêu cầu phi chức năng (bảo mật, hiệu năng, nền tảng hệ điều hành/trình duyệt).
|
|
27
|
+
- **Bước 3: Nhận diện và ghi nhận Gap (Identify Gaps):**
|
|
28
|
+
Đối chiếu từng yêu cầu chức năng với các câu hỏi:
|
|
29
|
+
- Dữ liệu đầu vào của trường này có giới hạn độ dài/định dạng không?
|
|
30
|
+
- Nếu để trống thì hệ thống xử lý thế nào? Có thông báo lỗi gì không?
|
|
31
|
+
- Có quy tắc nghiệp vụ (Business rules) ngầm định nào không?
|
|
32
|
+
- Luồng thay thế (Alternative flows) hoặc luồng lỗi (Exception flows) là gì?
|
|
33
|
+
- **Bước 4: Soạn dự thảo Kết quả phân tích ban đầu:**
|
|
34
|
+
Áp dụng template phân tích ban đầu (`skill-ba-template-phan-tich-ban-dau-v1.md`) để điền thông tin và lập bảng Gap/Assumption.
|
|
35
|
+
|
|
36
|
+
## 4. Checklist kiểm tra (Checklist for Verification)
|
|
37
|
+
- [ ] Đã xác định rõ Mục tiêu hệ thống/chức năng chưa? (Hệ thống giải quyết bài toán gì?)
|
|
38
|
+
- [ ] Đã làm rõ tất cả các Tác nhân (Actors) tham gia chưa?
|
|
39
|
+
- [ ] Đã bóc tách hết các trường thông tin (Inputs) được liệt kê trong tài liệu thô chưa?
|
|
40
|
+
- [ ] Đã ghi nhận rõ ràng danh sách các điểm mơ hồ hoặc thiếu thông tin dưới dạng **Gap/Assumption** chưa?
|
|
41
|
+
- [ ] Không tự tiện bổ sung các tính năng ngoài phạm vi yêu cầu của khách hàng khi chưa có thảo luận/Q&A.
|
|
42
|
+
|
|
43
|
+
## 5. Output mong đợi (Expected Output)
|
|
44
|
+
- File tài liệu phân tích ban đầu định dạng markdown, cấu trúc thống nhất dựa theo `@skill-ba-template-phan-tich-ban-dau-v1.md`, đặt tên theo chuẩn: `Tên chức năng_Kết quả phân tích(n).md` trong thư mục `TÀI LIỆU/output/Kết quả phân tích/`.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Skill: Thiết kế Layout và Prototype HTML/CSS - Phiên bản v1
|
|
2
|
+
|
|
3
|
+
## 1. Mục đích (Purpose)
|
|
4
|
+
Kỹ năng này hướng dẫn BA thiết kế và hiện thực hóa giao diện người dùng (UI mockup/prototype) dưới dạng mã nguồn HTML/CSS tự chứa (self-contained). Prototype giúp khách hàng hình dung trực quan luồng đi của màn hình, đồng thời giúp lập trình viên và kiểm thử viên xác định chính xác cấu trúc trang, ID của các phần tử và vị trí hiển thị lỗi.
|
|
5
|
+
|
|
6
|
+
## 2. Kiến thức cần có (Prerequisite Knowledge)
|
|
7
|
+
- **HTML5 Semantic Tags:** Sử dụng các thẻ ngữ nghĩa như `<header>`, `<main>`, `<section>`, `<nav>`, `<form>`, `<input>`, `<button>`, `<label>` để trang web có cấu trúc chuẩn SEO và dễ kiểm thử.
|
|
8
|
+
- **Vanilla CSS Layouts:** Thành thạo Flexbox và CSS Grid để dựng bố cục nhanh chóng, đáp ứng tốt trên các kích thước màn hình khác nhau (Responsive).
|
|
9
|
+
- **Nguyên lý UX/UI cơ bản:**
|
|
10
|
+
- *Primary Flow & Visual Hierarchy:* Làm nổi bật các thành phần quan trọng bằng kích thước, màu sắc và độ tương phản (ví dụ: nút bấm chính).
|
|
11
|
+
- *Bố cục F-pattern & Z-pattern:* Đặt tiêu đề, logo ở góc trên bên trái, thông tin quan trọng chạy ngang và chéo xuống nút bấm thực thi ở góc dưới bên phải.
|
|
12
|
+
- *Khoảng trắng (Whitespace):* Giữ khoảng cách hợp lý giữa các nhóm thông tin (Chunking) để tránh rối mắt.
|
|
13
|
+
|
|
14
|
+
## 3. Quy trình thực hiện (Step-by-step Process)
|
|
15
|
+
- **Bước 1: Phân tích các thành phần (Wireframing mentally):**
|
|
16
|
+
Dựa trên tài liệu phân tích, liệt kê tất cả các phần tử UI cần có (ví dụ: Logo, Tiêu đề, Ô nhập ID, Ô nhập Password, Nút Đăng nhập, Link Quên mật khẩu, Vùng hiển thị lỗi).
|
|
17
|
+
- **Bước 2: Dựng khung HTML:**
|
|
18
|
+
- Viết mã HTML chuẩn. Bắt buộc đặt các thuộc tính `id`, `name`, `type`, `placeholder` rõ ràng cho các ô nhập liệu (ví dụ: `<input type="text" id="username" name="username"...>`).
|
|
19
|
+
- Đưa các thông báo lỗi (Error message) vào đúng vị trí dưới các ô nhập liệu, gán class dạng `.error-message` hoặc `.inline-error` và tạm ẩn đi bằng CSS (`display: none;` hoặc thông qua trạng thái ẩn) nhưng vẫn có mặt trong mã nguồn để Tester biết vị trí hiển thị.
|
|
20
|
+
- **Bước 3: Tạo kiểu dáng CSS:**
|
|
21
|
+
- Sử dụng thẻ `<style>` nội bộ nằm ngay trong file HTML (để file HTML tự chứa tất cả tài nguyên, dễ chia sẻ và import vào tài liệu spec).
|
|
22
|
+
- Sử dụng bảng màu hiện đại (tránh màu đỏ/xanh lá gốc, dùng các màu trung tính, dịu mắt phối hợp hiệu ứng hover cho các nút bấm).
|
|
23
|
+
- Đảm bảo thiết kế responsive cơ bản bằng media queries nếu cần.
|
|
24
|
+
- **Bước 4: Kiểm tra và lưu trữ:**
|
|
25
|
+
Mở file HTML trên trình duyệt để kiểm tra trực quan. Lưu vào thư mục `TÀI LIỆU/output/design/`.
|
|
26
|
+
|
|
27
|
+
## 4. Checklist kiểm tra (Checklist for Verification)
|
|
28
|
+
- [ ] File HTML có tự chứa toàn bộ CSS không? (Không liên kết tới file CSS bên ngoài trừ font chữ hệ thống).
|
|
29
|
+
- [ ] Tất cả các trường nhập liệu đã có thẻ `<label>` tương ứng và thuộc tính `id`, `name` chưa?
|
|
30
|
+
- [ ] Vị trí các thông báo lỗi (Alert và Inline error) đã được dựng sẵn trong code và định dạng rõ ràng chưa?
|
|
31
|
+
- [ ] Giao diện có hiển thị cân đối trên cả màn hình Desktop và Mobile không?
|
|
32
|
+
- [ ] Các phần tử tương tác (Button, Link, Input) có hiệu ứng trực quan khi hover hoặc focus không?
|
|
33
|
+
|
|
34
|
+
## 5. Output mong đợi (Expected Output)
|
|
35
|
+
- Một file HTML độc lập chứa đầy đủ code HTML và CSS nội bộ, đặt tên theo chuẩn: `Tên chức năng_design.html` trong thư mục `TÀI LIỆU/output/design/`.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Skill: Template Q&A - Phiên bản v1
|
|
2
|
+
|
|
3
|
+
Mẫu tài liệu dùng để trình bày danh sách câu hỏi Q&A và theo dõi phản hồi từ khách hàng.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Tài liệu Q&A: [Tên Chức Năng]
|
|
8
|
+
|
|
9
|
+
*Tài liệu này dùng để theo dõi các vấn đề nghiệp vụ cần làm rõ giữa đội ngũ dự án và khách hàng. Trạng thái bao gồm: **Open** (Đang chờ phản hồi), **Confirmed** (Đã thống nhất).*
|
|
10
|
+
|
|
11
|
+
## Danh sách câu hỏi Q&A
|
|
12
|
+
|
|
13
|
+
| ID | Chức năng / Màn hình | Nội dung yêu cầu hiện tại | Câu hỏi / Điểm chưa rõ | Đề xuất giải pháp (Options) | Câu trả lời của Khách hàng | Trạng thái |
|
|
14
|
+
| :-: | :--- | :--- | :--- | :--- | :--- | :-: |
|
|
15
|
+
| **QA-01** | *Đăng nhập* | *Có text link đổi mật khẩu* | *Text link này sẽ dẫn sang URL cụ thể nào? Hệ thống tự sinh OTP gửi mail hay chuyển sang màn nhập email?* | *- Option A: Chuyển sang URL `/forgot-password` để nhập Email nhận link reset.<br>- Option B: Hiển thị popup nhập SĐT nhận OTP.* | *Khách hàng phản hồi: Chọn Option A, link URL là `/forgot-password`* | **Confirmed** |
|
|
16
|
+
| **QA-02** | | | | | | **Open** |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
## Lịch sử cập nhật tài liệu
|
|
20
|
+
*Sau mỗi lần nhận phản hồi, BA cập nhật bảng trên và ghi nhận lịch sử tại đây:*
|
|
21
|
+
- **Ngày [dd/mm/yyyy]:** Nhận phản hồi lần 1 từ khách hàng cho câu hỏi QA-01. Cập nhật trạng thái sang **Confirmed** và chỉnh sửa tài liệu Phân tích bản đầu tương ứng.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Skill: Xử lý và Thiết kế Q&A (Q&A Specification) - Phiên bản v1
|
|
2
|
+
|
|
3
|
+
## 1. Mục đích (Purpose)
|
|
4
|
+
Kỹ năng này giúp BA thiết kế các câu hỏi rõ ràng, khách quan và chuyên nghiệp để gửi tới khách hàng/stakeholders nhằm làm rõ các khoảng trống nghiệp vụ (Gaps). Đồng thời, hướng dẫn cách tiếp nhận câu trả lời để cập nhật tài liệu phân tích một cách nhất quán, tránh hiểu sai hoặc tự ý giả định thông tin.
|
|
5
|
+
|
|
6
|
+
## 2. Kiến thức cần có (Prerequisite Knowledge)
|
|
7
|
+
- **Kỹ năng giao tiếp bằng văn bản (Written Communication):** Sử dụng câu từ ngắn gọn, lịch sự, đi thẳng vào vấn đề.
|
|
8
|
+
- **Kỹ thuật đặt câu hỏi mở và đóng:**
|
|
9
|
+
- Tránh câu hỏi mập mờ (ví dụ: "Hệ thống có cần khóa tài khoản không?").
|
|
10
|
+
- Nên đưa ra các tùy chọn rõ ràng (ví dụ: "Khi nhập sai mật khẩu liên tiếp, hệ thống sẽ xử lý thế nào? Tùy chọn A: Khóa tài khoản sau 5 lần sai trong 30 phút. Tùy chọn B: Chỉ hiển thị thông báo lỗi mà không khóa tài khoản. Tùy chọn C: Ý kiến khác...").
|
|
11
|
+
- **Tư duy kiểm thử (Testing Mindset):** Đứng dưới góc nhìn của Tester để hỏi về các biên dữ liệu, các trường hợp lỗi mạng, mất kết nối cơ sở dữ liệu, hoặc dữ liệu không hợp lệ.
|
|
12
|
+
|
|
13
|
+
## 3. Quy trình thực hiện (Step-by-step Process)
|
|
14
|
+
- **Bước 1: Chuyển đổi Gap thành câu hỏi Q&A:**
|
|
15
|
+
Từ danh sách khoảng trống phát hiện ở bước Phân tích ban đầu, chuyển mỗi dòng thành một câu hỏi Q&A cụ thể.
|
|
16
|
+
- **Bước 2: Chuẩn hóa câu hỏi theo mẫu `@skill-ba-qa-template-v1.md`:**
|
|
17
|
+
- Xác định phân vùng nghiệp vụ (Module/Screen).
|
|
18
|
+
- Trích dẫn yêu cầu hiện tại (Current Status/Requirement).
|
|
19
|
+
- Nêu rõ vấn đề mơ hồ.
|
|
20
|
+
- Đưa ra các giải pháp đề xuất (Options) cùng giả định của BA.
|
|
21
|
+
- **Bước 3: Nhận phản hồi và Cập nhật (Process Responses):**
|
|
22
|
+
- Khi nhận được câu trả lời từ khách hàng: Đọc kỹ để đảm bảo câu trả lời đã giải quyết triệt để câu hỏi. Nếu câu trả lời vẫn chưa rõ ràng, tiếp tục duy trì trạng thái "Open" và hỏi lại ở version tiếp theo.
|
|
23
|
+
- Nếu đã rõ ràng: Đánh dấu "Resolved" và cập nhật thông tin đó trực tiếp vào tài liệu phân tích hiện tại (`Kết quả phân tích(n).md`).
|
|
24
|
+
- Ghi nhận lịch sử thay đổi để Dev/Test nắm được lý do thay đổi logic.
|
|
25
|
+
|
|
26
|
+
## 4. Checklist kiểm tra (Checklist for Verification)
|
|
27
|
+
- [ ] Mỗi câu hỏi có chỉ rõ phần màn hình/tính năng liên quan không?
|
|
28
|
+
- [ ] Câu hỏi có sử dụng từ ngữ trung lập, không mang tính áp đặt ý kiến chủ quan của BA không?
|
|
29
|
+
- [ ] Có đưa ra các phương án gợi ý (Option A, Option B...) cho các vấn đề phức tạp để khách hàng dễ lựa chọn không?
|
|
30
|
+
- [ ] Các thuật ngữ viết tắt trong câu hỏi có được giải thích rõ không?
|
|
31
|
+
- [ ] Đã cập nhật đúng và đầy đủ tất cả câu trả lời của khách hàng vào tài liệu phân tích chưa? (Không bỏ sót bất kỳ điểm chốt nào).
|
|
32
|
+
|
|
33
|
+
## 5. Output mong đợi (Expected Output)
|
|
34
|
+
- File danh sách câu hỏi Q&A định dạng markdown, cấu trúc thống nhất dựa theo `@skill-ba-qa-template-v1.md`, đặt tên theo chuẩn: `Tên chức năng_Q&A(m).md` trong thư mục `TÀI LIỆU/output/QA/`.
|
|
35
|
+
- Tài liệu phân tích được cập nhật tương ứng với phiên bản mới tăng dần `(n+1)`.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Skill: Template Phân Tích Ban Đầu - Phiên bản v1
|
|
2
|
+
|
|
3
|
+
Mẫu tài liệu này được sử dụng để trình bày kết quả phân tích yêu cầu ban đầu sau khi bóc tách từ tài liệu thô.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Tài liệu Phân Tích Yêu Cầu Ban Đầu: [Tên Chức Năng]
|
|
8
|
+
|
|
9
|
+
## 1. Mục tiêu chức năng
|
|
10
|
+
*Mô tả ngắn gọn chức năng này dùng để làm gì? Giải quyết nhu cầu gì của doanh nghiệp hoặc người dùng?*
|
|
11
|
+
|
|
12
|
+
## 2. Các tác nhân chính (Actors)
|
|
13
|
+
*Liệt kê danh sách các tác nhân (User, Admin, Manager...) sẽ tương tác trực tiếp hoặc gián tiếp với chức năng.*
|
|
14
|
+
|
|
15
|
+
## 3. Yêu cầu chức năng chi tiết (Functional Requirements)
|
|
16
|
+
*Bóc tách chi tiết các tính năng nhỏ, các nút bấm, các hành động mà hệ thống phải xử lý.*
|
|
17
|
+
- **Giao diện/Trường thông tin:** Liệt kê các trường dữ liệu cần hiển thị hoặc nhập liệu.
|
|
18
|
+
- **Quy tắc nhập liệu sơ bộ:** Định dạng, bắt buộc hay không (Required/Optional).
|
|
19
|
+
|
|
20
|
+
## 4. Yêu cầu phi chức năng (Non-Functional Requirements)
|
|
21
|
+
*Các yêu cầu về bảo mật, hiệu suất, khả năng tương thích, hoặc giao diện UX/UI đặc thù.*
|
|
22
|
+
|
|
23
|
+
## 5. Bảng Phân Tích Khoảng Trống & Giả Định (Gap & Assumption Analysis)
|
|
24
|
+
|
|
25
|
+
| # | Tính năng/Luồng nghiệp vụ | Hiện trạng mô tả thô | Khoảng trống (Gap) / Sự mơ hồ phát hiện | Giả định của BA (Assumption) | Đề xuất giải pháp / Q&A ID tương ứng |
|
|
26
|
+
| :-: | :--- | :--- | :--- | :--- | :--- |
|
|
27
|
+
| 1 | *Ví dụ: Nhập Password* | *Mật khẩu được che giấu* | *Có nút show/hide mật khẩu hay không? Đăng nhập sai bao nhiêu lần thì khóa?* | *Mặc định không hiển thị nút show/hide. Cho phép nhập sai tối đa 5 lần.* | *Xem Q&A_01* |
|
|
28
|
+
| 2 | | | | | |
|
|
29
|
+
|
|
30
|
+
*Lưu ý: Bảng này là cơ sở quan trọng nhất để tạo ra danh sách câu hỏi Q&A chuẩn xác cho khách hàng.*
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Skill: Template Đặc tả Use Case (Use Case Spec) - Phiên bản v1
|
|
2
|
+
|
|
3
|
+
Cấu trúc chuẩn của một tài liệu đặc tả Use Case hoàn chỉnh dùng để chuyển giao cho Dev/Test.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Tài liệu Đặc Tả Use Case: Chức năng [Tên Chức Năng]
|
|
8
|
+
|
|
9
|
+
## 1. Thông tin chung (General Information)
|
|
10
|
+
|
|
11
|
+
| Thuộc tính | Mô tả chi tiết |
|
|
12
|
+
| :--- | :--- |
|
|
13
|
+
| **Tên chức năng (Function Name)** | [Tên chức năng chính xác] |
|
|
14
|
+
| **Mô tả (Description)** | [Tóm tắt mục đích và giá trị nghiệp vụ của chức năng] |
|
|
15
|
+
| **Tác nhân (Actors)** | [Danh sách các tác nhân sử dụng hoặc bị tác động] |
|
|
16
|
+
| **Tác nhân kích hoạt (Trigger)** | [Sự kiện kích hoạt luồng xử lý này] |
|
|
17
|
+
| **Điều kiện tiên quyết (Pre-Conditions)** | [Các điều kiện hệ thống hoặc trạng thái dữ liệu bắt buộc phải có trước khi thực hiện] |
|
|
18
|
+
| **Điều kiện sau xử lý (Post-Conditions)** | [Trạng thái của hệ thống và dữ liệu sau khi kết thúc thành công] |
|
|
19
|
+
|
|
20
|
+
### Luồng xử lý chính (Main Flow)
|
|
21
|
+
|
|
22
|
+
| Bước | Tác nhân (Actor Action) | Hệ thống (System Response) |
|
|
23
|
+
| :-: | :--- | :--- |
|
|
24
|
+
| 1 | Người dùng kích hoạt sự kiện... | Hệ thống hiển thị giao diện... |
|
|
25
|
+
| 2 | Người dùng nhập các thông tin... | |
|
|
26
|
+
| 3 | Người dùng nhấn nút... | Hệ thống kiểm tra và thực hiện... |
|
|
27
|
+
| 4 | | Hệ thống thông báo thành công và chuyển hướng... |
|
|
28
|
+
|
|
29
|
+
### Các luồng thay thế / ngoại lệ (Alternative / Exception Flows)
|
|
30
|
+
|
|
31
|
+
- **Alternative Flow A: [Tên luồng thay thế]**
|
|
32
|
+
- Thực hiện từ bước [X] của Luồng chính:
|
|
33
|
+
- Các bước xử lý: ...
|
|
34
|
+
- **Exception Flow B: [Tên luồng lỗi]**
|
|
35
|
+
- Thực hiện khi xảy ra lỗi: ...
|
|
36
|
+
- Các bước xử lý: ...
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 2. Mô tả màn hình (Screen Description)
|
|
41
|
+
*Nhúng code HTML của màn hình prototype hoặc ảnh chụp mockup tại đây:*
|
|
42
|
+
|
|
43
|
+
```html
|
|
44
|
+
<!-- Dán code HTML/CSS prototype ở đây -->
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 3. Mô tả thành phần giao diện (UI Components Description)
|
|
50
|
+
|
|
51
|
+
| # | Tên Component | Loại Component | Cho phép sửa | Bắt buộc | Giá trị mặc định | Quy tắc định dạng & Giới hạn dữ liệu | Mô tả hành vi & tương tác |
|
|
52
|
+
| :-: | :--- | :--- | :-: | :-: | :--- | :--- | :--- |
|
|
53
|
+
| 1 | `ログインID` | Textbox | Yes | Yes | None | Độ dài: 3-20 ký tự. Chỉ chữ và số. Không chứa khoảng trắng. | Ô nhập tên tài khoản của người dùng. |
|
|
54
|
+
| 2 | `ログイン` | Button | N/A | N/A | N/A | N/A | Nhấn để gửi thông tin đăng nhập lên hệ thống. |
|
|
55
|
+
| 3 | | | | | | | |
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 4. Sơ đồ luồng hoạt động (Activity Flow Diagram)
|
|
60
|
+
*Sử dụng biểu đồ Mermaid để trực quan hóa quy trình xử lý.*
|
|
61
|
+
|
|
62
|
+
```mermaid
|
|
63
|
+
graph TD
|
|
64
|
+
%% Viết mã nguồn Mermaid tại đây
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 5. Quy tắc nghiệp vụ (Business Rules)
|
|
70
|
+
|
|
71
|
+
### BR1: Quy tắc kiểm tra dữ liệu đầu vào (Validation Rules)
|
|
72
|
+
*Định nghĩa các lỗi khi người dùng nhập dữ liệu sai hoặc để trống.*
|
|
73
|
+
- **[BR1.1] Trống dữ liệu bắt buộc:** Nếu bất kỳ trường bắt buộc nào bị trống khi nhấn nút thực thi:
|
|
74
|
+
- Hệ thống dừng xử lý.
|
|
75
|
+
- Hiển thị lỗi tương ứng: `[Tên thông báo lỗi]` dưới ô nhập liệu bị trống.
|
|
76
|
+
- **[BR1.2] Định dạng dữ liệu không hợp lệ:** ...
|
|
77
|
+
|
|
78
|
+
### BR2: Quy tắc lưu trữ dữ liệu (Saving Rules)
|
|
79
|
+
*Định nghĩa cách dữ liệu được ghi nhận vào cơ sở dữ liệu.*
|
|
80
|
+
- **[BR2.1]** Hệ thống ghi nhận thời gian đăng nhập vào bảng `user_logs` với các trường: `user_id`, `login_time`, `status`.
|
|
81
|
+
|
|
82
|
+
### BR3: Quy tắc phân quyền & Bảo mật (Authorization & Security Rules)
|
|
83
|
+
- **[BR3.1]** Sau 5 lần nhập sai mật khẩu liên tiếp, tài khoản tự động bị khóa trong 30 phút.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Skill: Vẽ luồng hoạt động bằng Mermaid (Mermaid Charting) - Phiên bản v1
|
|
2
|
+
|
|
3
|
+
## 1. Mục đích (Purpose)
|
|
4
|
+
Kỹ năng này giúp BA chuyển đổi các đặc tả luồng nghiệp vụ văn bản (Main flow, Alternative flows, Exception flows) thành một sơ đồ hoạt động trực quan (Activity Diagram) sử dụng mã nguồn Mermaid. Sơ đồ này giúp lập trình viên nắm bắt luồng đi tổng thể của hệ thống một cách tức thì và giúp kiểm thử viên xác minh các nhánh rẽ của kịch bản.
|
|
5
|
+
|
|
6
|
+
## 2. Kiến thức cần có (Prerequisite Knowledge)
|
|
7
|
+
- **Cấu trúc biểu đồ Flowchart trong Mermaid:**
|
|
8
|
+
- Khai báo hướng biểu đồ: Dùng `graph TD` (Top-Down - từ trên xuống) hoặc `graph LR` (Left-to-Right - từ trái sang phải). Đối với quy trình nghiệp vụ phần mềm, khuyến nghị dùng `graph TD`.
|
|
9
|
+
- **Ký pháp hình khối chuẩn:**
|
|
10
|
+
- Khởi đầu/Kết thúc (Start/End): Dùng hình elip/bo góc `([Bắt đầu / Trang chủ])`.
|
|
11
|
+
- Hành động/Xử lý (Process/Action): Dùng hình chữ nhật `[Hành động của Actor hoặc xử lý của System]`.
|
|
12
|
+
- Điểm quyết định/Rẽ nhánh (Decision): Dùng hình thoi `{Điều kiện kiểm tra}`.
|
|
13
|
+
- Hiển thị thông tin/Thông báo lỗi: Dùng hình chữ nhật bo góc hoặc hình bình hành.
|
|
14
|
+
- **Liên kết nhánh (Arrows & Labels):** Sử dụng `-->|Nhãn nhánh rẽ|` để nối các khối và đặt tên cho các đường đi (ví dụ: `-->|Hợp lệ|`, `-->|Không hợp lệ|`).
|
|
15
|
+
|
|
16
|
+
## 3. Quy trình thực hiện (Step-by-step Process)
|
|
17
|
+
- **Bước 1: Xác định điểm bắt đầu và kết thúc:**
|
|
18
|
+
Điểm bắt đầu thường là trigger của Use Case (ví dụ: Người dùng nhấn nút mở trang, hoặc vào link URL). Điểm kết thúc là các Post-conditions (thành công hoặc dừng luồng lỗi).
|
|
19
|
+
- **Bước 2: Vẽ luồng chính trước (Happy Path):**
|
|
20
|
+
Nối các bước xử lý bình thường từ đầu đến cuối mà không có lỗi xảy ra. Sử dụng các mũi tên thẳng xuống.
|
|
21
|
+
- **Bước 3: Thêm các điểm rẽ nhánh (Alternative/Exception branches):**
|
|
22
|
+
Tại các bước hệ thống kiểm tra thông tin, chèn các khối hình thoi `{Điều kiện}`. Vẽ nhánh thành công tiếp tục đi xuống luồng chính, và các nhánh lỗi quay ngược lại form nhập liệu hoặc đi tới kết thúc lỗi.
|
|
23
|
+
- **Bước 4: Tinh chỉnh cú pháp Mermaid để tránh lỗi render:**
|
|
24
|
+
- Tránh sử dụng các ký tự đặc biệt như ngoặc đơn `()`, ngoặc vuông `[]`, dấu nháy kép bên trong nhãn của nút bấm trừ khi nhãn được bọc hoàn toàn trong dấu nháy kép. Ví dụ đúng: `A["Hiển thị thông báo (Lỗi 404)"]`.
|
|
25
|
+
- Đảm bảo mỗi khối có ID định danh độc nhất (ví dụ: `A`, `B`, `C`, `Step1`, `Check1`).
|
|
26
|
+
|
|
27
|
+
## 4. Checklist kiểm tra (Checklist for Verification)
|
|
28
|
+
- [ ] Biểu đồ có bắt đầu bằng `graph TD` không?
|
|
29
|
+
- [ ] Tất cả các điểm quyết định (các câu lệnh IF/THEN hoặc kiểm tra hợp lệ) có sử dụng hình thoi `{}` không?
|
|
30
|
+
- [ ] Các nhánh đi ra khỏi hình thoi có được gán nhãn rõ ràng (ví dụ: Đúng/Sai, Có/Không) không?
|
|
31
|
+
- [ ] Có nhánh lỗi nào bị "treo" (không dẫn đi đâu) không? Mọi nhánh phải dẫn về một bước thao tác tiếp theo hoặc kết thúc luồng.
|
|
32
|
+
- [ ] Nhãn của các khối chứa ký tự đặc biệt đã được bọc trong dấu nháy kép `""` chưa để tránh lỗi biên dịch Mermaid?
|
|
33
|
+
|
|
34
|
+
## 5. Output mong đợi (Expected Output)
|
|
35
|
+
- Một đoạn mã nguồn Mermaid hợp lệ, nằm trong khối ```mermaid và được nhúng trực tiếp vào Mục 4 của tài liệu Đặc tả Use Case.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Skill: Viết Đặc tả Use Case (Use Case Specification) - Phiên bản v1
|
|
2
|
+
|
|
3
|
+
## 1. Mục đích (Purpose)
|
|
4
|
+
Kỹ năng này giúp BA chuyển hóa toàn bộ các thông tin yêu cầu nghiệp vụ đã được thống nhất sau quá trình Q&A thành một tài liệu Đặc tả Use Case (Use Case Spec) hoàn chỉnh. Tài liệu này là "nguồn sự thật duy nhất" (Single Source of Truth) giúp đội ngũ Dev lập trình chính xác và đội ngũ Test thiết kế toàn bộ kịch bản kiểm thử (Test Cases/Scripts).
|
|
5
|
+
|
|
6
|
+
## 2. Kiến thức cần có (Prerequisite Knowledge)
|
|
7
|
+
- **Cấu trúc Use Case chuẩn:** Hiểu rõ các thành phần của một Use Case Spec bao gồm: Thông tin chung, Mô tả màn hình, Mô tả thành phần UI, Luồng hoạt động (Activity Flow) và Quy tắc nghiệp vụ (Business Rules).
|
|
8
|
+
- **Cách mô tả Luồng xử lý (Flow):**
|
|
9
|
+
- Phân biệt hành động của Tác nhân (Actor Action) và phản hồi của Hệ thống (System Response).
|
|
10
|
+
- Trình bày mạch lạc theo các bước đánh số thứ tự (1, 2, 3...).
|
|
11
|
+
- **Tính liên kết logic:** Đảm bảo mã lỗi, thông báo lỗi trong Business Rules phải khớp với các mô tả thành phần UI và vị trí hiển thị lỗi trên Prototype.
|
|
12
|
+
|
|
13
|
+
## 3. Quy trình thực hiện (Step-by-step Process)
|
|
14
|
+
- **Bước 1: Điền thông tin chung (General Information):**
|
|
15
|
+
Xác định chính xác Function Name, Description, Actors, Trigger, Pre-Conditions, Main Flow tóm tắt, và Post-Conditions.
|
|
16
|
+
- **Bước 2: Tích hợp thiết kế màn hình:**
|
|
17
|
+
Nhúng mã nguồn HTML/CSS (hoặc đường dẫn liên kết) của màn hình thiết kế tương ứng vào mục Screen Description.
|
|
18
|
+
- **Bước 3: Mô tả các thành phần UI (UI Components):**
|
|
19
|
+
Lập bảng chi tiết tất cả các control trên giao diện (các input fields, buttons, links, labels). Đối với mỗi thành phần, cần làm rõ:
|
|
20
|
+
- Kiểu dữ liệu nhập vào (Text, Number, Date...).
|
|
21
|
+
- Độ dài giới hạn (Min/Max length).
|
|
22
|
+
- Tính bắt buộc (Mandatory: Yes/No).
|
|
23
|
+
- Giá trị mặc định (Default Value).
|
|
24
|
+
- Mô tả hành vi (Description).
|
|
25
|
+
- **Bước 4: Thiết kế sơ đồ Mermaid (Activity Flow):**
|
|
26
|
+
Áp dụng kỹ năng `@skill-ba-ve-luong-mermaid-v1.md` để vẽ và nhúng biểu đồ Mermaid.
|
|
27
|
+
- **Bước 5: Đặc tả Business Rules (Quy tắc nghiệp vụ):**
|
|
28
|
+
Áp dụng kỹ năng `@skill-ba-xay-dung-business-rules-v1.md` để viết chi tiết các điều kiện kiểm tra, validation logic và câu thông báo lỗi đi kèm.
|
|
29
|
+
|
|
30
|
+
## 4. Checklist kiểm tra (Checklist for Verification)
|
|
31
|
+
- [ ] Luồng đi (Flow) có mô tả rõ ràng sự tương tác qua lại giữa Actor và System chưa?
|
|
32
|
+
- [ ] Bảng mô tả UI Components có bị bỏ sót bất kỳ thành phần nào trên prototype HTML không?
|
|
33
|
+
- [ ] Các Business Rules (BR) đã được đánh mã số rõ ràng (BR1, BR2, BR3...) để dễ tham chiếu chưa?
|
|
34
|
+
- [ ] Mọi trường hợp báo lỗi đều có câu thông báo lỗi (Error message) đi kèm chi tiết chưa?
|
|
35
|
+
- [ ] Tài liệu có sử dụng định dạng markdown chuẩn và cấu trúc thống nhất theo mẫu `@skill-ba-template-uc-v1.md` chưa?
|
|
36
|
+
|
|
37
|
+
## 5. Output mong đợi (Expected Output)
|
|
38
|
+
- Một tài liệu đặc tả Use Case hoàn chỉnh định dạng markdown, đặt tên theo chuẩn: `Tên chức năng_UC.md` trong thư mục `TÀI LIỆU/output/UC/`.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Skill: Phân tích và Xây dựng Business Rules (Quy tắc nghiệp vụ) - Phiên bản v1
|
|
2
|
+
|
|
3
|
+
## 1. Mục đích (Purpose)
|
|
4
|
+
Kỹ năng này giúp BA bóc tách, chuẩn hóa và đặc tả các quy tắc nghiệp vụ (Business Rules - BR) của hệ thống một cách chặt chẽ nhất. Các quy tắc nghiệp vụ được định nghĩa chi tiết tại đây sẽ là căn cứ trực tiếp để lập trình viên viết code logic (backend/frontend) và kiểm thử viên viết các kịch bản kiểm thử (Test Cases), đảm bảo bao phủ toàn bộ các trường hợp biên và ngoại lệ.
|
|
5
|
+
|
|
6
|
+
## 2. Kiến thức cần có (Prerequisite Knowledge)
|
|
7
|
+
- **Các loại Business Rules phổ biến:**
|
|
8
|
+
- *Validation Rules (Quy tắc kiểm tra dữ liệu):* Bao gồm kiểm tra rỗng (Required), kiểm tra định dạng (Format - Regex, Email, số điện thoại), kiểm tra độ dài/giới hạn (Length/Range), và kiểm tra ràng buộc chéo giữa các trường (Dependency validation - ví dụ: Ngày kết thúc phải sau Ngày bắt đầu).
|
|
9
|
+
- *Processing/Calculation Rules (Quy tắc xử lý và tính toán):* Các công thức toán học, thuật toán phân chia logic (ví dụ: công thức tính thuế, logic tính điểm thưởng).
|
|
10
|
+
- *Database/Saving Rules (Quy tắc lưu trữ và ghi nhận dữ liệu):* Các hành động xảy ra trong DB sau khi nghiệp vụ hoàn thành (ví dụ: lưu vào bảng log hệ thống, cập nhật trạng thái đơn hàng từ Draft sang Pending).
|
|
11
|
+
- *Authorization & Security Rules (Quy tắc phân quyền và bảo mật):* Ai được phép thao tác? Khi nào tài khoản bị khóa?
|
|
12
|
+
- **Cách phân tích Giá trị Biên (Boundary Value Analysis) & Phân vùng tương đương (Equivalence Partitioning):** Tư duy chia dữ liệu để phát hiện điểm thiếu logic (ví dụ: Quy định nhập từ 3-20 ký tự thì phải xác định rõ các biên 2, 3, 20, 21 ký tự sẽ xử lý thế nào).
|
|
13
|
+
|
|
14
|
+
## 3. Quy trình thực hiện (Step-by-step Process)
|
|
15
|
+
- **Bước 1: Xác định các điểm cần áp dụng Quy tắc nghiệp vụ:**
|
|
16
|
+
Duyệt qua danh sách các trường thông tin (Inputs) và các nút thao tác chính (Actions) trên giao diện.
|
|
17
|
+
- **Bước 2: Phân loại và phân nhóm các Business Rules:**
|
|
18
|
+
Đặt mã định danh duy nhất cho từng quy tắc dưới định dạng: `[BR<Nhóm>.<Số thứ tự>]`
|
|
19
|
+
- Nhóm 1: Validation (ví dụ: `[BR1.1]`, `[BR1.2]`)
|
|
20
|
+
- Nhóm 2: Processing & Saving (ví dụ: `[BR2.1]`)
|
|
21
|
+
- Nhóm 3: Authorization & Security (ví dụ: `[BR3.1]`)
|
|
22
|
+
- **Bước 3: Chi tiết hóa từng quy tắc nghiệp vụ:**
|
|
23
|
+
Mỗi quy tắc cần ghi rõ:
|
|
24
|
+
- **Điều kiện kích hoạt (Trigger/Condition):** Khi người dùng làm gì hoặc khi dữ liệu đạt trạng thái nào?
|
|
25
|
+
- **Logic kiểm tra (Logic/Calculation):** Hệ thống so sánh, tính toán như thế nào?
|
|
26
|
+
- **Kết quả trả về khi kiểm tra thất bại (Failure Action):** Hệ thống hiển thị câu thông báo lỗi (Error message) cụ thể là gì? Ở vị trí nào? Màu sắc ra sao?
|
|
27
|
+
- **Kết quả trả về khi kiểm tra thành công (Success Action):** Hệ thống lưu trữ vào bảng nào? Chuyển hướng đi đâu?
|
|
28
|
+
- **Bước 4: Rà soát tính đầy đủ cùng Tester:**
|
|
29
|
+
Đảm bảo mọi lỗi phát sinh đều có thông báo lỗi tương ứng và không bị chồng chéo logic.
|
|
30
|
+
|
|
31
|
+
## 4. Checklist kiểm tra (Checklist for Verification)
|
|
32
|
+
- [ ] Tất cả các trường dữ liệu bắt buộc (Mandatory fields) đã có quy tắc xử lý khi để trống chưa?
|
|
33
|
+
- [ ] Đã chỉ định chính xác vị trí hiển thị và nội dung chi tiết của các thông báo lỗi chưa? (Ví dụ: Hiển thị inline ngay dưới ô nhập liệu hay hiển thị popup cảnh báo?)
|
|
34
|
+
- [ ] Đã làm rõ logic đối với các ký tự đặc biệt, khoảng trắng (space) và chữ hoa/chữ thường chưa?
|
|
35
|
+
- [ ] Quy tắc lưu trữ đã chỉ ra các bảng cơ sở dữ liệu bị tác động trực tiếp chưa?
|
|
36
|
+
- [ ] Phân quyền thao tác cho từng tác nhân (Actor) đã được mô tả rõ chưa?
|
|
37
|
+
|
|
38
|
+
## 5. Output mong đợi (Expected Output)
|
|
39
|
+
- Mục 5 (Business rules) của tài liệu đặc tả Use Case chứa danh sách các quy tắc nghiệp vụ được cấu trúc hóa rõ ràng, ký hiệu hóa khoa học theo chuẩn `[BR...]`, có kèm theo nội dung text thông báo lỗi chi tiết.
|
|
@@ -71,6 +71,26 @@ Chờ tester trả lời rồi mới tiếp tục.
|
|
|
71
71
|
|
|
72
72
|
Nếu nhiều màn hình khác repo → hỏi từng màn hình một.
|
|
73
73
|
|
|
74
|
+
### Bước 1b: Đọc Source Code (nếu workspace có source repos)
|
|
75
|
+
|
|
76
|
+
Chạy ngay sau khi xác định được `Repo`, trước khi extract TCs.
|
|
77
|
+
|
|
78
|
+
Nếu workspace mở dạng parent folder chứa cả `ak docs` lẫn source code repos:
|
|
79
|
+
|
|
80
|
+
1. **Nếu GitNexus MCP có sẵn** (`.mcp.json` có entry `gitnexus`):
|
|
81
|
+
- `gitnexus: query("tên màn hình {ScreenID}")` → tìm component, page, form liên quan
|
|
82
|
+
- `gitnexus: context("ComponentName")` → xem toàn bộ component/template
|
|
83
|
+
2. **Nếu không có GitNexus**: đọc trực tiếp trong `{repo}/`:
|
|
84
|
+
- Component / Page / View của màn hình — tìm `data-testid`, `id`, `name` của các element
|
|
85
|
+
- Form / Input structure — hiểu hierarchy của DOM
|
|
86
|
+
- Route / path mapping — xác nhận URL path của màn hình
|
|
87
|
+
3. Lưu lại thông tin để Gate 2 (Script Sync) sử dụng:
|
|
88
|
+
- Danh sách `data-testid` / `id` của các element tương tác
|
|
89
|
+
- Cấu trúc form (fieldset, section, tab nếu có)
|
|
90
|
+
- URL path chính xác của màn hình
|
|
91
|
+
|
|
92
|
+
> Mục đích: Giúp `script-sync` (Gate 2) viết Playwright scripts với selectors chính xác hơn, giảm phụ thuộc vào browser snapshot khi app chưa chạy.
|
|
93
|
+
|
|
74
94
|
### Bước 2: Extract TCs từ Section 3
|
|
75
95
|
|
|
76
96
|
Đọc tất cả rows trong các bảng Section 3.x, extract:
|
|
@@ -146,7 +166,7 @@ Gen mới: {N} | Updated: {N} | Skipped: {N}
|
|
|
146
166
|
Manual (Untest): {N} TCs
|
|
147
167
|
Blocked: {N} TCs — xem lý do bên trên
|
|
148
168
|
|
|
149
|
-
→ Review: ak-test/{repo}/scripts/{screenId}/{ScreenID}.spec.ts
|
|
169
|
+
→ Review: [ak-test/{repo}/scripts/{screenId}/{ScreenID}.spec.ts](ak-test/{repo}/scripts/{screenId}/{ScreenID}.spec.ts)
|
|
150
170
|
→ Type APPROVED to run tests
|
|
151
171
|
→ Type SKIP: {TC_ID} để đánh dấu Pending và tiếp tục
|
|
152
172
|
→ Or provide feedback to fix scripts
|
|
@@ -433,7 +453,7 @@ Passed: {N}/{total} | % hoàn thành: {N}%
|
|
|
433
453
|
Bugs logged to Jira: {N}/{total bugs}
|
|
434
454
|
Recommendation: {Go / No-go / Conditional go}
|
|
435
455
|
|
|
436
|
-
→ Review: ak-test/{repo}/results/{screenId}/run-{N}/testreport.md
|
|
456
|
+
→ Review: [ak-test/{repo}/results/{screenId}/run-{N}/testreport.md](ak-test/{repo}/results/{screenId}/run-{N}/testreport.md)
|
|
437
457
|
→ Type APPROVED to sign off
|
|
438
458
|
→ Type NO-GO: {reason} to reject release
|
|
439
459
|
```
|