Trường Số PRD/18 Học trực tuyến
Trường Số · Yêu cầu sản phẩm · 09/2026

PRD 18 · Học trực tuyến và luyện thi

Nối sản phẩm quản lý trung tâm với hệ thống học trực tuyến FLYER đã vận hành (study.flyer.us, teacher.flyer.us): liên kết hồ sơ người học khi chuyển đổi, ánh xạ lớp của trung tâm với lớp FLYER để giao bài tập về nhà theo bài học và buổi học, đồng bộ kết quả vào hồ sơ học viên và điểm thi, bán gói luyện thi Cambridge và IELTS như một loại gói học phí có cấp và thu hồi quyền truy cập, và đăng nhập một lần từ cổng phụ huynh. Không xây dựng hệ thống học trực tuyến mới.

Xuất xứ / Prompt / Giới hạn
Trạng thái
Dự thảo v1
Mô-đun phụ trách
Đào tạo
Backend
EXISTING liên kết người học, bài tập, đề thi, báo cáo phụ huynh, feature-configs · EXTEND fee_plan, tab Học tập, school-config · NEW ánh xạ lớp, bài tập theo bài học, quyền truy cập gói, trao đổi token SSO
Giai đoạn
P1 liên kết học viên, giao bài, đồng bộ kết quả · P2 khoá học tự xây, trò chơi, chứng chỉ luyện thi
Phụ thuộc vào
02 Học viên, 03 Lớp học, 13 Điểm thi, 14 Giáo trình, 19 Gói dịch vụ

Tài liệu do trợ lý AI soạn trong một phiên làm việc ngày 16/09/2026, mở rộng bộ PRD theo yêu cầu gốc được trích nguyên văn ở trang mục lục. Đâ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.
  • Nhãn existing / extend / new trong trang được xác định bằng cách đối chiếu với đặc tả /v3 trên staging tại thời điểm trên.
  • Đợt quét thứ hai các nguồn công khai của PSE ONE ngày 16/09/2026 (trang tính năng, bảng phí dịch vụ, mục hướng dẫn sử dụng).
  • Tham chiếu đối thủ cạnh tranh: khảo sát công khai pse4.one ngày 16/09/2026 cho thấy gói Enterprise (1.000.000 VND/tháng) bổ sung "xây dựng giáo trình online, khoá học nâng cao, luyện thi, tạo tài khoản học viên với khoá học online, trò chơi giáo dục"; một trang riêng "Luyện thi Cambridge" (Starters, Movers, Flyers) được trình bày như sáng kiến hợp tác; "nền tảng học trực tuyến với khoá học và bài kiểm tra luyện tập" là một phân hệ; các tích hợp được nêu gồm Zalo, Facebook, YouTube, Google Form. Đối thủ phải tự xây và tự cung cấp nội dung.

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:
    • Nền tảng học trực tuyến của đối thủ là mô-đun trong cùng phiên đăng nhập hay một trang web riêng với tài khoản riêng cho học viên.
    • Cách đối thủ tạo tài khoản học viên cho khoá học trực tuyến: tự động từ hồ sơ học viên hay nhập tay, và học viên đăng nhập bằng gì.
    • Khoá học trực tuyến của đối thủ có gắn với lớp học và buổi học tại trung tâm không, hay là các khoá tự học độc lập.
    • Nội dung luyện thi Cambridge do ai cung cấp, có cập nhật theo định dạng đề mới không, và có bán riêng cho phụ huynh không.
    • Kết quả học trực tuyến có quay về hồ sơ học viên, bảng điểm hay báo cáo phụ huynh không, và có nhắc bài tập qua Zalo không.
    • "Trò chơi giáo dục" gắn với bài học hay là kho chung, và có phát sinh dữ liệu kết quả không.
    • Gói Enterprise có giới hạn số học viên trực tuyến hay số khoá học không.

Thiết kế đề xuất

Tám màn hình desktop và hai màn hình di động theo đúng thứ tự vận hành: giáo vụ liên kết lớp với lớp FLYER, giáo viên giao bài theo bài học và buổi học, kết quả quay về hồ sơ học viên, kế toán bán gói luyện thi như một gói học phí, và phụ huynh mở ứng dụng học bằng đăng nhập một lần; điều quan trọng nhất là Trường Số không xây trình học nào, mọi màn hình chỉ nối, giao, đọc kết quả và cấp quyền.

1 · Cài đặt học trực tuyến của lớp (đã liên kết)

/classes/:id/settings#elearning · desktop

Cài đặt học trực tuyến của lớp
Thẻ đầu trang gồm bốn ô của mục 4: trạng thái liên kết (chip Đã liên kết kèm tên lớp FLYER), giáo viên FLYER được uỷ quyền và quyền giao bài còn hạn, lần đồng bộ gần nhất, số học viên đã vào lớp FLYER; ba nút Tách liên kết, Liên kết lớp có sẵn, Đồng bộ ngay nằm ở đầu trang. Bảng học viên đủ cột họ tên, mã học viên, tên đăng nhập FLYER, ghi danh, trạng thái với ba trạng thái Đã vào lớp FLYER, Chưa có tài khoản (kèm thao tác Tạo tài khoản, Liên kết) và Chờ đồng bộ cho học viên vừa chuyển lớp (ELN-02); dòng cuối là học viên thêm tay trên FLYER không có ghi danh, mang chip Ngoài danh sách và không bị tự gỡ (quy tắc 3).

2 · Trạng thái chưa liên kết và hộp thoại Liên kết lớp có sẵn

/classes/:id/settings#elearning · desktop

Liên kết lớp có sẵn
Phía sau là trạng thái trống đúng lời văn của mục 4 ("Lớp chưa liên kết với FLYER. Liên kết để giao bài tập về nhà và theo dõi kết quả.") với hai nút Liên kết lớp có sẵn và Tạo lớp FLYER. Hộp thoại liệt kê lớp FLYER của giáo viên chính: dòng trùng 12/13 học viên được chọn, dòng có 7 học viên ngoài danh sách mang cảnh báo vàng, dòng đã ánh xạ với lớp Movers 2B bị mờ vì một lớp FLYER không được ánh xạ tới hai lớp của trung tâm (quy tắc 2, PUT trả 409); ô ghi chú nêu rõ ai sẽ được thêm và ai nằm trong danh sách Chưa liên kết. Nút Huỷ ở ngoài cùng bên trái, nút chính Liên kết và đồng bộ.

3 · Bài tập của lớp

/classes/:id#homework · /teach/classes/:id/homework · desktop

Bài tập của lớp
Bộ lọc trạng thái Đang mở, Đã hết hạn, Đã đóng và khoảng ngày; dòng ghi chú cho biết kết quả được đồng bộ từ FLYER 15 phút một lần (ELN-05). Bảng đủ cột: bài tập kèm chip loại, bài học theo mã trong giáo trình, buổi học (bài ôn tập ngoài lịch có buổi học rỗng nhưng vẫn bắt buộc bài học, quy tắc 5), hạn nộp với chip Quá hạn màu đỏ kèm số chưa nộp, thanh đã nộp / tổng, điểm trung bình, nhắc gần nhất (mốc trước hạn 24 giờ hoặc sau hạn 12 giờ, số phụ huynh và kênh, ELN-04) và bốn thao tác Xem, Nhắc ngay, Gia hạn, Thu hồi; bài đã đóng chỉ còn Xem, bài bị xoá trên FLYER chuyển sang Đã thu hồi và dừng nhắc (trường hợp biên).

4 · Ngăn Giao bài

/classes/:id#homework · desktop

Giao bài
Biểu mẫu theo ELN-03: bài học mặc định là bài của buổi gần nhất, buổi học có thể để trống khi giao ngoài lịch, danh sách bài tập gợi ý từ giáo trình với hai bài đã chọn và ô tìm thêm trong thư viện FLYER, hạn nộp mặc định 2 giờ trước buổi kế tiếp và tối thiểu 6 giờ sau khi giao (quy tắc 6), mốc nhắc phụ huynh theo chính sách kênh của PRD 07, đối tượng toàn lớp / học viên có mặt / chọn tay, công tắc Tính điểm vào kỳ đánh giá kèm kỳ Giữa kỳ 1 (PRD 13). Ô ghi chú xác nhận giáo viên chính còn quyền giao bài (quy tắc 4); nút chính nêu rõ "Giao 2 bài cho 12 học viên".

5 · Chi tiết một bài tập

/classes/:id#homework · desktop

Chi tiết bài tập
Ngăn rộng cho bài Speaking đã quá hạn: bốn ô tổng hợp (đã nộp 10/14, chưa nộp 3, điểm trung bình 71%, liên kết phân tích theo câu hỏi trên FLYER), bảng từng học viên với trạng thái Đã nộp, Nộp muộn, Chưa nộp, Đang làm, điểm phần trăm, điểm kỹ năng nói do AI chấm, thời lượng và liên kết Xem báo cáo tới attempts/{id}/report; học viên chưa nộp hiển thị lần nhắc gần nhất và đã xem hay chưa. Chân ngăn: Thu hồi, Gia hạn (chỉ lùi về sau, quy tắc 6) và nút chính Nhắc 3 học viên chưa nộp.

6 · Tab Học tập của học viên (mở rộng)

/students/:id#learning · desktop

Tab Học tập của học viên
Năm thẻ tổng hợp: thời lượng học 7 và 30 ngày, tỷ lệ nộp bài 30 ngày, số bài đang mở, hoạt động gần nhất và tài khoản FLYER đã liên kết (nguồn liên kết, ngày, người thực hiện, ELN-01). Phần Gói học trực tuyến là bảng quyền truy cập với sản phẩm, ngày bắt đầu, hết hạn, chip trạng thái và hoá đơn liên quan: gói Movers còn 14 ngày có nút Gia hạn, dòng gia hạn ở trạng thái Chờ cấp quyền vì hoá đơn mới thanh toán một phần (trường hợp biên), gói Starters đã hết hạn. Phần Bài tập theo lớp kèm bài học, hạn, trạng thái, điểm và Xem báo cáo; phần Lượt thi có điểm theo kỹ năng, thang đo Cambridge shields hoặc CEFR và cờ Đã ghi vào điểm thi theo PRD 13 (ELN-05).

7 · Gói học trực tuyến trong danh mục gói học phí

/settings/fee-plans?type=online_package · desktop

Gói học trực tuyến trong danh mục gói học phí
Danh mục gói học phí của PRD 05 với tab Gói học trực tuyến đang chọn; bốn thẻ đếm quyền truy cập còn hiệu lực, sắp hết hạn trong 14 ngày, chờ cấp quyền và cấp thất bại (đã thử lại 3 lần, đã tạo công việc Kích hoạt thủ công, ELN-06). Bảng thêm hai cột Sản phẩm FLYER và Đang hoạt động bên cạnh loại, thời hạn, giá, thời điểm cấp quyền và trạng thái; một gói IELTS đã ngừng bán, một khoá học tự xây ở trạng thái Bản nháp được đánh dấu P2.

8 · Biểu mẫu gói học trực tuyến

/settings/fee-plans/:id · desktop

Biểu mẫu gói học trực tuyến
Khi loại gói là Gói học trực tuyến, biểu mẫu hiện thêm sản phẩm FLYER chọn từ danh mục FLYER cung cấp, thời hạn theo tháng, thời điểm cấp quyền (khi thanh toán đủ hoặc khi tạo hoá đơn), công tắc gia hạn tự động khi thanh toán hoá đơn gia hạn và số ngày báo trước 14, 3. Trường thời hạn đang báo lỗi vì nhập 0, kèm câu giải thích thời hạn tính từ ngày cấp quyền (quy tắc 9); ô ghi chú tóm tắt việc thu hồi, tạm dừng và giữ dữ liệu học tập.

9 · Cổng phụ huynh: Học tập

/parent/learning · mobile

10 · Mở ứng dụng học bằng đăng nhập một lần

/parent/learning · mobile

Cổng phụ huynh: Học tập
Mở ứng dụng học bằng đăng nhập một lần
Màn hình 9: bộ chuyển đổi giữa hai học viên được liên kết; thẻ Bài tập cần làm với tên bài, lớp, hạn và trạng thái từng bài, nút Mở ứng dụng học ngay dưới; thẻ Tuần này với thời lượng học, số bài đã nộp, điểm trung bình; lượt thi gần nhất kèm liên kết báo cáo; thẻ gói luyện thi còn 14 ngày và nút Gia hạn mở hoá đơn kèm mã QR (ELN-07). Màn hình 10: bottom sheet sau khi chạm Mở ứng dụng học nêu rõ phiên của học viên nào, mã dùng một lần hiệu lực 60 giây gắn với thiết bị, đồng hồ đếm ngược, hai đích đến ứng dụng di động hoặc study.flyer.us và ghi chú mọi lần phát hành đều được ghi nhật ký (quy tắc 10).

1Mục đích

Việc luyện tập giữa các buổi học hiện diễn ra rời rạc: giáo viên giao bài trên một ứng dụng học tập, giáo vụ theo dõi trên bảng tính, phụ huynh không thấy tiến độ, kết quả không quay về hồ sơ học viên hay bảng điểm của trung tâm. FLYER đã có một hệ thống học trực tuyến hoàn chỉnh: bài tập giao theo lớp, đề thi, điểm kiểm tra định kỳ, thử thách hằng ngày, chấm nói bằng AI và báo cáo tuần cho phụ huynh. PRD này không xây lại phần nào trong đó; PRD này quy định cách Trường Số nối học viên, lớp học, giáo trình và gói học phí của trung tâm với các đối tượng tương ứng trên FLYER, để giao bài, nhắc nhở, đồng bộ kết quả và bán gói luyện thi trở thành một luồng vận hành duy nhất.

Trong phạm vi

Ngoài phạm vi

2Hiện trạng

Trường Số có sẵn hệ thống FLYER đang vận hành và chỉ cần nối hai phía.

Năng lực hiện cóEndpointGiữ lại?
Liên kết khách hàng CRM với hồ sơ người học (nhiều người học, một người học chính); tìm người học theo tên đăng nhập, số điện thoại, emailGET/POST /v3/crm/customers/{id}/learners, POST/DELETE .../learners/{link_id}, POST .../set-primary, GET /v3/crm/customers/learners/searchGiữ; nền tảng của bước liên kết danh tính (PRD 01, 02)
Bài tập đã giao theo lớp FLYER kèm trạng thái nộp; tổng hợp trên các lớp của giáo viên; phân tích theo câu hỏiGET /v3/teacher/classes/{class_id}/assign-tests, GET /v3/teacher/viewer/rollup-assign-tests, GET /v3/teacher/assign-tests/{assign_test_id}/analytics/question-analysisGiữ; nguồn dữ liệu tỷ lệ nộp bài và liên kết phân tích
Đề thi do giáo viên tạo và quản lýGET/POST /v3/teacher/exams và các đường dẫn conGiữ; kỳ đánh giá của trung tâm (PRD 13) chọn đề từ đây
Phía người học: đề thi, lộ trình học tiếp, thử thách hằng ngày, báo cáo lượt làm bàiGET /v3/learner/exams, GET /v3/learner/journey/continue, POST /v3/learner/daily-challenges, GET /v3/learner/attempts/{id}/reportGiữ nguyên trên ứng dụng người học; Trường Số chỉ đọc kết quả và mở báo cáo
Báo cáo tuần và báo cáo tổng hợp cho phụ huynhGET /v3/parent/learner/{id}/weekly-report, /reportGiữ; nguồn của tab Học tập (PRD 02) và báo cáo học tập (PRD 07)
Gói thuê bao giáo viên; cấu hình tính năng theo người họcGET /v3/teacher/package/my-subscriptions, GET /v3/learner/feature-configsGiữ; kiểm tra quyền giao bài của giáo viên; mở rộng để phản ánh quyền từ gói học trực tuyến
Nhắc bài học của lớp qua ứng dụng, email, ZaloPOST /v3/teacher/class-schedules/{id}/remind (PRD 07)Giữ; tái sử dụng lớp gửi tin cho nhắc hạn nộp
Ánh xạ lớp trung tâm với lớp FLYER; bài tập gắn bài học và buổi học; cấp quyền theo gói; trao đổi token đăng nhập một lầnchưa cóXây mới trong PRD này

3User story và tiêu chí chấp nhận

ELN-01Liên kết hồ sơ người học khi chuyển đổi
Tư vấn viên hoàn tất chuyển đổi mà không rời wizard để tạo tài khoản học tập.
  • Given Một lead ở bước chuyển đổi (PRD 01) hoặc một học viên được tạo trực tiếp (PRD 02)
  • When Bước "Tài khoản FLYER" cho chọn tạo mới (tên đăng nhập sinh từ họ tên và năm sinh) hoặc liên kết có sẵn (tìm theo tên đăng nhập, số điện thoại phụ huynh, email qua learners/search)
  • Then Bản ghi học viên lưu learner_profile_id; liên kết được ghi qua POST /v3/crm/customers/{id}/learners và đặt người học chính nếu là học viên đầu tiên; thông tin đăng nhập hiển thị một lần và có thể gửi lại cho phụ huynh (PRD 02); không thể hoàn tất chuyển đổi khi chưa có hồ sơ người học, trừ khi cấu hình tenant "cho phép học viên chưa có tài khoản FLYER" được bật.
ELN-02Ánh xạ lớp của trung tâm với lớp FLYER
Giáo vụ nối một lớp với một lớp FLYER một lần, sau đó danh sách học viên tự đồng bộ.
  • Given Một lớp (PRD 03) có giáo viên chính đã có tài khoản giáo viên FLYER
  • When Mở Lớp → Cài đặt → Học trực tuyến và chọn "Tạo lớp FLYER" hoặc "Liên kết lớp có sẵn" từ danh sách lớp FLYER của giáo viên chính
  • Then Bản ghi ánh xạ ở trạng thái Đã liên kết; toàn bộ học viên đang ghi danh có hồ sơ người học được thêm vào lớp FLYER; ghi danh, chuyển lớp và kết thúc ghi danh về sau được đồng bộ trong 5 phút; học viên chưa có hồ sơ người học nằm trong danh sách "Chưa liên kết" kèm nút tạo hoặc liên kết; tách liên kết không xoá lớp FLYER và không xoá dữ liệu học tập.
ELN-03Giao bài tập về nhà theo bài học và buổi học
Giáo viên giao bài từ giáo trình trong chưa đầy một phút sau buổi học.
  • Given Buổi học hôm nay của một lớp đã liên kết, và bài học tương ứng (PRD 14) có gợi ý bài tập FLYER
  • When Từ phiếu điểm danh hoặc trang buổi học chọn "Giao bài", chọn một hoặc nhiều bài tập gợi ý (hoặc tìm trong thư viện FLYER), đặt hạn nộp (mặc định 2 giờ trước buổi học kế tiếp), chọn đối tượng toàn lớp hoặc học viên có mặt
  • Then Bài tập được tạo trên FLYER cho lớp đã ánh xạ; bản ghi bài tập về nhà lưu assign_test_id, lesson_id, session_id, hạn nộp; bài tập hiển thị trên trang lớp, trang buổi học và tab Học tập của từng học viên; phụ huynh nhận tin "Bài tập về nhà" theo chính sách kênh của PRD 07.
ELN-04Nhắc hạn nộp tự động
Phụ huynh được nhắc trước hạn mà giáo viên không phải làm gì thêm.
  • Given Một bài tập có hạn nộp và một hoặc nhiều học viên chưa nộp
  • When Còn 24 giờ trước hạn (mốc cấu hình tenant, có thể thêm mốc 2 giờ) hoặc hạn đã qua 12 giờ
  • Then Tin "Nhắc bài tập" gửi tới phụ huynh của học viên chưa nộp qua kênh khả dụng đầu tiên (Zalo OA trong cửa sổ 48 giờ, thông báo trong ứng dụng, email), tôn trọng khung giờ yên tĩnh 21:30–07:00; mỗi học viên nhận tối đa một tin cho mỗi mốc; học viên đã nộp trong lúc chờ không nhận tin; trạng thái gửi hiển thị trên bảng bài tập lớp.
ELN-05Đồng bộ kết quả vào hồ sơ học viên và điểm thi
Giáo vụ xem kết quả học trực tuyến ngay trong hồ sơ học viên và bảng điểm của trung tâm.
  • Given Học viên đã nộp bài tập hoặc hoàn thành một lượt thi trên FLYER
  • When Bộ đồng bộ chạy theo lịch 15 phút, hoặc webhook nộp bài từ FLYER được nhận (nếu có)
  • Then Tab Học tập (PRD 02) hiển thị bài tập, trạng thái nộp, điểm phần trăm, độ chính xác theo kỹ năng, thời lượng và liên kết "Xem báo cáo" tới attempts/{id}/report; bài tập đánh dấu "tính điểm" ghi một dòng điểm vào kỳ đánh giá tương ứng ở PRD 13 với nguồn flyer_assign_test, không sửa tay, chỉ ghi đè có lý do; kết quả đến sau ngày chốt kỳ vẫn được ghi kèm cờ "sau hạn".
ELN-06Bán gói luyện thi, cấp và thu hồi quyền truy cập
Kế toán bán gói luyện thi như một dòng trên hoá đơn; quyền truy cập theo đúng những gì đã thanh toán.
  • Given Danh mục gói học phí có một gói loại online_package (PRD 05) trỏ tới một sản phẩm luyện thi FLYER (ví dụ Movers 6 tháng) cấu hình ở PRD 19
  • When Hoá đơn có dòng gói này được thanh toán đủ (hoặc ngay khi tạo, theo cấu hình tenant giống gói buổi); về sau đến ngày hết hạn, hoá đơn bị huỷ hay hoàn tiền, hoặc học viên bảo lưu
  • Then Một quyền truy cập được tạo với ngày bắt đầu, hết hạn, sản phẩm FLYER; FLYER được gọi để cấp quyền và learner/feature-configs phản ánh trong 5 phút; phụ huynh nhận tin "Kích hoạt gói luyện thi" kèm hướng dẫn đăng nhập; cấp thất bại thì hoá đơn vẫn hợp lệ và một công việc "Kích hoạt thủ công" được tạo cho giáo vụ. Khi hết hạn, huỷ, hoàn tiền hoặc bảo lưu, quyền chuyển sang Hết hạn, Đã thu hồi hoặc Tạm dừng và FLYER được gọi để thu hồi hoặc đóng băng; bảo lưu gia hạn ngày hết hạn theo số ngày tạm dừng; phụ huynh nhận tin "Sắp hết hạn" trước 14 và 3 ngày kèm liên kết gia hạn trên cổng phụ huynh; dữ liệu học tập không bị xoá.
ELN-07Phụ huynh xem tiến độ và đăng nhập một lần vào ứng dụng học tập
Phụ huynh mở ứng dụng người học FLYER từ cổng phụ huynh mà không cần nhớ mật khẩu của học viên.
  • Given Phụ huynh đã đăng nhập cổng phụ huynh bằng OTP (PRD 07) và học viên có hồ sơ người học đã liên kết
  • When Mở tab Học tập của học viên và chọn "Mở ứng dụng học"
  • Then Cổng phụ huynh gọi endpoint trao đổi token, nhận một mã dùng một lần hiệu lực 60 giây, và chuyển hướng tới ứng dụng người học FLYER (web hoặc liên kết sâu tới ứng dụng di động) với phiên của đúng người học; tab Học tập hiển thị bài tập đang mở kèm hạn, bài đã nộp kèm điểm, thời lượng học tuần này, báo cáo tuần và trạng thái gói luyện thi kèm ngày hết hạn.
ELN-08Phân tích sử dụng theo lớp
Quản lý chi nhánh biết lớp nào không luyện tập giữa các buổi học.
  • Given Chi nhánh có các lớp đã liên kết
  • When Mở Báo cáo → Học trực tuyến với một khoảng thời gian
  • Then Bảng theo lớp gồm số bài đã giao, tỷ lệ nộp đúng hạn, tỷ lệ nộp muộn, điểm trung bình, thời lượng học trung bình mỗi học viên mỗi tuần, số học viên không hoạt động 14 ngày, số lớp chưa liên kết; xem chi tiết tới từng học viên và xuất xlsx; học viên không hoạt động 14 ngày tạo một công việc theo dõi cho người phụ trách chăm sóc học viên (như ATT-06).
ELN-09Khoá học trực tuyến do trung tâm tự xây và chứng chỉ (P2)
Giáo vụ đóng gói một chuỗi bài học thành khoá tự học có chứng chỉ.
  • Given Giáo trình (PRD 14) có các bài học kèm bài tập FLYER, và tenant có quyền elearning.course.author
  • When Tạo khoá học: chọn bài học theo thứ tự, gắn bài tập bắt buộc và trò chơi giáo dục cho mỗi bài, đặt điều kiện hoàn thành (tỷ lệ bài bắt buộc, điểm tối thiểu bài thi cuối), chọn mẫu chứng chỉ có logo trung tâm
  • Then Khoá học bán được như một gói học trực tuyến hoặc gắn miễn phí cho một lớp; học viên thấy khoá học trong lộ trình FLYER; khi đủ điều kiện, chứng chỉ có mã tra cứu được sinh dưới dạng PDF, hiển thị trên cổng phụ huynh và ghi vào tab Học tập; mẫu chứng chỉ không dùng tên hay logo của tổ chức khảo thí.

4Màn hình

Cài đặt học trực tuyến của lớp /classes/:id/settings#elearning

Phần đầu: trạng thái liên kết (Chưa liên kết / Đã liên kết với [tên lớp FLYER] / Lỗi đồng bộ), giáo viên FLYER được uỷ quyền, lần đồng bộ gần nhất. Nút: Tạo lớp FLYER · Liên kết lớp có sẵn · Đồng bộ ngay · Tách liên kết. Bảng học viên: họ tên, mã học viên, tên đăng nhập FLYER, trạng thái (Đã vào lớp FLYER / Chưa có tài khoản / Chờ đồng bộ), thao tác Tạo tài khoản, Liên kết. Trạng thái trống: "Lớp chưa liên kết với FLYER. Liên kết để giao bài tập về nhà và theo dõi kết quả."

Bài tập của lớp /classes/:id#homework · /teach/classes/:id/homework

Bảng: bài tập (tên, chip loại), bài học (mã bài trong giáo trình), buổi học (ngày), hạn nộp (chip "Quá hạn" màu đỏ), đã nộp / tổng, điểm trung bình, nhắc gần nhất, thao tác Xem · Nhắc ngay · Gia hạn · Thu hồi. Bộ lọc: trạng thái (Đang mở / Đã hết hạn / Đã đóng), khoảng ngày. Nút + Giao bài mở biểu mẫu: bài học (mặc định bài của buổi gần nhất), bài tập gợi ý từ giáo trình kèm ô tìm trong thư viện FLYER, hạn nộp, đối tượng (toàn lớp / học viên có mặt / chọn tay), công tắc "Tính điểm vào kỳ đánh giá". Chi tiết một bài tập: học viên, trạng thái nộp, điểm, liên kết phân tích theo câu hỏi trên FLYER. Trạng thái trống: "Chưa có bài tập nào. Giao bài từ buổi học gần nhất."

Tab Học tập của học viên (mở rộng) /students/:id#learning

Bổ sung cho tab đã có ở PRD 02. Thẻ tổng hợp: thời lượng học 7 và 30 ngày, tỷ lệ nộp bài 30 ngày, số bài đang mở, ngày hoạt động gần nhất. Phần Gói học trực tuyến: bảng quyền truy cập (sản phẩm, ngày bắt đầu, hết hạn, chip trạng thái, hoá đơn liên quan) và nút Gia hạn (tạo hoá đơn, PRD 05). Phần Bài tập: theo lớp kèm bài học, hạn, trạng thái, điểm, liên kết Xem báo cáo. Phần Lượt thi: đề thi, ngày, điểm theo kỹ năng, thang đo (Cambridge shields, CEFR, IELTS band), cờ "đã ghi vào điểm thi" (PRD 13). Trạng thái trống: "Chưa có dữ liệu học tập. Kiểm tra liên kết tài khoản FLYER."

Gói học trực tuyến trong danh mục gói học phí /settings/fee-plans?type=online_package

Biểu mẫu gói học phí (PRD 05) thêm các trường khi loại là gói học trực tuyến: sản phẩm FLYER (chọn từ danh mục FLYER cung cấp: Starters, Movers, Flyers, IELTS, khoá học tự xây ở P2), thời hạn (tháng), thời điểm cấp quyền (khi thanh toán đủ / khi tạo hoá đơn), gia hạn tự động khi thanh toán hoá đơn gia hạn, số ngày báo trước khi hết hạn. Bảng danh mục thêm cột Sản phẩm FLYER và Đang hoạt động (số quyền truy cập còn hiệu lực).

Cổng phụ huynh: Học tập /parent/learning

Bộ chuyển đổi giữa các học viên được liên kết (PRD 07). Thẻ "Bài tập cần làm" (tên bài, lớp, hạn, nút Mở ứng dụng học), thẻ "Tuần này" (thời lượng học, số bài đã nộp, điểm trung bình), lượt thi gần nhất kèm liên kết báo cáo, thẻ gói luyện thi kèm ngày hết hạn và nút Gia hạn (mở hoá đơn kèm mã QR). Nút "Mở ứng dụng học" thực hiện đăng nhập một lần. Trạng thái trống: "Học viên chưa có tài khoản học tập. Vui lòng liên hệ trung tâm."

5Quy tắc nghiệp vụ

  1. Một học viên (PRD 02) trỏ tới đúng một hồ sơ người học FLYER; một hồ sơ người học có thể được nhiều bản ghi học viên ở các chi nhánh khác nhau trỏ tới. Thay đổi liên kết cần giáo vụ trở lên, có lý do và ghi nhật ký; liên kết cũ được giữ trong lịch sử.
  2. Một lớp của trung tâm ánh xạ tới tối đa một lớp FLYER tại một thời điểm; một lớp FLYER không được ánh xạ tới hai lớp của trung tâm. Tách liên kết yêu cầu không còn bài tập đang mở.
  3. Trường Số là nguồn có thẩm quyền về thành viên lớp; danh sách trên lớp FLYER được suy ra từ ghi danh đang hoạt động. Thành viên thêm thủ công trên FLYER mà không có ghi danh hiển thị cảnh báo "Ngoài danh sách" và không bị tự động gỡ trong P1.
  4. Giáo viên chỉ giao bài cho lớp mà người đó là giáo viên chính, trợ giảng hoặc dạy thay trong ngày, và phải có tài khoản giáo viên FLYER còn quyền giao bài (kiểm tra qua package/my-subscriptions); nếu không, thao tác bị chặn với thông báo rõ ràng và giáo vụ có thể giao thay.
  5. Mỗi bài tập gắn với đúng một bài học và tối đa một buổi học; bài tập giao ngoài lịch (ôn tập, nghỉ lễ) có session_id rỗng và bắt buộc chọn bài học.
  6. Hạn nộp mặc định là 2 giờ trước buổi học kế tiếp; hạn tối thiểu là 6 giờ sau khi giao; gia hạn chỉ được lùi về sau và ghi nhật ký.
  7. Nhắc hạn nộp tuân theo chính sách kênh và khung giờ yên tĩnh của PRD 07; tối đa một tin cho mỗi mốc cho mỗi học viên; học viên đã nộp không nhận tin. Mẫu tin "Nhắc bài tập" có tham số tên học viên, lớp, tên bài, hạn nộp.
  8. Kết quả đồng bộ từ FLYER là dữ liệu chỉ đọc trong Trường Số. Điểm đưa vào kỳ đánh giá (PRD 13) tính theo công thức của kỳ đó; ghi đè phải có lý do và hiển thị cả giá trị gốc.
  9. Quyền truy cập gói học trực tuyến được cấp khi hoá đơn đạt điều kiện theo cấu hình tenant (thanh toán đủ, hoặc khi tạo hoá đơn); thời hạn tính từ ngày cấp. Gia hạn trước khi hết hạn cộng dồn từ ngày hết hạn cũ. Huỷ hoá đơn hoặc hoàn tiền thu hồi ngay; bảo lưu tạm dừng và gia hạn tương ứng; nghỉ học không thu hồi quyền đã thanh toán trước ngày hết hạn.
  10. Đăng nhập một lần chỉ khả dụng cho phụ huynh có liên kết với học viên trong tenant, hoặc học viên trưởng thành tự uỷ quyền; mã trao đổi dùng một lần, hiệu lực 60 giây, gắn với thiết bị phát hành; mọi lần phát hành được ghi nhật ký.
  11. P2: chứng chỉ hoàn thành mang tên và logo của trung tâm, có mã tra cứu công khai, và không mô tả là chứng chỉ của một tổ chức khảo thí.

6Mô hình dữ liệu

Thực thểTrườngGhi chú
student (PRD 02)+ learner_link_id uuid null; learner_linked_at; learner_link_source enum(convert, create, import, manual)extend; learner_profile_id đã có
class_lms_linkid uuid; tenant_id (center_id); school_id; class_id; flyer_class_id int64; teacher_profile_id int64; status enum(linked, syncing, error, unlinked); last_synced_at; last_error; created_by; created_at; unlinked_atnew; unique (class_id) khi status ≠ unlinked; unique (flyer_class_id)
class_lms_memberid; link_id; student_id; learner_profile_id; enrollment_id; status enum(active, pending, removed, external); synced_atnew; external = có trên FLYER nhưng không có ghi danh
homeworkid uuid; tenant_id; school_id; class_id; link_id; lesson_id (PRD 14) not null; session_id null; assign_test_id int64; title; type; assigned_by_staff_id; assigned_at; due_at; audience enum(class, present, selected); grade_into_assessment bool; assessment_period_id null (PRD 13); status enum(open, expired, closed, revoked); reminder_offsets_hours int[]new; unique (assign_test_id)
homework_resultid; homework_id; student_id; learner_profile_id; attempt_id int64 null; status enum(not_started, in_progress, submitted, late); submitted_at; score_pct; skill_scores jsonb; duration_sec; synced_at; late_after_close boolnew; unique (homework_id, student_id); chỉ đọc. Thời lượng học và ngày hoạt động gần nhất được tổng hợp theo ngày từ báo cáo tuần vào bảng learning_activity_daily
homework_reminderid; homework_id; student_id; offset_hours; message_id (PRD 07); sent_at; outcomenew; unique (homework_id, student_id, offset_hours)
fee_plan (PRD 05)type thêm giá trị online_package; + flyer_product_code; duration_months; grant_on enum(paid, invoiced); auto_renew_on_payment bool; expiry_notice_days int[]extend
online_entitlementid uuid; tenant_id; school_id; student_id; learner_profile_id; fee_plan_id; flyer_product_code; tuition_id; starts_at; ends_at; status enum(pending, active, paused, expired, revoked, failed); paused_at; pause_days int; flyer_grant_ref; last_error; created_at; updated_atnew; một dòng cho mỗi lần cấp hoặc gia hạn
sso_exchangeid uuid; tenant_id; guardian_id; student_id; learner_profile_id; code_hash; issued_at; expires_at; consumed_at null; device_fingerprint; ipnew; chỉ lưu hash của mã
online_course, course_enrollment, course_certificate (P2)course: id; tenant_id; title; level_code; lesson_ids uuid[] có thứ tự; required_assign_test_ids int64[]; game_ids; completion_rule jsonb {min_required_pct, final_exam_min_score}; certificate_template_id; status enum(draft, published, archived). enrollment: course_id; student_id; source enum(entitlement, class, manual); progress_pct; completed_at. certificate: course_id; student_id; number; lookup_code; issued_at; pdf_file_idnew; unique (course_id, student_id) trên chứng chỉ
elearning_policy (cấu hình tenant)require_learner_account bool (mặc định bật); default_due_hours_before_next_session 2; reminder_offsets_hours [24]; inactive_days_threshold 14; grant_on mặc định; expiry_notice_days [14, 3]; sso_enabled boollưu trong cấu hình trường (PRD 10)

Phạm vi dữ liệu: mọi thực thể mang tenant_id; thực thể gắn với lớp hoặc học viên mang thêm school_id để bộ lọc chi nhánh và phạm vi quyền áp dụng trực tiếp. flyer_class_id, assign_test_id, attempt_id, learner_profile_id là khoá phía FLYER, kiểu int64, không hiển thị cho phụ huynh.

7Hợp đồng API

MethodPathMục đíchStatus
GET/POST · POST/DELETE · POST/v3/crm/customers/{id}/learners · .../learners/{link_id} · .../set-primaryLiệt kê, tạo, gỡ liên kết khách hàng với người học; đặt người học chínhexisting
GET/v3/crm/customers/learners/searchTìm hồ sơ người học để liên kếtexisting
GET/PUT/DELETE/v3/school/classes/{id}/lms-linkXem; tạo hoặc liên kết ({flyer_class_id} | {create: true, teacher_profile_id}); tách. PUT trả 409 khi lớp FLYER đã được ánh xạ nơi khácnew
POST/v3/school/classes/{id}/lms-link/syncĐồng bộ danh sách ngay → {added, removed, pending, external}new
GET/v3/school/lessons/{lesson_id}/suggested-assign-testsBài tập FLYER gợi ý cho một bài học (PRD 14)new
GET/POST/v3/school/classes/{id}/homeworkDanh sách; tạo {lesson_id, session_id?, assign_test_ids[], due_at, audience, student_ids?, grade_into_assessment, reminder_offsets_hours?} → tạo assign-test trên FLYER rồi ghi bản ghi homeworknew
GET/PATCH/DELETE · POST/v3/school/homework/{id} · /remindChi tiết kèm kết quả từng học viên; gia hạn {due_at, reason}; thu hồi; nhắc ngay học viên chưa nộp (lớp gửi tin PRD 07)new
GET/v3/teacher/classes/{class_id}/assign-tests · /v3/teacher/viewer/rollup-assign-tests · /v3/teacher/assign-tests/{assign_test_id}/analytics/question-analysisNguồn trạng thái nộp cho bộ đồng bộ; màn hình giáo viên; liên kết phân tích theo câu hỏiexisting
GET/POST/v3/teacher/exams và đường dẫn conChọn đề thi cho kỳ đánh giá (PRD 13)existing
GET/v3/learner/attempts/{id}/report · /v3/parent/learner/{id}/weekly-report · /reportBáo cáo lượt làm bài; nguồn thời lượng học, kỹ năng, hoạt độngexisting
GET/v3/school/students/{id}/learningTổng hợp cho tab Học tập: hoạt động, bài tập, lượt thi, quyền truy cập (gộp từ các endpoint FLYER và bảng của Trường Số)new
POST/v3/school/homework/results/ingestĐiểm nhận webhook nộp bài từ FLYER (nếu được phát hành); bộ đồng bộ theo lịch là phương án dự phòngnew
GET/PUT/v3/school/fee-plans/{id}Thêm các trường của loại online_packageextend
GET/POST · POST/v3/school/students/{id}/entitlements · /v3/school/entitlements/{id}/revoke · /pause · /resume · /retryLiệt kê; cấp thủ công {fee_plan_id, starts_at, reason}; thu hồi, tạm dừng, tiếp tục, thử cấp lại; có lý do, ghi nhật ký. Danh mục sản phẩm FLYER bán được lấy từ /v3/school/online-productsnew
GET/v3/teacher/package/my-subscriptionsKiểm tra quyền giao bài của giáo viênexisting
GET/v3/learner/feature-configsPhản ánh quyền truy cập của người học; bổ sung nguồn school_entitlementextend
POST/v3/parent/learner/{id}/sso-codePhát hành mã trao đổi dùng một lần cho phụ huynh đã đăng nhập cổngnew
POST/v3/learner/auth/exchangeĐổi mã thành phiên người học; 410 khi mã đã dùng hoặc hết hạnnew
GET/v3/parent/learner/{id}/learningTổng hợp cho cổng phụ huynh: bài tập cần làm, tuần này, lượt thi, góinew
GET/v3/school/reports/elearningschool_id, from, to, group_by=class|student; format=xlsxnew
GET/PUT/v3/teacher/school-configKhối elearning_policyextend
GET/POST/PATCH · POST · GET/v3/school/courses · /{id}/publish · /{id}/certificates · /v3/public/certificates/{lookup_code} (P2)Khoá học tự xây từ bài học PRD 14; xuất bản; cấp chứng chỉ; tra cứu công khainew

8Phân quyền

Mã quyềnownerbranch_manageradmissionsacademic_adminteacheraccountantparent
elearning.learner.linktất cảchi nhánhkhi chuyển đổichi nhánhkhôngkhôngkhông
elearning.class.linktất cảchi nhánhkhôngchi nhánhlớp được phân công (tạo, không tách)khôngkhông
elearning.homework.assigntất cảchi nhánhkhôngchi nhánhlớp được phân côngkhôngkhông
elearning.homework.viewtất cảchi nhánhhọc viên đang tư vấnchi nhánhlớp được phân côngkhônghọc viên được liên kết
elearning.results.overridetất cảchi nhánhkhôngchi nhánhkhôngkhôngkhông
elearning.entitlement.managetất cảchi nhánhkhôngchi nhánhkhôngxem, cấp theo hoá đơnkhông
elearning.sso.usekhôngkhôngkhôngkhôngkhôngkhônghọc viên được liên kết
elearning.report, elearning.exporttất cảchi nhánhkhôngchi nhánhlớp được phân công (không xuất)báo cáo góikhông
elearning.policycókhôngkhôngkhôngkhôngkhôngkhông
elearning.course.author, elearning.certificate.issue (P2)tất cảchi nhánhkhôngchi nhánhkhôngkhôngkhông

9Sự kiện phân tích

Sự kiệnThuộc tính
learner_linkedsource (convert|create|import|manual), mode (create|link), by_role
class_lms_linked · class_lms_syncmode, roster_size, unlinked_students · trigger (schedule|manual|enrollment), added, removed, pending, external, outcome
homework_assignedfrom (attendance|session|class), suggested_used, assign_test_count, audience, hours_to_due, grade_into_assessment, seconds_to_assign
homework_reminder_sentoffset_hours, channel, outcome, remaining_unsubmitted
homework_result_syncedvia (webhook|schedule), lag_minutes, status, late_after_close
entitlement_granted · entitlement_revokedflyer_product_code, grant_on, duration_months, renewal, outcome, latency_ms · reason (expired|void|refund|paused|manual)
entitlement_expiry_notice_sentdays_before, channel, renewed_within_7d (cập nhật sau)
parent_sso_usedtarget (web|app_deeplink), latency_ms, outcome
course_published · certificate_issued (P2)lesson_count, required_count · course_id, days_to_complete

10Trường hợp biên

11Câu hỏi còn mở

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