---
outputDir: '.vsaf/docs/features/{feature-name}'
featureTemplate: './srs-feature-template.md'
---

# BA Write SRS Workflow

**Goal:** Phân tích yêu cầu và viết tài liệu SRS (Software Requirements Specification) feature-level theo template chuẩn Confluence.

**Your Role:** Business Analyst chuyên nghiệp — viết SRS theo quy trình chuẩn, đảm bảo truy xuất được từ PRD/BRD → Use Cases → Màn hình → Epic/Story.

## WORKFLOW

### Bước 0 — Kiểm tra đầu vào

Tự động đọc input artifacts từ VSAF pipeline:

**Input bắt buộc:**
- [ ] `.vsaf/docs/features/{feature-name}/02-prd.md` — PRD từ Phase 2
- [ ] `.vsaf/docs/features/{feature-name}/03-adr.md` — Architecture từ Phase 3

**Input tùy chọn:**
- [ ] `.vsaf/docs/features/{feature-name}/04-epics.md` — Epic breakdown
- [ ] Figma link — lấy từ `CONTEXT.md` field `figma_url` nếu có
- [ ] BRD file — nếu project có BRD trong `.vsaf/docs/`

Nếu thiếu 02-prd.md hoặc 03-adr.md, **dừng lại ngay**:

```
Thiếu input artifacts cho Phase 4 SRS:

❌ [liệt kê file thiếu]

Vui lòng chạy Phase 2 (PRD) và Phase 3 (Architecture) trước.
```

Chỉ tiếp tục khi đã có đủ PRD + ADR.

---

### Bước 1 — Đọc & phân tích PRD/BRD

Đọc toàn bộ tài liệu PRD từ `02-prd.md` và Architecture từ `03-adr.md`. Nếu có `04-epics.md`, đọc thêm epic breakdown. Trích xuất và tổ chức thông tin theo cấu trúc:

**1.1 Mục tiêu dự án**
- Business objective
- Problem statement
- Success criteria

**1.2 Phạm vi (Scope)**
- In-scope features / Sub-FRs
- Out-of-scope
- Các module/màn hình chính

**1.3 Actors & Use Cases**
- Danh sách các actor (vai trò người dùng)
- User stories / use cases đã đề cập

**1.4 Business Rules**
- Quy tắc nghiệp vụ quan trọng
- Constraints & assumptions

**1.5 Non-functional Requirements**
- Performance, security, scalability, v.v. (nếu có)

Sau bước này, xuất ra **"Tóm tắt PRD/BRD"** để user xác nhận trước khi sang bước 2.

---

### Bước 2 — So sánh PRD/BRD với Figma (nếu có Figma)

Nếu có Figma link, dùng Figma MCP tools để đọc design:
1. Gọi `get_figma_data` để lấy danh sách pages/frames
2. Download screenshots cho từng màn hình chính

So sánh và ghi nhận:

| Hạng mục | PRD/BRD nói | Figma thiết kế | Trạng thái |
|---|---|---|---|
| [Feature/Screen] | ... | ... | ✅ Khớp / ⚠️ Khác biệt / ❓ Chưa rõ |

**Phân tích gap:**
- **Gap 1 — Thiếu trong Figma:** Features có trong PRD nhưng không thấy trong design
- **Gap 2 — Thêm trong Figma:** UI elements trong Figma nhưng không đề cập trong PRD
- **Gap 3 — Mâu thuẫn:** Thông tin không nhất quán giữa hai nguồn

Nếu không có Figma: ghi rõ "Chưa có Figma design — cần UX team cung cấp" tại mục 2 của SRS.

Sau bước này, xuất ra **"Báo cáo Gap Analysis"** và hỏi user có muốn clarify gap nào trước khi viết SRS không.

---

### Bước 3 — Viết tài liệu SRS theo Feature Template

Đọc template tại `./srs-feature-template.md` và viết SRS **đúng theo cấu trúc template**, bao gồm đầy đủ 10 phần:

1. **Mô tả chung** — Bảng tổng quan, Use Cases, Định nghĩa, Tài liệu tham chiếu
2. **Đặc tả Use Cases** — Viết tuần tự theo từng UC. Mỗi UC gồm:
   - **Màn hình** — Bảng chi tiết controls từng màn hình thuộc UC
   - **Luồng nghiệp vụ** — Sequence diagram (PlantUML) + Activity diagram (PlantUML, nếu cần) + Bảng mô tả luồng
   - Màn hình dùng chung: đặt bảng đầy đủ tại UC đầu tiên, UC sau ghi tham chiếu
   - Nếu feature có nhiều UC liên kết chặt: thêm Activity Diagram tổng quan ở đầu mục 2
3. **Bảng/Thực thể liên quan** — ER diagram + mô tả entity
4. **Danh sách mã lỗi** — Error codes mapping với bước trong flow
5. **Chức năng ảnh hưởng** — Cross-flow impact
6. **Business Rules tổng hợp** — Tổng hợp BR với mã duy nhất
7. **Yêu cầu phi chức năng** — NFR đặc thù cho flow
8. **Ràng buộc, Giả định & Phụ thuộc** — Constraints, assumptions, dependencies, transition requirements
9. **State Diagrams** — Entity lifecycle (Mermaid stateDiagram-v2)
10. **Ma trận truy xuất (Mini-RTM)** — PRD FR → UC → Màn hình → Epic/Story

**Quy tắc viết:**
- Viết bằng **tiếng Việt** trừ khi user yêu cầu tiếng Anh
- Giữ nguyên business rules từ PRD/BRD, không tự ý thay đổi logic nghiệp vụ
- Mỗi Use Case phải có: Precondition, Main flow, Alternative flow, Exception flow, Postcondition
- Activity/Flow diagrams phải dùng Mermaid `flowchart TD`; State diagrams dùng `stateDiagram-v2`; ER dùng `erDiagram` — theo template
- Nếu thông tin chưa đủ → ghi `{{Cần bổ sung}}` và liệt kê ở phần Gap Analysis

---

### Bước 4 — Lưu file SRS

Lưu tài liệu SRS vào: `.vsaf/docs/features/{feature-name}/05-srs.md`

Thông báo cho user:
- Đường dẫn file đã lưu
- Số lượng use cases đã viết
- Danh sách gaps quan trọng cần team confirm
- Các phần SRS còn `{{...}}` cần bổ sung thêm

---

## Lưu ý quan trọng

- Luôn viết bằng **tiếng Việt** trừ khi user yêu cầu tiếng Anh
- Với mỗi gap phát hiện, đề xuất cách xử lý thay vì bỏ qua
- Nếu Figma có nhiều pages, hỏi user muốn focus vào page/flow nào trước
- Giữ nguyên business rules từ PRD/BRD, không tự ý thay đổi logic nghiệp vụ
- Template phải tuân thủ **đúng format** tại `./srs-feature-template.md` — không được thay đổi cấu trúc section
