Skip to content

US-[ID]: [Tên User Story] ​

Thuộc FS: 00-overview.md — [TÊN FEATURE] Phần chung (tổng quan, roles, flow tổng, related features, NFR, Open Questions, References) xem ở Overview. File này chỉ chứa nội dung riêng của US.

FieldValue
US IDUS-[ID]
Role thực hiện[R1 - End user]
PhaseMVP / Phase 2
PriorityP0 / P1 / P2
StatusDraft / Ready / Approved
NFR liên quan[NFR-01, NFR-03 — xem Overview §5]
OQ liên quan[OQ-001 — xem Overview §6, hoặc "Không có"]

1. US Statement ​

text
As a [role]
I want [hành động]
So that [lợi ích]

2. Dependencies & Definition Of Ready ​

US này chỉ sẵn sàng để build khi các dependency dưới đây đã rõ.

#Cần sẵn sàngAi cung cấpTrạng thái
D1Figma frame M1, M2 final@Designer☐
D2API /xxx ready hoặc đã có contract@Backend☐
D3US-XX merged hoặc behavior đã được confirm@Frontend☐

3. Business Rules ​

Đặt business rules trước phần design để field/action/validation có rule tham chiếu rõ ràng.

Mỗi BR phải có ít nhất 1 AC (hoặc field/action/NFR cụ thể) cover — điền cột "Đã cover bởi". BR chưa có AC cover → bổ sung AC hoặc tạo Open Question ở Overview §6, không để trống.

IDRuleÁp dụng ởĐã cover bởi (AC)Nguồn code (Mode B/C)
BR-01[Rule nghiệp vụ]M1 - action [Tên action]AC-M1.x[file.ts:dòng — Mode A: N/A]
BR-02[Rule nghiệp vụ]M2 - field [Tên field]AC-M2.x
BR-03[Rule nghiệp vụ][Màn/action/field liên quan]AC-Mx.x / EC-Mx.x

Mode B/C: rule mô tả hành vi quan sát được trong code, viết bằng ngôn ngữ nghiệp vụ (không tên class/biến trong cột Rule). Hành vi nghi là bug → không viết thành rule: ghi ⚠️ Observed + tạo OQ ở Overview §6. Mode C: thêm tiền tố [NEW] / [CHANGED] / [UNCHANGED] cho mỗi BR.

4. Design ​

a. Mối liên hệ giữa các màn & User Flow ​

text
[Entry]
  ↓ user click X
[M1: Search]
  ↓ chọn item
[M2: Confirm]
  ├─ submit OK ──→ [M3: Success]
  ├─ lỗi A ──────→ ở lại M2, hiện inline error
  └─ lỗi B ──────→ [M4: Modal error]

Link flow chi tiết nếu có:

  • Mermaid / Excalidraw / Figma flow: [Link]

b. Chi tiết từng màn ​

Quy ước:

  • Mỗi màn dùng mã M1, M2, ... (trong phạm vi US này).
  • Mỗi màn tương ứng một Figma frame riêng nếu có UI.
  • Nếu thiếu frame/state, ghi rõ TODO: Designer bổ sung.

Màn M1 - [Tên màn] ​

FieldValue
Figma frame[Link frame cụ thể]
Trigger vào màn[User làm gì để vào màn này]
Mô tả ngắn[1-2 câu mô tả mục đích màn]
UI States ​
StateKhi nàoHiển thịFigma frame
DefaultVừa vào màn[Mô tả UI][Link]
LoadingĐang load dataSkeleton/spinner[Link]
Has dataCó data[Mô tả UI][Link]
EmptyKhông có dataEmpty state + CTA nếu có[Link]
ErrorAPI lỗiToast/inline error + retry nếu có[Link]
DisabledĐiều kiện chưa đủ[Mô tả UI disabled][Link]

Frame thiếu: ghi TODO: Designer bổ sung [tên state].

Fields ​

Field list + thuộc tính + rule lấy từ bước Field Intake. Marker: [đề xuất] = AI tự điền chờ BA review; ❓BA = cần BA cung cấp (chưa suy được). Ô ❓BA chưa quyết → Open Question ở Overview, không bịa.

FieldRequiredTypeDefaultFormatValidationError MessageVisibilityDepends On
[Tên field]Yes/NoText/Number/Date/Dropdown/...[Default][dd/MM/yyyy, regex, max length][Rule + ref BR-XX][Text khi sai]Always/Hidden/Readonly[Field X = Y thì field này...]
Filter / Search / Sort (chỉ màn List/Report — xóa nếu không phải) ​
LoạiTheo fieldKiểuDefaultNotes
Filter[field]dropdown / range / date range / multi-select[Tất cả]
Search[field]free-text—
Sort[field][field + chiều mặc định]
Pagination—[page size]
Actions ​
A1 - [Tên action] ​
ItemDescription
Trigger[User làm gì]
Behavior[Hệ thống xử lý gì, ref BR-XX nếu có]
Success Result[Kết quả mong đợi]

Error cases:

CaseExpected Handling
[Lỗi 1][Hiển thị gì / xử lý gì]
[Lỗi 2][Hiển thị gì / xử lý gì]
Acceptance Criteria của màn M1 ​

Format chuẩn: Given - When - Then.

AC-M1.1 - [Tên ngắn] ​
gherkin
Given [điều kiện]
When [hành động]
Then [kết quả]

Maps to:

  • Business Rule: [BR-XX]
  • Field/Action: [Tên field/action nếu có]
AC-M1.2 - [Tên ngắn] ​
gherkin
Given [điều kiện]
When [hành động]
Then [kết quả]

Maps to:

  • Business Rule: [BR-XX]
Negative AC / Edge Cases của màn M1 ​
IDTình huốngHành vi mong đợi
EC-M1.1Mất mạng giữa flow[Expected behavior]
EC-M1.2Mở 2 tab cùng thao tác[Expected behavior]
EC-M1.3Input có ký tự đặc biệt/emoji[Expected behavior]
EC-M1.4Refresh trang giữa modal[Expected behavior]

Màn M2 - [Tên màn] ​

[Lặp toàn bộ cấu trúc màn M1: Figma frame, trigger, UI States, Fields, Actions, Acceptance Criteria, Negative AC / Edge Cases.]

5. Cross-feature AC ​

AC riêng cho các trường hợp US này ảnh hưởng đến hoặc bị ảnh hưởng bởi tính năng khác ngoài tính năng hiện tại.

Nếu không có cross-feature AC, ghi: Không có.

Trường Maps to phải dùng mã REL-XX đã khai báo ở mục 3. Các tính năng liên quan của Overview.

AC-X.1 - [Tên cross-feature AC] ​

gherkin
Given [điều kiện]
When [hành động]
Then [kết quả]

Maps to:

  • REL-XX ([Affects / Be Affected] - [Tên feature/module liên quan])