Files
sys-analysis-design/.claude/skills/ba-3-specification/templates/nfr-checklist.md
Leonard-ThindPad-P50 c81f249920 init git
2026-09-08 10:26:21 +07:00

149 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NFR — Yêu cầu phi chức năng — <US / Module>
| | |
|---|---|
| **Version** | 1.0 |
| **Date** | YYYY-MM-DD |
| **Author** | <BA> (skill ba-3-specification) |
| **Status** | 🟡 Draft |
| **Approved by** | Tech Lead: — |
| **Source** | |
| **Scope** | |
---
## Quy tắc
Mỗi NFR bắt buộc ba thứ. Thiếu một là khẩu hiệu, không phải yêu cầu:
1. **Con số đo được**
2. **Điều kiện đo** (bao nhiêu dữ liệu, bao nhiêu người dùng, môi trường nào)
3. **Cách verify** (ai đo, bằng công cụ gì, khi nào)
❌ "Hệ thống phải nhanh."
✅ "Danh sách chênh lệch trả về ≤ 2 giây ở p95, với 100.000 bản ghi và 20 người dùng đồng
thời, trên staging. Verify: k6 kịch bản S1, chạy trước mỗi release."
**Chỉ viết NFR áp dụng cho phạm vi này.** Copy cả bộ tiêu chuẩn công ty vào làm loãng và
không ai kiểm.
---
## 1. Hiệu năng — `NFR-PERF-nn`
| ID | Yêu cầu | Ngưỡng | Điều kiện đo | Cách verify | Ai chốt |
|---|---|---|---|---|---|
| NFR-PERF-01 | Thời gian tải danh sách | ≤ 2s (p95) | 100.000 bản ghi, 20 user đồng thời, staging | k6 kịch bản S1 | |
| NFR-PERF-02 | Thời gian lưu bản ghi | ≤ 1s (p95) | | | |
| NFR-PERF-03 | Xuất file | ≤ 30s cho 50.000 dòng | | | |
**Hỏi người dùng để lấy ngưỡng, đừng tự đặt:** *"Chậm bao lâu thì anh/chị thấy không chấp
nhận được?"* — con số họ nói mới là ngưỡng thật.
## 2. Dung lượng & tăng trưởng — `NFR-CAP-nn`
| Đại lượng | Hiện tại | Sau 1 năm | Sau 3 năm | Nguồn số liệu |
|---|---|---|---|---|
| Số bản ghi | | | | |
| Số giao dịch/ngày | | | | |
| Số người dùng đồng thời (giờ cao điểm) | | | | |
| Dung lượng file đính kèm | | | | |
🔴 **Điền bảng này trước rồi mới chốt ngưỡng hiệu năng.** Ngưỡng đặt trên khối lượng hôm nay
sẽ vỡ sau một năm.
| Giờ cao điểm | Khi nào | Vì sao |
|---|---|---|
| | *(vd: 9–10h sáng, cuối tháng)* | |
## 3. Bảo mật & quyền riêng tư — `NFR-SEC-nn`
| ID | Yêu cầu | Chi tiết | Căn cứ | Cách verify |
|---|---|---|---|---|
| NFR-SEC-01 | Dữ liệu cá nhân được che khi hiển thị | Che 6 số giữa của CCCD | | |
| NFR-SEC-02 | Chặn quyền ở backend, không chỉ ở giao diện | Mọi endpoint kiểm tra vai trò | RBAC §6 | Test gọi thẳng API |
| NFR-SEC-03 | Xuất dữ liệu nhạy cảm phải nhập lý do | | | |
**Rà bốn câu:**
| Câu hỏi | Trả lời |
|---|---|
| Có thông tin cá nhân không? Loại nào? | |
| Lưu bao lâu? Xoá thế nào khi hết hạn? | |
| Ai được xuất ra ngoài hệ thống? | |
| Có quy định pháp luật nào áp dụng không? | |
## 4. Lưu vết — `NFR-AUD-nn`
| Hành động | Ghi vết | Nội dung ghi | Giữ bao lâu | Ai xem được |
|---|---|---|---|---|
| Tạo/Sửa/Xoá | ✅ | ai · lúc nào · trước→sau | | |
| Phê duyệt | ✅ | ai · lúc nào · ghi chú | | |
| Xuất dữ liệu | ✅ | ai · lúc nào · **lý do** · số bản ghi | | |
**Log có phải hiển thị được cho người dùng không, hay chỉ để tra khi có sự cố?** — câu này
quyết định có cần làm màn hình lịch sử hay không.
## 5. Khả dụng & xử lý sự cố — `NFR-AVL-nn`
| ID | Yêu cầu | Ngưỡng | Ghi chú |
|---|---|---|---|
| NFR-AVL-01 | Thời gian hoạt động | | Trong giờ làm việc: … |
| NFR-AVL-02 | Cửa sổ bảo trì cho phép | | |
| NFR-AVL-03 | Hành vi khi hệ thống ngoài lỗi | | Xem bên dưới |
**Hệ thống ngoài lỗi thì nghiệp vụ này làm gì?** *(bắt buộc trả lời — đây là chỗ spec hay
im lặng và dev tự quyết)*
| Hệ thống ngoài | Nếu lỗi/chậm | Người dùng thấy gì | Dữ liệu xử lý sao |
|---|---|---|---|
| | Chặn hoàn toàn / Cho làm tiếp và đồng bộ sau / Chuyển thủ công | | |
## 6. Đa ngữ & định dạng — `NFR-I18N-nn`
🔴 **Nhóm hay bị bỏ nhất và gây bug ở môi trường thật nhiều nhất.**
| Khía cạnh | Yêu cầu | Ghi chú |
|---|---|---|
| Ngôn ngữ hỗ trợ | | Thiếu bản dịch thì hiển thị gì? |
| Múi giờ lưu trữ | | UTC hay giờ địa phương |
| Múi giờ hiển thị | | Theo người dùng hay cố định |
| Định dạng ngày | | |
| Dấu phân cách số | | `1.234,56` hay `1,234.56` |
| Đơn vị tiền | | Có đa tiền tệ không |
| Sắp xếp chuỗi có dấu | | "Ă" đứng trước hay sau "B" |
| Độ dài text sau khi dịch | | Text tiếng Đức/Hàn dài hơn — giao diện có vỡ không |
## 7. Khả năng truy cập & thiết bị — `NFR-ACC-nn`
| Khía cạnh | Yêu cầu |
|---|---|
| Trình duyệt hỗ trợ | |
| Kích thước màn hình nhỏ nhất | |
| Dùng trên điện thoại không | |
| Thao tác bằng bàn phím | |
| Tương phản màu | |
---
## 8. Nhóm không áp dụng
*Ghi rõ, đừng xoá — để người đọc biết là đã cân nhắc, không phải đã quên.*
| Nhóm | N/A vì |
|---|---|
| | |
## 9. Open Questions
| ID | Câu hỏi | Hỏi ai | Từ ngày | Chặn gì |
|---|---|---|---|---|
## 10. Xác nhận
| Vai trò | Người | Nội dung xác nhận | Ngày |
|---|---|---|---|
| Tech Lead | | ☐ Ngưỡng khả thi với kiến trúc hiện tại | |
| QA | | ☐ Mọi NFR đều có cách verify chạy được | |
| PO | | ☐ Ngưỡng phù hợp với kỳ vọng người dùng | |