Trường Số PRD/12 Phi chức năng
Trường Số · Yêu cầu sản phẩm · 09/2026

PRD 12 · Yêu cầu phi chức năng

Hiệu năng, bảo mật, tuân thủ bảo vệ dữ liệu cá nhân theo Nghị định 13/2023/NĐ-CP, kiểm soát truy cập theo vai trò, nhật ký, sao lưu, bản địa hoá và khả năng tiếp cận. Các yêu cầu này áp dụng cho mọi mô-đun và là tiêu chí chấp nhận để phát hành.

Xuất xứ / Prompt / Giới hạn
Status
Draft v1
Owner module
Nền tảng
Backend
Cross-cutting
Phase
P1 (đường cơ sở) / P2 (gia cố bảo mật)
Depends on
10 Cài đặt, 11 Dữ liệu và API

Tài liệu do trợ lý AI soạn trong một phiên làm việc ngày 10/09/2026, theo yêu cầu gốc được trích nguyên văn ở trang mục lục; mục Thiết kế đề xuất được bổ sung ngày 16/09/2026. Đây là bản đề xuất để đội thảo luận, chưa phải quyết định của đội sản phẩm.

Nguồn

  • Nghiên cứu công khai về đối thủ cạnh tranh (PSE ONE, pse4.one), mã nguồn center-crm-frontend và đặc tả OpenAPI /v3 trên staging (182 endpoint), tính đến ngày 10/09/2026.

Giới hạn

  • Cần xác minh khi khảo sát trực tiếp trong ứng dụng, vì đăng nhập tự động vào sản phẩm tham chiếu chưa được cấp phép trong phiên soạn:
    • Cách đối thủ xử lý khả năng xem dữ liệu theo từng chi nhánh cho một người dùng quản lý nhiều chi nhánh (bộ chuyển đổi hay giao diện gộp).
    • Liệu nhật ký thao tác của họ có hiển thị cho tenant hay chỉ dành cho đội hỗ trợ của họ.
    • Những gì họ trình bày là "sao lưu hằng ngày" với khách hàng (tự khôi phục hay phải gửi ticket).
    • Hành vi hết phiên đăng nhập và liệu số lượt đăng nhập đồng thời có bị giới hạn theo gói bản quyền hay không.

Thiết kế đề xuất

PRD này không có màn hình riêng: nội dung là nền tảng dùng chung. Thiết kế của từng tính năng nằm ở mục "Thiết kế đề xuất" đầu mỗi PRD mô-đun (00 đến 10 và 13 đến 19).

1Mục đích và phạm vi

Trường Số xử lý dữ liệu cá nhân của trẻ em, số điện thoại của phụ huynh và tiền bạc. Tài liệu này quy định mức tối thiểu cho cách sản phẩm vận hành dưới tải, cách sản phẩm bảo vệ dữ liệu, và cách sản phẩm chứng minh ai đã làm gì. Tài liệu bao quát ứng dụng web (Next.js 16 trên Cloudflare Pages / Node), API Rust của FLYER (/v3), gateway GraphQL v2, dịch vụ tải tệp lên, và các tích hợp thông báo (Zalo OA / ZNS, email, trong ứng dụng). Tài liệu không bao quát các ứng dụng người học của FLYER (exam.flyer.us, study.flyer.us) ngoài phạm vi ranh giới định danh.

2Hiệu năng và năng lực

Chỉ sốMục tiêuCách đo
Quy mô tenant được hỗ trợTối đa 5 chi nhánh, 3.000 học viên đang học, 300 lớp học, 150 nhân sự cho mỗi tenant mà giao diện không bị suy giảmTenant staging đã tạo sẵn dữ liệu mẫu "Big Center"
Các trang danh sách (học viên, học phí, điểm danh)Thời gian đến khi tương tác được (time to interactive) ≤ 2,0 giây trên laptop tầm trung đời 2023 qua mạng 4G; p95 API ≤ 400 ms cho trang 50 dòngPlaywright trace + p95 API từ log gateway
Tổng quan (PRD 09)p95 ≤ 1,5 giây với 12 widget; các widget tải độc lập, mỗi widget có khung skeleton riêngTương tự
Điểm danh (PRD 04)Lưu một buổi điểm danh 30 học viên ≤ 300 ms p95; giao diện optimistic, thử lại khi thất bạiAPI p95
Nhập từ Excel (PRD 11)5.000 dòng được kiểm tra hợp lệ trong ≤ 60 giây; tác vụ chạy bất đồng bộ kèm tiến độ; giao diện không bao giờ bị chặnMẫu tác vụ /v3/crm/imports đã có sẵn
Sinh thời khoá biểu (PRD 03)Sinh 200 buổi học cho một lớp ≤ 2 giây; kiểm tra trùng lịch cho một chi nhánh theo tuần ≤ 500 msĐo thời gian API
Thông báo hàng loạt (PRD 07)1.000 tin nhắn ZNS được đưa vào hàng đợi trong ≤ 10 giây; việc gửi diễn ra bất đồng bộ và báo cáo theo từng người nhậnSố liệu hàng đợi
Xuất dữ liệuCSV/XLSX tối đa 50.000 dòng được tạo phía server và gửi dưới dạng liên kết tải xuống trong vòng 60 giâyTrạng thái tác vụ
Khả dụng99,5% hằng tháng cho ứng dụng web và API trong khung giờ 06:00–23:00 giờ Việt Nam; các khung bảo trì được thông báo trước 48 giờ ngay trong ứng dụngGiám sát uptime qua /api/health
BundleJS ban đầu cho route dashboard ≤ 350 KB đã nén gzip; chia tách code theo từng route ở cấp mô-đunKết quả next build

Quy tắc thiết kế

3Bảo mật

Xác thực

Phân quyền

Bảo mật ứng dụng

4Bảo vệ dữ liệu cá nhân (Nghị định 13/2023/NĐ-CP)

Trường Số xử lý dữ liệu cá nhân cơ bản (họ tên, ngày sinh, số điện thoại, địa chỉ) và dữ liệu cá nhân nhạy cảm của trẻ em dưới 16 tuổi (ghi chú sức khoẻ, nếu có nhập). Trung tâm là bên kiểm soát dữ liệu; FLYER là bên xử lý dữ liệu. Sản phẩm phải giúp bên kiểm soát dữ liệu dễ dàng thực hiện các nghĩa vụ liên quan.

Nghĩa vụYêu cầu sản phẩmMô-đun
Sự đồng ý của chủ thể dữ liệu hoặc người giám hộ (Điều 11)Biểu mẫu nhập học và luồng khởi tạo tài khoản trên cổng phụ huynh ghi nhận một bản ghi đồng ý (id phiên bản nội dung, thời gian, kênh, danh tính phụ huynh). Nội dung đồng ý có thể chỉnh sửa theo từng tenant, kèm nội dung mặc định của FLYER. Có thể thu hồi từ cổng phụ huynh và bởi nhân sự.02, 07
Dữ liệu của trẻ em (Điều 20)Bản ghi học viên lưu sự đồng ý của phụ huynh trước khi gửi bất kỳ thông báo nào trực tiếp cho trẻ; sản phẩm không bao giờ nhắn tin trực tiếp cho một học viên dưới 16 tuổi, chỉ gửi cho phụ huynh.02, 07
Giới hạn mục đích sử dụngCác trường dữ liệu được nhóm theo mục đích trong tài liệu schema (PRD 11) và nội dung đồng ý liệt kê các mục đích: nhập học, điểm danh, tính phí, báo cáo học tập, marketing (đồng ý riêng).11
Quyền truy cập và chỉnh sửa (Điều 9)Cổng phụ huynh hiển thị toàn bộ dữ liệu đã lưu về người học và phụ huynh, và cho phép gửi yêu cầu chỉnh sửa, yêu cầu này trở thành một công việc cho giáo vụ.07
Quyền yêu cầu xoá dữ liệuNhân sự có thể ẩn danh hoá một học viên và phụ huynh (tên đổi thành "Học viên đã xoá", số điện thoại/email được xoá, tài liệu bị xoá) trong khi vẫn giữ lại bản ghi tài chính theo thời hạn luật định 10 năm. Hành động này cần quyền students.anonymise và được ghi vào nhật ký.02, 10
Hồ sơ xử lý dữ liệu và đánh giá tác động (Điều 24)FLYER duy trì hồ sơ xử lý dữ liệu; quản trị viên tenant có thể tải một mẫu "Hồ sơ đánh giá tác động" đã điền sẵn từ Cài đặt.10
Thông báo sự cố (72 giờ)Quy trình xử lý sự cố (runbook) kèm mẫu email thông báo cho tenant; nhật ký hỗ trợ xác định phạm vi các tenant bị ảnh hưởng.Nền tảng
Chuyển dữ liệu xuyên biên giớiLưu trữ chính tại ap-southeast-1 (Singapore) là một lượt chuyển dữ liệu xuyên biên giới; hợp đồng với tenant và nội dung đồng ý có công bố điều này. Lộ trình: tuỳ chọn khu vực Việt Nam cho các tenant doanh nghiệp.Nền tảng
Lưu trữ dữ liệuLead (PRD 01) không được chuyển đổi trong vòng 24 tháng sẽ tự động bị ẩn danh hoá; dữ liệu điểm danh và học tập được giữ trong suốt thời gian học viên còn đang học cộng thêm 5 năm; chứng từ tài chính giữ 10 năm.01, 05

Sự đồng ý nhận marketing tách biệt với sự đồng ý sử dụng dịch vụ. Các biểu mẫu ghi nhận lead phục vụ PRD 01 phải có một ô tick riêng cho marketing; bản ghi lead lưu marketing_consent_at.

5Kiểm soát truy cập theo vai trò

Ma trận đầy đủ nằm ở PRD 10. Các quy tắc ở cấp nền tảng gồm:

6Nhật ký

CRM hiện đã cung cấp GET /v3/crm/customers/{id}/audit-logs cho một đối tượng. Yêu cầu ở cấp nền tảng tổng quát hoá điều này cho toàn bộ hệ thống.

TrườngKiểu dữ liệuGhi chú
iduuid
tenant_id, branch_idint64 / uuid
actor_user_id, actor_display_name, actor_role_codeảnh chụp tại thời điểm thực hiện hành động
actiontextstudent.update, tuition.pay, attendance.mark, role.permissions.put ...
entity_type, entity_idtext, text
before, afterjsonbchỉ các trường đã thay đổi; các trường liên quan đến tiền và trạng thái luôn được bao gồm
ip, user_agenttext
request_idtextliên kết với log API
created_attimestamptzkhông thể chỉnh sửa; bảng chỉ cho phép ghi thêm (append-only), không cấp quyền UPDATE/DELETE

7Sao lưu, khôi phục và khả năng chuyển dữ liệu

8Bản địa hoá (vi / en)

9Khả năng tiếp cận và hỗ trợ thiết bị

10Giám sát và vận hành

11Checklist nghiệm thu trước khi phát hành

  1. Các mục tiêu hiệu năng ở mục 2 đạt được trên tenant "Big Center" đã tạo sẵn dữ liệu mẫu, số liệu được ghi lại trong release note.
  2. Bảo mật: quét dependency tự động không còn lỗi nghiêm trọng; kiểm tra thủ công tính cách ly giữa các tenant trên từng endpoint mới (thử id thuộc tenant khác phải trả về 404).
  3. Bảo vệ dữ liệu cá nhân: có ghi nhận sự đồng ý ở mọi điểm nhập dữ liệu mới cho phụ huynh và học viên; luồng ẩn danh hoá đã được kiểm thử.
  4. Nhật ký: mọi hành động bắt buộc ở mục 6 đều ghi một dòng nhật ký; đã xác minh theo kế hoạch kiểm thử (xem Kế hoạch kiểm thử).
  5. i18n: bộ key của vi và en giống hệt nhau; đính kèm ảnh chụp màn hình của cả hai locale.
  6. Khả năng tiếp cận: chạy axe không còn lỗi nghiêm trọng nào trên các màn hình chính của mô-đun; đã ghi lại việc thao tác thử bằng bàn phím.
  7. Sao lưu: diễn tập khôi phục snapshot của tuần phát hành thành công trên staging.

Trường Số (truongso.net) · Nội bộ FLYER