# NFR — Yêu cầu phi chức năng — | | | |---|---| | **Version** | 1.0 | | **Date** | YYYY-MM-DD | | **Author** | (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 | |