Tài liệu dự án · Sách ôn thi Hybrid TNTHPT

#03 – Đặc tả yêu cầu phần mềm (SRS)

Giai đoạn: Đặc tả (Requirements Specification) · Tham chiếu cấu trúc ISO/IEC/IEEE 29148 · Phiên bản 0.1 – 29/10/2026

Tài liệu này mô tả hệ thống phải làm gì. Cách hiện thực ở 06, 07, 08. Tiêu chí chấp nhận chi tiết theo từng story ở 04.

#1. Giới thiệu

#1.1 Mục đích

Đặc tả yêu cầu chức năng, quy tắc nghiệp vụ và yêu cầu phi chức năng của Nền tảng số sách ôn thi hybrid TNTHPT, làm căn cứ thống nhất giữa HEID/NV06 và SK cho thiết kế, phát triển, kiểm thử và nghiệm thu.

#1.2 Thuật ngữ

Thuật ngữ Định nghĩa
Sách hybrid Sách giấy có in mã liên kết đến tài nguyên số tương ứng
Mã kích hoạt Mã duy nhất kèm mỗi cuốn sách (QR/tem cào), dùng để gắn quyền sử dụng học liệu số của sách vào tài khoản
ID nội dung (gọi tắt ID) Mã ngắn in cạnh từng mục trên sách (mind map, ví dụ, bài tập, đề), dùng để mở tài nguyên số tương ứng
QR nội dung Mã QR in cạnh ID, chứa đường dẫn trực tiếp đến tài nguyên (deep link)
Tài nguyên số Một đơn vị nội dung số mở được bằng ID: lý thuyết, ví dụ, bộ bài tập, đề
Bài làm (Assessment) Tài nguyên có câu hỏi để làm: bộ bài tập, placement test, đề thi thử, đề luyện tập, đề mở rộng
Lượt làm bài (Attempt) Một lần học sinh bắt đầu và nộp một bài làm
Chế độ "Giao diện đề thi" Hiển thị đầy đủ nội dung câu hỏi và ô trả lời trên máy
Chế độ "Phiếu trả lời" Chỉ hiển thị lưới số câu + ô chọn đáp án; học sinh đọc đề trên sách giấy
Chế độ "Một câu/màn hình" Mỗi câu một màn hình, ghi nhận thời gian từng câu (placement test)
Chế độ "Tra đáp án" Xem đáp án và lời giải mà không làm bài trên máy (học sinh đã làm trên giấy)
Ma trận kiến thức Hệ thống nhãn (tag): chuyên đề, kỹ năng, dạng bài, mức độ nhận thức, dùng để gắn cho câu hỏi và tính đề xuất
Quyền sử dụng (Entitlement) Quyền truy cập một sách hoặc một gói đề của một tài khoản, có nguồn (kích hoạt, mua, giao bài) và thời hạn
Rubric Hướng dẫn chấm theo tiêu chí và thang điểm cho câu tự luận
BTV Biên tập viên
LMS Hoclieu Hệ thống quản lý học tập của hoclieu.vn mà giáo viên đang dùng

#1.3 Tài liệu tham chiếu

[MT], [UF], [YC] (xem README); 01 – Tầm nhìn; 02 – Phân tích đầu vào.

#2. Mô tả tổng quan

#2.1 Ngữ cảnh hệ thống

flowchart LR
    HS(["Học sinh"]) -- "Kích hoạt, nhập ID,<br/>học, làm bài" --> SYS
    GV(["Giáo viên"]) -- "Giao bài, xem báo cáo" --> SYS
    BTV(["Biên tập viên"]) -- "Soạn nội dung, ID,<br/>ma trận kiến thức" --> SYS
    ADM(["Admin HEID"]) -- "Báo cáo, vận hành" --> SYS
    SACH[/"Sách giấy<br/>(ID, QR, mã kích hoạt)"/] -. "in từ dữ liệu xuất ra" .- SYS
    SYS["Nền tảng số<br/>sách ôn thi hybrid"]
    SYS <-- "SSO, lớp học, giao bài" --> LMS[["Hoclieu.vn<br/>tài khoản + LMS"]]
    SYS <-- "Thanh toán, IPN" --> PAY[["Cổng thanh toán"]]
    SYS <-- "Lưu trữ, phát video" --> VID[["Dịch vụ video/CDN"]]
    SYS -- "OTP, thông báo" --> MSG[["SMS / Email / Zalo ZNS"]]

#2.2 Tác nhân (Actors)

Tác nhân Mô tả Quyền chính
Khách Người chưa đăng nhập (vừa quét QR) Xem trang giới thiệu, nội dung xem thử, đăng ký/đăng nhập
Học sinh (HS) Người dùng đã đăng nhập Kích hoạt sách, dùng học liệu của sách đã kích hoạt, làm bài, xem kết quả, mua gói
Giáo viên (GV) Tài khoản có vai trò giáo viên Quản lý lớp, giao bài, xem báo cáo lớp
Biên tập viên (BTV) Người dùng CMS Soạn, nhập, gắn tag nội dung; sinh ID; gửi duyệt
Trưởng ban biên tập Người dùng CMS có quyền duyệt Duyệt, xuất bản nội dung; khoá ID
Admin HEID Quản trị Báo cáo, quản lý người dùng, lô mã kích hoạt, gói đề, cấu hình
Hệ thống ngoài LMS Hoclieu, cổng thanh toán, dịch vụ video, dịch vụ tin nhắn Tích hợp

#2.3 Sơ đồ use case

flowchart LR
    HS(["Học sinh"])
    GV(["Giáo viên"])
    BTV(["BTV"])
    ADM(["Admin HEID"])
    subgraph SYS["Nền tảng số sách hybrid"]
        UC01(["UC-01 Kích hoạt sách"])
        UC02(["UC-02 Mở tài nguyên bằng ID/QR"])
        UC03(["UC-03 Học lý thuyết, ví dụ, video"])
        UC04(["UC-04 Làm bài trên máy"])
        UC05(["UC-05 Xem kết quả và lời giải"])
        UC06(["UC-06 Tự chấm bài tự luận"])
        UC07(["UC-07 Nhận đề xuất củng cố"])
        UC08(["UC-08 Xem lịch sử và tiến bộ"])
        UC09(["UC-09 Mua gói đề mở rộng"])
        UC16(["UC-16 Tra đáp án khi làm trên giấy"])
        UC17(["UC-17 Duyệt thư viện học liệu"])
        UC10(["UC-10 Giao bài cho lớp"])
        UC11(["UC-11 Xem báo cáo lớp"])
        UC12(["UC-12 Quản lý nội dung, câu hỏi, video"])
        UC13(["UC-13 Quản lý ID và mã kích hoạt"])
        UC14(["UC-14 Thiết lập ma trận kiến thức"])
        UC15(["UC-15 Xem báo cáo hành vi"])
    end
    HS --- UC01 & UC02 & UC03 & UC04 & UC05 & UC06 & UC07 & UC08 & UC09 & UC16 & UC17
    GV --- UC10 & UC11
    BTV --- UC12 & UC13 & UC14
    ADM --- UC13 & UC15

#2.4 Môi trường vận hành

  • Web responsive (ưu tiên mobile), hỗ trợ trình duyệt trong ứng dụng (Zalo, Facebook) khi quét QR.
  • CMS và trang quản trị dùng trên máy tính.
  • Hạ tầng đám mây, đặt tại Việt Nam hoặc đáp ứng quy định lưu trữ dữ liệu hiện hành.

#3. Đặc tả use case chính

#UC-01 – Kích hoạt sách

Mục Nội dung
Tác nhân Học sinh (hoặc Khách)
Nguồn YC01, A1
Tiền điều kiện Học sinh có sách và mã kích hoạt còn hiệu lực
Hậu điều kiện Tài khoản có quyền sử dụng (entitlement) học liệu số của sách; mã chuyển trạng thái đã dùng
Kích hoạt Học sinh quét QR kích hoạt trên sách, hoặc chọn "Kích hoạt sách" trong ứng dụng

Luồng chính

  1. Học sinh quét QR kích hoạt → hệ thống mở trang kích hoạt với mã được điền sẵn.
  2. Nếu chưa đăng nhập, hệ thống yêu cầu đăng nhập/đăng ký và giữ lại mã.
  3. Hệ thống kiểm tra mã: tồn tại, chưa dùng, chưa bị thu hồi, còn hiệu lực.
  4. Hệ thống hiển thị thông tin sách (môn, tên sách, năm) để học sinh xác nhận.
  5. Học sinh xác nhận → hệ thống tạo quyền sử dụng, ghi sự kiện book_activated.
  6. Hệ thống hiển thị "Kích hoạt thành công" và hướng dẫn cách dùng ID trên sách.

Luồng thay thế / ngoại lệ

  • 1a. Nhập mã thủ công: học sinh gõ mã vào ô "Kích hoạt sách" → tiếp bước 3.
  • 3a. Mã không tồn tại → thông báo lỗi, gợi ý kiểm tra lại các ký tự dễ nhầm; tăng bộ đếm sai.
  • 3b. Mã đã được chính tài khoản này dùng → thông báo "Sách đã được kích hoạt", chuyển tới sách.
  • 3c. Mã đã được tài khoản khác dùng → thông báo, hướng dẫn liên hệ hỗ trợ (kèm mã tham chiếu).
  • 3d. Sai quá 5 lần trong 10 phút → yêu cầu captcha / tạm khoá 15 phút (BR-02).

#UC-02 – Mở tài nguyên bằng ID / QR

Mục Nội dung
Tác nhân Học sinh, Khách
Nguồn YC02, [MT] cột "Liên kết giấy – số", [UF] các bước "Nhập ID"
Tiền điều kiện ID được in trên sách và đã được xuất bản trên hệ thống
Hậu điều kiện Học sinh đang xem đúng tài nguyên; sự kiện code_resolved được ghi

Luồng chính

  1. Học sinh nhập ID vào ô "Nhập ID" (có trên trang chủ và thanh đầu trang) hoặc quét QR nội dung.
  2. Hệ thống chuẩn hoá ID (bỏ khoảng trắng, chuyển chữ hoa, đổi ký tự dễ nhầm theo BR-05).
  3. Hệ thống tra ID trong phạm vi các sách học sinh đã kích hoạt (BR-06) → xác định tài nguyên và loại.
  4. Hệ thống kiểm tra quyền sử dụng → mở trang tương ứng theo loại:
    • THEORY → trang lý thuyết; EXAMPLE → trang ví dụ;
    • EXERCISE_SET, MOCK_EXAM, PRACTICE_EXAM, PLACEMENT_TEST → trang giới thiệu bài làm (chọn Làm trên máy hoặc Tra đáp án).

Luồng thay thế / ngoại lệ

  • 3a. Không tìm thấy ID → thông báo, gợi ý ID gần đúng (cùng tiền tố), hình minh hoạ vị trí ID trên sách.
  • 3b. ID thuộc sách chưa kích hoạt → hiển thị thông tin sách + nút "Kích hoạt sách"; nếu ID thuộc danh sách xem thử thì cho xem.
  • 3c. ID đã ngừng sử dụng (RETIRED) → chuyển hướng tới tài nguyên thay thế nếu có.
  • 4a. Chưa đăng nhập → đăng nhập rồi quay lại đúng tài nguyên (giữ nguyên deep link).

#UC-04 – Làm bài trên máy

Mục Nội dung
Tác nhân Học sinh
Nguồn YC04, [MT] các phần bài tập/đề, N5, N6
Tiền điều kiện Học sinh có quyền sử dụng bài làm
Hậu điều kiện Lượt làm bài được nộp, được chấm (câu khách quan), kết quả lưu vào lịch sử

Luồng chính

  1. Tại trang giới thiệu bài làm, hệ thống hiển thị: tên bài, số câu, thời gian, cấu trúc phần, số lượt đã làm.
  2. Học sinh chọn chế độ hiển thị (nếu bài cho phép): Giao diện đề thi hoặc Phiếu trả lời; chọn Tính giờ hoặc Luyện tập tự do (với bài tập).
  3. Học sinh bấm "Bắt đầu" → hệ thống tạo lượt làm bài, bắt đầu tính giờ phía máy chủ.
  4. Học sinh trả lời; hệ thống tự lưu sau mỗi thay đổi (tối đa 5 giây trễ) và hiển thị trạng thái "Đã lưu".
  5. Học sinh có thể đánh dấu câu để xem lại, chuyển câu qua bảng điều hướng.
  6. Học sinh bấm "Nộp bài" → hệ thống cảnh báo số câu chưa làm → học sinh xác nhận.
  7. Hệ thống chấm câu khách quan (BR-08…BR-12), lưu kết quả, chuyển tới UC-05.

Luồng thay thế / ngoại lệ

  • 2a. Placement test: luôn ở chế độ Một câu/màn hình, không quay lại câu trước (Q19), ghi thời gian từng câu.
  • 4a. Mất kết nối → câu trả lời lưu tạm trên thiết bị, đồng bộ khi có mạng; cảnh báo "Đang ngoại tuyến".
  • 4b. Đóng trình duyệt giữa chừng → khi mở lại bài, hệ thống đề nghị "Tiếp tục lượt đang làm".
  • 4c. Hết giờ → hệ thống tự nộp phần đã làm (BR-14).
  • 4d. Bài có câu tự luận → ô soạn văn bản có đếm từ; tuỳ chọn tải ảnh bài viết tay (P1).

#UC-05 – Xem kết quả và lời giải

Luồng chính: Sau khi nộp → hiển thị điểm (thang 10 với đề; số câu đúng/tổng với bài tập), điểm theo phần, thời gian làm bài → danh sách câu với trạng thái đúng/sai/bỏ trống → mở từng câu xem đáp án đúng, đáp án đã chọn, lời giải text, video (nếu có) → khối "Đề xuất củng cố" (UC-07) → nút "Làm lại", "Quay lại học tiếp trên sách". Ngoại lệ: Bài tự luận → hiển thị bài làm cạnh hướng dẫn giải và rubric, mời tự chấm (UC-06).

#UC-06 – Tự chấm bài tự luận

Học sinh mở từng câu tự luận → xem hướng dẫn chấm theo tiêu chí → chọn mức đạt cho từng tiêu chí → hệ thống cộng điểm, gắn nhãn "Tự đánh giá" → lưu và dùng cho đề xuất kỹ năng (BR-13). Học sinh có thể bỏ qua tự chấm.

#UC-07 – Nhận đề xuất củng cố

Hệ thống tính tỷ lệ sai theo chuyên đề/kỹ năng/dạng bài của lượt vừa nộp (BR-16, BR-17) → hiển thị tối đa 5 mục, mỗi mục có liên kết: Lý thuyết · Ví dụ · Bài tập thực hành cùng chuyên đề, kèm ID trên sách để học sinh mở sách giấy → ghi sự kiện recommendation_shown, recommendation_clicked.

#UC-16 – Tra đáp án khi làm trên giấy

Tại trang giới thiệu bài làm, học sinh chọn "Tôi đã làm trên giấy – xem đáp án" → hệ thống hiển thị bảng đáp án và lời giải từng câu. Tuỳ chọn: học sinh nhập nhanh đáp án đã làm trên giấy vào Phiếu trả lời để được chấm và nhận đề xuất (khuyến khích bằng thông điệp "Nhập đáp án để biết chuyên đề cần ôn").

#Các use case còn lại (tóm tắt)

UC Tên Tác nhân Mô tả ngắn FR
UC-03 Học lý thuyết, ví dụ, video HS Xem nội dung text (có công thức, hình), phát video, chuyển sang tài nguyên liên quan cùng chuyên đề FR-03.x
UC-08 Xem lịch sử và tiến bộ HS Danh sách lượt làm, xem lại chi tiết, biểu đồ điểm theo môn FR-07.x
UC-09 Mua gói đề mở rộng HS Xem gói → đặt mua → thanh toán → nhận quyền truy cập FR-08.x
UC-10 Giao bài cho lớp GV Chọn lớp (đồng bộ từ LMS), chọn đề, đặt thời hạn → học sinh nhận bài FR-09.01–03
UC-11 Xem báo cáo lớp GV Tiến độ nộp, phổ điểm, điểm từng học sinh, câu/chủ đề sai nhiều FR-09.04–07
UC-12 Quản lý nội dung, câu hỏi, video BTV Cây nội dung sách, ngân hàng câu hỏi, import, soạn đề, video, duyệt FR-10.01–04, 07, 08, 10, 11
UC-13 Quản lý ID và mã kích hoạt BTV, Admin Sinh ID, khoá ID khi in, xuất ID + QR; sinh lô mã kích hoạt, xuất cho nhà in, thu hồi FR-10.05, 10.09
UC-14 Thiết lập ma trận kiến thức BTV Định nghĩa chuyên đề, kỹ năng, dạng bài, mức độ; gắn tag câu hỏi; cấu hình ngưỡng đề xuất FR-10.06, 10.12
UC-15 Xem báo cáo hành vi Admin Dashboard kích hoạt, sử dụng, hiệu quả học liệu, mua; xuất báo cáo FR-11.x
UC-17 Duyệt thư viện học liệu HS Duyệt theo sách → phần → chuyên đề → loại; trạng thái đã học FR-03.04–05

#4. Yêu cầu chức năng (Functional Requirements)

Ký hiệu nguồn: YCxx = user story gốc; MT = mô tả tổng quát; UF = user flow; Nx = yêu cầu ngầm định (02 §4.2).

#EP01 – Tài khoản & kích hoạt sách

ID Yêu cầu Nguồn Ưu tiên
FR-01.01 Hệ thống cho phép đăng ký/đăng nhập bằng tài khoản Hoclieu (SSO) hoặc SĐT/email + mật khẩu/OTP (theo Q02) N1 P0
FR-01.02 Quét QR kích hoạt mở trang kích hoạt với mã điền sẵn; giữ mã qua bước đăng nhập YC01 P0
FR-01.03 Cho phép nhập mã kích hoạt thủ công; không phân biệt hoa/thường, bỏ qua dấu gạch, khoảng trắng YC01 P0
FR-01.04 Xác thực mã và tạo quyền sử dụng sách cho tài khoản; hiển thị thông tin sách trước khi xác nhận YC01 P0
FR-01.05 Trang "Sách của tôi" liệt kê các sách đã kích hoạt, thời hạn, lối tắt nhập ID YC01, YC03 P0
FR-01.06 Chống dò mã: giới hạn số lần thử, captcha, khoá tạm thời; ghi nhật ký thử sai BR-02 P0
FR-01.07 Hồ sơ cá nhân: họ tên, lớp, trường, tỉnh/thành, vai trò; chấp nhận điều khoản và chính sách dữ liệu N12 P0 (đồng ý), P1 (hồ sơ)
FR-01.08 Quên mật khẩu, đăng xuất khỏi mọi thiết bị N1 P0

#EP02 – Liên kết giấy – số (ID / QR)

ID Yêu cầu Nguồn Ưu tiên
FR-02.01 Ô nhập ID hiển thị nổi bật ở trang chủ và thanh đầu trang mọi màn hình học sinh; bàn phím mobile mặc định chữ hoa YC02 P0
FR-02.02 Chuẩn hoá ID trước khi tra cứu (BR-05) YC02 P0
FR-02.03 Tra cứu ID và điều hướng tới trang theo loại tài nguyên (UC-02) trong ≤ 1 giây YC02, MT P0
FR-02.04 QR nội dung là đường dẫn /{phiên bản sách}/{ID}, mở thẳng tài nguyên; hoạt động trong trình duyệt của Zalo/Facebook YC02 (ghi chú), ADR-002 P0
FR-02.05 Xử lý chưa đăng nhập / chưa kích hoạt / ID xem thử theo UC-02 luồng 3b, 4a Q04 P0
FR-02.06 ID không tồn tại: thông báo, gợi ý ID gần đúng, hình hướng dẫn vị trí ID UF P1
FR-02.07 Danh sách ID đã mở gần đây (tối đa 10) – P2
FR-02.08 Trên mỗi tài nguyên có điều hướng ngữ cảnh: lý thuyết ↔ ví dụ ↔ bài tập cùng chuyên đề, kèm số trang/ID trên sách giấy UF (F5) P1

#EP03 – Học liệu số & thư viện

ID Yêu cầu Nguồn Ưu tiên
FR-03.01 Trang lý thuyết: nội dung rich text (công thức toán LaTeX, hình, bảng) và/hoặc video theo cấu hình từng môn MT P1.1/1.2, TA P2 P0
FR-03.02 Trang ví dụ: đề ví dụ, đáp án, phân tích, bình luận (text) và video hướng dẫn MT P1.2/1.3 P0
FR-03.03 Trình phát video: phát thích ứng băng thông, tua, đổi tốc độ 0,75–2×, toàn màn hình, liên kết phát có thời hạn MT, N8 P0
FR-03.04 Ghi nhớ vị trí xem video và tiếp tục xem – P1
FR-03.05 Thư viện học liệu: duyệt theo sách → phần → chuyên đề → loại tài nguyên; tìm theo tên/ID YC03 P2
FR-03.06 Đánh dấu trạng thái: đã xem, đã làm, điểm gần nhất trên thư viện YC03 P2
FR-03.07 Báo lỗi nội dung từ học sinh (sai đáp án, video lỗi) gửi về CMS R05 P1

#EP04 – Làm bài trực tuyến

ID Yêu cầu Nguồn Ưu tiên
FR-04.01 Hỗ trợ loại câu: (a) trắc nghiệm 1 đáp án; (b) đúng/sai nhiều ý; (c) trả lời ngắn; (d) tự luận; (e) nhóm câu dùng chung ngữ liệu (bài đọc) YC04, A3 P0
FR-04.02 Chế độ Giao diện đề thi YC04 P0
FR-04.03 Chế độ Phiếu trả lời: lưới số câu theo phần, ô chọn A/B/C/D, Đ/S, ô số cho trả lời ngắn YC04 (ghi chú), ADR-006 P0
FR-04.04 Chế độ Một câu/màn hình có ghi thời gian từng câu (ms) MT TA P1 P0
FR-04.05 Đồng hồ đếm ngược theo thời lượng đề do BTV cấu hình; giờ tính phía máy chủ; chế độ luyện tập không tính giờ cho bài tập YC04 P0
FR-04.06 Tự lưu câu trả lời, khôi phục lượt đang làm trên cùng hoặc khác thiết bị; hoạt động khi mất mạng tạm thời N6 P0
FR-04.07 Bảng điều hướng câu: đã làm / chưa làm / đánh dấu xem lại YC04 P0
FR-04.08 Nộp bài có xác nhận và cảnh báo câu bỏ trống YC04 P0
FR-04.09 Làm lại không giới hạn số lần; mỗi lần là một lượt mới (BR-15) YC04 P0
FR-04.10 Hiển thị đúng công thức toán, hình, bảng, phiên âm/ký tự tiếng Anh trên mobile N7 P0
FR-04.11 Câu tự luận: ô soạn thảo đơn giản có đếm từ; tải lên tối đa 5 ảnh bài viết tay YC04 P0 (soạn thảo), P1 (ảnh)

#EP05 – Kết quả, đáp án & lời giải

ID Yêu cầu Nguồn Ưu tiên
FR-05.01 Chấm tự động câu khách quan ngay khi nộp theo BR-08…BR-12; hiển thị điểm thang 10 (đề) hoặc số câu đúng (bài tập) YC05 P0
FR-05.02 Danh sách câu với trạng thái đúng/sai/bỏ trống; lọc "chỉ câu sai" YC05 P0
FR-05.03 Từng câu: đáp án đúng, đáp án đã chọn, lời giải text, video (nếu có) YC05, MT P0
FR-05.04 Câu tự luận: hiển thị bài làm cạnh hướng dẫn giải và rubric YC06 P0
FR-05.05 Tự chấm theo rubric, tổng hợp điểm tự đánh giá (BR-13) YC06, Q09 P1
FR-05.06 Chế độ tra đáp án (UC-16) N4 P0
FR-05.07 Thống kê sau bài: điểm theo phần, theo chuyên đề, thời gian làm từng phần YC05 P1

#EP06 – Đề xuất kiến thức cần củng cố

ID Yêu cầu Nguồn Ưu tiên
FR-06.01 Tính tỷ lệ sai theo tag (chuyên đề/kỹ năng/dạng bài) cho mỗi lượt đã nộp YC07 P1
FR-06.02 Hiển thị danh sách chuyên đề cần củng cố (BR-16) với liên kết lý thuyết, ví dụ, bài tập và ID trên sách YC07, MT P1
FR-06.03 Placement test Tiếng Anh: đề xuất chuyên đề dựa trên câu sai và câu đúng nhưng chậm (BR-17) MT TA P1 P0 (bản đơn giản – chỉ câu sai), P1 (thêm thời gian)
FR-06.04 Ngữ văn: đề xuất kỹ năng dựa trên điểm tự chấm theo tiêu chí MT Văn P1
FR-06.05 Tổng hợp điểm yếu qua nhiều lượt (trang "Điểm yếu của tôi") YC07 P2

#EP07 – Lịch sử & tiến bộ

ID Yêu cầu Nguồn Ưu tiên
FR-07.01 Lịch sử lượt làm: tên bài, môn, loại, ngày, điểm, thời gian; lọc theo môn/loại; phân trang YC08 P1
FR-07.02 Xem lại chi tiết một lượt đã nộp (chỉ đọc) YC08 P1
FR-07.03 Biểu đồ đường điểm theo thời gian, theo môn, cho đề thi thử/đề luyện tập; điểm tự đánh giá hiển thị khác kiểu YC09 P1
FR-07.04 So sánh lượt gần nhất với trung bình các lượt trước và trung bình toàn hệ thống YC09 P2

#EP08 – Gói đề mở rộng & thanh toán

ID Yêu cầu Nguồn Ưu tiên
FR-08.01 Trang gói đề mở rộng theo môn: số đề, giá, thời hạn, đề mẫu YC10, MT P3 P3
FR-08.02 Đặt mua và thanh toán trực tuyến qua cổng thanh toán (QR ngân hàng, ví điện tử, thẻ) YC10 P3
FR-08.03 Cấp quyền sử dụng gói ngay khi nhận xác nhận thanh toán thành công (IPN), xử lý trùng lặp an toàn YC10 P3
FR-08.04 Lịch sử giao dịch; xuất hoá đơn điện tử nếu chính sách yêu cầu YC10, Q11 P3
FR-08.05 Gợi ý gói đề mở rộng khi học sinh đã làm hết đề trong sách của môn MT P3
FR-08.06 Admin quản lý gói: tạo, định giá, gán đề, bật/tắt bán YC10 P3

#EP09 – Giáo viên & LMS Hoclieu

ID Yêu cầu Nguồn Ưu tiên
FR-09.01 Đồng bộ lớp và danh sách học sinh từ LMS Hoclieu (hoặc tạo lớp + mã mời nếu LMS chưa có API) YC11, Q12 P1
FR-09.02 Giáo viên chọn đề/bài tập từ sách, giao cho lớp với thời điểm mở, hạn nộp, chế độ làm bài YC11 P1
FR-09.03 Học sinh nhận thông báo bài được giao; lượt làm gắn với bài giao YC11 P1
FR-09.04 Báo cáo tiến độ: đã nộp, chưa nộp, nộp trễ; nhắc học sinh chưa nộp YC12 P1
FR-09.05 Phổ điểm của lớp và bảng điểm từng học sinh; xem bài làm của từng học sinh YC12 P1
FR-09.06 Thống kê câu hỏi và chuyên đề có tỷ lệ sai cao nhất của lớp; giao nhanh bài tập củng cố cho chuyên đề đó YC13 P2
FR-09.07 Xuất báo cáo lớp ra Excel YC12 P2

#EP10 – CMS quản trị nội dung

ID Yêu cầu Nguồn Ưu tiên
FR-10.01 Quản lý cây nội dung: Sách (môn, năm, phiên bản) → Phần → Chuyên đề/Kỹ năng → Tài nguyên YC14 P0
FR-10.02 Ngân hàng câu hỏi: tạo/sửa 5 loại câu (FR-04.01), soạn công thức LaTeX, chèn hình, lời giải, video, rubric YC14 P0
FR-10.03 Import hàng loạt câu hỏi và lời giải từ file Word/Excel theo mẫu; báo cáo lỗi từng dòng; xem trước trước khi lưu YC14, R01 P0
FR-10.04 Quản lý video: tải lên hoặc liên kết, chuyển mã, ảnh đại diện, thời lượng, trạng thái xử lý YC14 P0
FR-10.05 Sinh ID theo quy tắc (BR-04), gán cho tài nguyên, khoá ID khi chốt in, xuất danh sách ID + ảnh QR (SVG/PNG) + trang sách N3 P0
FR-10.06 Ma trận kiến thức: định nghĩa chuyên đề, kỹ năng, dạng bài, mức độ nhận thức (Nhận biết/Thông hiểu/Vận dụng/Vận dụng cao); gắn nhiều tag cho câu hỏi YC14 P0
FR-10.07 Soạn bài làm: chọn câu, chia phần, thời lượng, thang điểm, chế độ hiển thị cho phép YC14 P0
FR-10.08 Quy trình duyệt: Nháp → Chờ duyệt → Đã xuất bản; lịch sử phiên bản, so sánh thay đổi N9 P1
FR-10.09 Lô mã kích hoạt: sinh lô theo sách và số lượng, xuất file cho nhà in, tra cứu trạng thái, thu hồi, gỡ gán (hỗ trợ) N2 P0
FR-10.10 Rubric chấm tự luận: tiêu chí, mức, điểm tối đa, mô tả YC06 P0
FR-10.11 Xem trước tài nguyên/bài làm như học sinh trên khung mobile – P1
FR-10.12 Cấu hình quy tắc đề xuất: ngưỡng tỷ lệ sai, số câu tối thiểu, số mục tối đa, ngưỡng thời gian YC14, Q17 P1
FR-10.13 Phân quyền: BTV theo môn, Trưởng ban, Admin; nhật ký thao tác – P0
FR-10.14 Kiểm tra liên kết: báo cáo mọi ID đã khoá đều trỏ tới tài nguyên đã xuất bản, đủ nội dung (có đáp án, có lời giải, video sẵn sàng) N11 P0

#EP11 – Phân tích hành vi & báo cáo quản trị

ID Yêu cầu Nguồn Ưu tiên
FR-11.01 Ghi nhận sự kiện hành vi theo danh mục chuẩn (09 §4) YC15 P0
FR-11.02 Dashboard tổng quan: số kích hoạt theo sách/ngày/tỉnh; người dùng hoạt động ngày/tuần/tháng; tần suất sử dụng YC15 P1
FR-11.03 Báo cáo hiệu quả học liệu: lượt mở theo ID, tỷ lệ xem hết video, tỷ lệ hoàn thành bài, điểm trung bình, câu sai nhiều YC15 P1
FR-11.04 Báo cáo hành vi mua: phễu xem gói → đặt → thanh toán, doanh thu theo gói/thời gian YC15 P3
FR-11.05 Lọc theo khoảng thời gian, môn, sách; xuất CSV/Excel YC15 P1
FR-11.06 Hỗ trợ người dùng: tra cứu tài khoản, sách đã kích hoạt, khoá/mở tài khoản N10 P1

#5. Quy tắc nghiệp vụ (Business Rules)

ID Quy tắc Trạng thái
BR-01 Mỗi mã kích hoạt gắn với đúng một sách (môn + phiên bản). Mỗi mã kích hoạt cho một tài khoản; quyền sử dụng có hiệu lực đến hết thời hạn cấu hình của sách Đề xuất – chờ Q03
BR-02 Mã kích hoạt dài ≥ 10 ký tự ngẫu nhiên từ bảng 31 ký tự không dễ nhầm (bỏ 0, O, 1, I, L). Sai 5 lần/10 phút → captcha; sai 10 lần/giờ → khoá chức năng kích hoạt 15 phút Đề xuất
BR-03 Học liệu số của sách chỉ truy cập được khi tài khoản có quyền sử dụng sách đó, trừ các ID được đánh dấu xem thử Đề xuất – chờ Q04
BR-04 Quy tắc ID: xem 06 §3. ID đã khoá (đã in) không được xoá, đổi hay tái sử dụng; chỉ được đổi tài nguyên đích (có lưu vết) Đề xuất – ADR-002
BR-05 Chuẩn hoá ID khi nhập: bỏ khoảng trắng và dấu gạch, chuyển chữ hoa; ký tự O → 0, I/L → 1 ở vị trí số Đề xuất
BR-06 Một ID có thể tồn tại ở nhiều phiên bản sách. Tra cứu ưu tiên phiên bản sách học sinh đã kích hoạt; nếu nhiều hơn một → lấy phiên bản mới nhất và cho đổi Đề xuất
BR-07 Lời giải trong chế độ làm bài chỉ hiển thị sau khi nộp; chế độ tra đáp án hiển thị ngay Đề xuất
BR-08 Toán – trắc nghiệm nhiều lựa chọn: đúng 0,25 điểm/câu Theo định dạng thi 2025 – BTV xác nhận
BR-09 Toán – đúng/sai: mỗi câu 4 ý; đúng 1 ý: 0,1 điểm; 2 ý: 0,25; 3 ý: 0,5; 4 ý: 1,0 Theo định dạng thi 2025 – BTV xác nhận
BR-10 Toán – trả lời ngắn: đúng 0,5 điểm/câu; so khớp sau chuẩn hoá (dấu thập phân ,/., dấu -, khoảng trắng); BTV có thể khai báo nhiều đáp án chấp nhận Theo định dạng thi 2025 – BTV xác nhận
BR-11 Tiếng Anh: 40 câu × 0,25 điểm Theo định dạng thi 2025 – BTV xác nhận
BR-12 Bài tập thực hành và placement test: hiển thị số câu đúng/tổng số câu và tỷ lệ %; không quy đổi thang 10 trừ khi BTV cấu hình Đề xuất
BR-13 Ngữ văn: không chấm tự động. Học sinh tự chấm theo rubric (cấu trúc đề tham khảo: Đọc hiểu 4 điểm, Viết 6 điểm). Điểm tự chấm luôn gắn nhãn "Tự đánh giá", không đưa vào thống kê so sánh toàn hệ thống Đề xuất – chờ Q09
BR-14 Hết giờ: hệ thống tự nộp; thời gian tính theo máy chủ, cho phép lệch tối đa 30 giây do mạng Đề xuất
BR-15 Mỗi lần "Bắt đầu" tạo lượt mới; chỉ lượt đã nộp được tính vào lịch sử, biểu đồ, đề xuất. Mỗi học sinh có tối đa 1 lượt đang làm dở cho mỗi bài Đề xuất
BR-16 Đề xuất củng cố: một chuyên đề được đề xuất khi có ≥ 2 câu thuộc chuyên đề trong lượt và tỷ lệ sai ≥ 50%; sắp xếp theo (số câu sai × trọng số điểm) giảm dần; hiển thị tối đa 5. Các tham số cấu hình được Đề xuất – chờ Q17
BR-17 Placement test Tiếng Anh: câu đúng nhưng thời gian trả lời > 2 × trung vị thời gian của câu đó (hoặc > ngưỡng BTV đặt khi chưa đủ dữ liệu) được tính là "chưa vững" với trọng số 0,5 câu sai Đề xuất
BR-18 Bài giao bởi giáo viên: lượt nộp đầu tiên trước hạn được tính vào báo cáo lớp; lượt sau hạn được đánh dấu "trễ" Đề xuất
BR-19 Gói đề mở rộng: quyền truy cập theo thời hạn của gói; không hoàn tiền sau khi đã mở đề đầu tiên Chờ Q11
BR-20 Nội dung chỉ hiển thị cho học sinh khi ở trạng thái Đã xuất bản; sửa nội dung đã xuất bản tạo phiên bản mới, lượt làm cũ giữ nguyên phiên bản cũ để xem lại Đề xuất

Chi tiết thuật toán chấm và đề xuất: 09.

#6. Yêu cầu phi chức năng (NFR)

ID Nhóm Yêu cầu Cách kiểm chứng
NFR-PERF-01 Hiệu năng Tra cứu ID: p95 ≤ 300 ms phía máy chủ; trang tài nguyên hiển thị nội dung đầu tiên ≤ 2,5 s trên 4G k6, Lighthouse (mobile)
NFR-PERF-02 Hiệu năng Nộp bài và trả kết quả: p95 ≤ 2 s; tự lưu: p95 ≤ 500 ms k6
NFR-PERF-03 Hiệu năng Video bắt đầu phát ≤ 3 s trên 4G; tự động chọn chất lượng 360p–1080p Đo thực tế trên thiết bị mẫu
NFR-SCAL-01 Mở rộng Phục vụ 5.000 người dùng đồng thời (giả định, chờ Q08) và mở rộng ngang gấp 3 vào mùa thi mà không đổi kiến trúc Kiểm thử tải
NFR-AVAIL-01 Sẵn sàng ≥ 99,5 %/tháng; bảo trì có kế hoạch ngoài khung 19h–23h Giám sát uptime
NFR-REC-01 Phục hồi RPO ≤ 1 giờ, RTO ≤ 4 giờ; sao lưu hằng ngày giữ 30 ngày; diễn tập khôi phục mỗi quý Biên bản diễn tập
NFR-USAB-01 Khả dụng Giao diện tối ưu từ chiều rộng 360 px; từ trang chủ đến tài nguyên ≤ 3 thao tác; vùng chạm ≥ 44 px Kiểm thử khả dụng với 5–8 học sinh
NFR-USAB-02 Khả dụng Hỗ trợ Chrome, Safari, Edge, Firefox (2 phiên bản gần nhất); iOS 15+, Android 9+; trình duyệt trong Zalo, Facebook Ma trận thiết bị (10)
NFR-A11Y-01 Tiếp cận Đạt các tiêu chí WCAG 2.1 mức AA về tương phản, cỡ chữ, nhãn trường nhập, điều khiển bằng bàn phím axe, kiểm tra thủ công
NFR-SEC-01 Bảo mật HTTPS toàn bộ; mật khẩu băm Argon2/bcrypt; phiên đăng nhập có hạn; đáp ứng OWASP ASVS mức 2 với các chức năng xác thực, phân quyền Pentest trước M3
NFR-SEC-02 Bảo mật API không bao giờ trả đáp án/lời giải trước khi nộp (trừ chế độ tra đáp án có quyền) Kiểm thử API
NFR-SEC-03 Bảo vệ nội dung Video phát qua URL ký số có hạn ≤ 4 giờ, chặn hotlink; watermark mờ mã tài khoản (P1) Kiểm thử thủ công
NFR-SEC-04 Bảo mật Phân quyền theo vai trò ở tầng API; CMS bắt buộc 2FA cho Trưởng ban, Admin Kiểm thử phân quyền
NFR-PRIV-01 Dữ liệu cá nhân Thu thập tối thiểu; có chính sách quyền riêng tư và ghi nhận đồng ý; cho phép xem/xoá dữ liệu tài khoản; tuân thủ quy định bảo vệ dữ liệu cá nhân hiện hành Rà soát pháp lý
NFR-COMP-01 Tương thích nội dung Hiển thị công thức LaTeX (KaTeX/MathJax), font tiếng Việt đầy đủ dấu, ký hiệu phiên âm IPA Bộ nội dung mẫu
NFR-OBS-01 Quan sát Log tập trung, theo dõi lỗi phía trình duyệt, cảnh báo khi tỷ lệ lỗi > 1 % hoặc p95 vượt ngưỡng Dashboard giám sát
NFR-MAINT-01 Bảo trì CI/CD; độ phủ kiểm thử đơn vị ≥ 80 % cho mô-đun chấm điểm và đề xuất; tài liệu API sinh tự động (OpenAPI) Báo cáo CI
NFR-DATA-01 Dữ liệu Lưu dữ liệu sự kiện ≥ 24 tháng; dữ liệu lượt làm bài lưu suốt thời gian tài khoản tồn tại Cấu hình lưu trữ
NFR-L10N-01 Ngôn ngữ Giao diện tiếng Việt; nội dung Tiếng Anh hiển thị đúng; định dạng ngày dd/mm/yyyy, múi giờ GMT+7 Kiểm thử

#7. Yêu cầu giao tiếp ngoài

Hệ thống Mục đích Giao thức Ghi chú
Hoclieu.vn – Tài khoản Đăng nhập một lần OAuth 2.0 / OIDC (cần xác nhận) Q02
Hoclieu.vn – LMS Lớp học, danh sách học sinh, giao bài, trả điểm REST API (cần xác nhận) Q12
Cổng thanh toán Thanh toán gói đề Redirect + IPN có chữ ký Q11
Dịch vụ video Chuyển mã, lưu trữ, phát HLS API + URL ký số Q13
SMS/Email/Zalo ZNS OTP, thông báo bài giao API nhà cung cấp –
Nhà in / dàn trang Nhận danh sách ID, QR, mã kích hoạt File CSV/Excel + SVG/PNG Bàn giao thủ công có biên bản