This commit is contained in:
Leonard-ThindPad-P50
2026-09-08 10:26:21 +07:00
commit c81f249920
169 changed files with 38726 additions and 0 deletions

View File

@@ -0,0 +1,148 @@
# 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 | |