- Given Có quyền
assessments.createvà một lớp đang hoạt động - When Nhập tên, loại, ngày thi, chọn mẫu cấu trúc điểm hoặc tự định nghĩa cấu phần với trọng số và thang điểm
- Then Kỳ ở trạng thái
draft; danh sách học viên chụp từ lớp tại ngày thi; lưới trống mở ngay; tổng trọng số khác 100 bị chặn; với phạm vi trình độ, một kỳ cha có một lưới con cho mỗi lớp, duyệt và công bố riêng.
PRD 13 · Điểm thi và kết quả học tập
Kỳ đánh giá ở cấp trung tâm cho từng lớp hoặc từng trình độ, cấu trúc điểm theo kỹ năng với trọng số và thang điểm, nhập điểm theo lưới cả lớp hoặc từng học viên kèm nhận xét và tệp đính kèm, quy trình nháp rồi duyệt rồi công bố, thông báo phụ huynh qua Sổ liên lạc, lịch sử sửa điểm, xếp loại, bảng điểm và chứng nhận. Bài kiểm tra trực tuyến của FLYER đã có sẵn và được gắn vào kỳ đánh giá như một nguồn điểm.
Xuất xứ / Prompt / Giới hạn
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-frontendvà đặc tả OpenAPI/v3trê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ả
/v3trê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: PSE ONE (pse4.one, khảo sát công khai ngày 16/09/2026) có mô-đun "Quản lý điểm thi" với hai chế độ nhập, cả lớp và từng học viên, đính kèm video, hình ảnh, tài liệu, thông báo phụ huynh qua ứng dụng di động và email; chứng chỉ chỉ được nhắc trong tài liệu tiếp thị. Đặc tả dưới đây là thiết kế riêng của Trường Số, bổ sung bước duyệt, lịch sử điểm và nguồn điểm FLYER.
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ấu trúc điểm của đối thủ: một cột duy nhất hay nhiều cột theo kỹ năng, có trọng số hay không.
- Có bước duyệt của giáo vụ trước khi điểm đến phụ huynh hay giáo viên gửi trực tiếp; sửa điểm sau khi gửi có ghi lịch sử không.
- Ứng dụng phụ huynh hiển thị gì trong "kết quả học tập": điểm, nhận xét, xếp loại, thứ hạng.
- Giới hạn tệp đính kèm; có nhập từ Excel hay phím tắt trên lưới không.
- "Chứng chỉ" có thật trong sản phẩm hay chỉ là nội dung tiếp thị; nếu có, có mẫu, số hiệu và xác thực không.
Thiết kế đề xuất
Danh sách kỳ đánh giá theo trạng thái, lưới nhập điểm cả lớp làm màn hình trung tâm, ngăn chi tiết học viên và modal duyệt phủ lên lưới, tab Kết quả trên hồ sơ học viên và hai màn hình di động cho phụ huynh và giáo viên. Điều quan trọng nhất: điểm đi qua ba trạng thái nháp, chờ duyệt, đã công bố trước khi đến phụ huynh, và mọi ô lấy từ FLYER được đánh dấu rõ.








1Mục đích
Bằng chứng tiến bộ mà phụ huynh tin tưởng nhất là điểm của một bài kiểm tra do trung tâm tổ chức, kèm nhận xét của giáo viên đứng lớp. Hiện nay, phần lớn trung tâm giữ điểm trong bảng tính của từng giáo viên và gửi ảnh chụp bảng điểm vào nhóm Zalo; giáo vụ không kiểm tra được trước khi điểm đến tay phụ huynh. Mô-đun này đưa kỳ đánh giá thành một bản ghi vận hành: cấu trúc điểm định nghĩa trước, lưới nhập điểm cả lớp, bước duyệt, thông báo tự động và lịch sử sửa điểm. Kết quả bài kiểm tra trực tuyến trên FLYER được gắn vào kỳ đánh giá như một nguồn điểm thay vì nhập lại.
Trong phạm vi
- Kỳ đánh giá cho một lớp hoặc một trình độ trên nhiều lớp: định kỳ (giữa khoá, cuối khoá), kiểm tra thường xuyên, thi thử chứng chỉ Cambridge hoặc IELTS.
- Cấu trúc điểm theo cấu phần (Nghe, Nói, Đọc, Viết hoặc tuỳ chỉnh) với trọng số và thang điểm 10, 100, khiên Cambridge, band IELTS; mẫu cấu trúc điểm cấp trung tâm.
- Nhập điểm theo lưới cả lớp (bàn phím, dán từ Excel) và theo từng học viên; nhận xét của giáo viên; tệp đính kèm hình ảnh, tài liệu, video.
- Trạng thái nháp, chờ duyệt, đã công bố; thông báo phụ huynh khi công bố qua PRD 07; sửa điểm sau công bố có lý do và nhật ký.
- Gắn kết quả bài kiểm tra FLYER hoặc kiểm tra xếp lớp làm nguồn điểm; tab Kết quả trên hồ sơ học viên và cổng phụ huynh; xuất xlsx cả lớp và bảng điểm PDF.
- Giai đoạn 2: quy tắc xếp loại; chứng nhận hoàn thành khoá với mẫu, số hiệu và mã QR xác thực.
Ngoài phạm vi
- Soạn đề, tổ chức thi và chấm bài trực tuyến (nền tảng FLYER).
- Điểm bài tập và luyện tập hằng ngày trên FLYER (tab Học tập, PRD 02).
- Báo cáo học tập định kỳ (PRD 07); PRD này cung cấp khối kết quả kỳ đánh giá cho báo cáo đó.
- Xếp hạng công khai giữa các học viên hoặc giữa các lớp.
2Hiện trạng
Nền tảng FLYER đã có toàn bộ vòng đời của một bài kiểm tra trực tuyến: tạo kỳ thi, ca thi, thí sinh, báo cáo điểm theo bốn kỹ năng, thông báo. Kết quả kiểm tra xếp lớp đã có từ PRD 01. Điều còn thiếu là bản ghi kỳ đánh giá ở cấp trung tâm, nơi điểm bài thi giấy, bài nói trực tiếp và bài thi FLYER được đặt cạnh nhau, được duyệt và công bố cho phụ huynh.
| Năng lực hiện có | Endpoint | Giữ lại? |
|---|---|---|
| Kỳ thi FLYER, ca thi, danh sách thí sinh | GET/POST /v3/teacher/exams; GET/PUT/DELETE .../{id}; POST .../{exam_id}/sessions; GET .../students | existing nguồn để chọn khi gắn vào kỳ đánh giá; đối chiếu với danh sách lớp |
| Báo cáo điểm theo kỹ năng (overall, bốn kỹ năng, khiên, CEFR, band) | GET /v3/teacher/exams/{exam_id}/score-report; .../analytics/summary | existing đọc khi lấy điểm từ FLYER |
| Thông báo kỳ thi; kỳ thi phía người học | POST .../exams/{exam_id}/notify; GET /v3/learner/exams | existing giữ cho lịch thi; thông báo kết quả đi qua PRD 07 |
| Kiểm tra xếp lớp kèm điểm bốn kỹ năng | GET/POST /v3/crm/placement-tests; POST .../{id}/submit-result | existing làm điểm đầu vào |
| Báo cáo người học cho phụ huynh | GET /v3/parent/learner/{id}/report | existing cổng phụ huynh thêm mục kết quả kỳ đánh giá |
Điểm FLYER trên hồ sơ học viên (StudentScoreEntry) | tab Học tập, PRD 02 | extend thêm tab Kết quả |
| Kỳ đánh giá, cấu trúc điểm, lưới nhập, duyệt, công bố, lịch sử, xếp loại, bảng điểm, chứng nhận | không có | new |
3User story và tiêu chí chấp nhận
- Given Kỳ ở trạng thái
drafthoặcreturnedvà giáo viên được phân công lớp - When Nhập số vào từng ô, dùng Enter xuống dòng, Tab sang cột, phím mũi tên di chuyển, hoặc dán một vùng ô từ Excel
- Then Mỗi ô được kiểm tra ngay theo thang của cấu phần (0–10 một chữ số thập phân, 0–100 số nguyên, khiên 0–5, band 0–9 bước 0,5); ô sai có viền đỏ; điểm tổng tính lại ngay; bản nháp tự lưu 10 giây sau lần gõ cuối; dữ liệu dán khớp theo thứ tự dòng hoặc theo cột Mã học viên, kèm hộp thoại cho biết số ô sẽ ghi đè.
- Given Lưới điểm của kỳ đánh giá
- When Chọn tên học viên để mở ngăn chi tiết, nhập từng cấu phần, đánh dấu Vắng thi hoặc Miễn nếu cần, viết nhận xét (tối đa 1.000 ký tự, có gợi ý mẫu câu theo mức điểm) và đính kèm tối đa 5 tệp
- Then Dữ liệu lưu vào cùng bản ghi điểm; tệp đi qua dịch vụ upload hiện có; dòng trên lưới hiển thị biểu tượng nhận xét và số tệp; nút Trước và Sau đi lần lượt qua các học viên.
- Given Kỳ có cấu phần theo kỹ năng và trường có một kỳ thi FLYER đã hoàn thành
- When Chọn "Lấy điểm từ FLYER", chọn kỳ thi từ
GET /v3/teacher/exams, xác nhận ánh xạ kỹ năng sang cấu phần và thang quy đổi - Then Hệ thống đọc
score-report, khớp thí sinh với học viên qua tài khoản FLYER, điền các ô với nguồnflyer_exam; học viên không có bài thi và thí sinh ngoài lớp được liệt kê; ô đã nhập tay chỉ bị ghi đè khi chọn rõ "Ghi đè".
- Given Mọi học viên đã có điểm hoặc được đánh dấu Vắng thi hoặc Miễn, nhận xét đủ theo cấu hình
- When Giáo viên chọn "Gửi duyệt"; giáo vụ xem lưới với giá trị bất thường được tô sáng (điểm 0, điểm tối đa, chênh lệch trên 3 điểm giữa các cấu phần, nhận xét trống) rồi chọn "Công bố" hoặc "Trả lại" kèm ghi chú
- Then Gửi duyệt chuyển sang
pending_review, khoá lưới với giáo viên và thông báo người có quyềnassessments.publish. Công bố chuyển sangpublished, khoá điểm, phát sự kiệnassessment.published; PRD 07 gửi một tin cho liên hệ chính của mỗi học viên có điểm (ứng dụng phụ huynh, Zalo OA, email; mẫu ZNSassessment_published) gồm tên học viên, tên kỳ, điểm tổng và liên kết đến trang kết quả với điểm từng cấu phần, nhận xét, tệp và xếp loại, không có thứ hạng; trạng thái gửi hiển thị trên kỳ. Trả lại chuyển sangreturned, giáo viên nhận ghi chú và lưới mở lại.
- Given Kỳ ở trạng thái
publishedvà người dùng có quyềnassessments.regrade - When Sửa một ô điểm hoặc nhận xét, nhập lý do (bắt buộc, 10–300 ký tự) và chọn có gửi thông báo điều chỉnh hay không
- Then Một dòng lịch sử lưu giá trị trước, sau, người sửa, thời điểm, lý do; điểm tổng và xếp loại tính lại; cổng phụ huynh hiển thị nhãn "Đã điều chỉnh ngày dd/MM"; tin điều chỉnh chỉ gửi đến phụ huynh bị ảnh hưởng; giáo viên không có quyền này thấy nút "Đề nghị sửa điểm" tạo một công việc cho giáo vụ.
- Given Học viên có ít nhất một kỳ đã công bố
- When Mở tab Kết quả trên hồ sơ học viên
- Then Thấy bảng các kỳ (ngày, lớp, loại, từng cấu phần, tổng, xếp loại), biểu đồ đường theo cấu phần, điểm đầu vào từ kiểm tra xếp lớp, và nút "Xuất bảng điểm" tạo PDF một trang với logo trung tâm, bảng điểm và nhận xét; ở màn hình kỳ đánh giá, "Xuất Excel" tạo xlsx cả lớp với sheet điểm và sheet nhận xét.
- Given Có quyền
assessments.settingsvà một kỳ cuối khoá đã công bố - When Định nghĩa các mức xếp loại cho từng thang (ví dụ thang 10: Xuất sắc từ 9,0; Giỏi từ 8,0; Khá từ 6,5; Trung bình từ 5,0; Cần cố gắng dưới 5,0), rồi chọn "Cấp chứng nhận", chọn mẫu và xác nhận danh sách học viên đạt điều kiện (xếp loại và chuyên cần tối thiểu)
- Then Kỳ công bố sau khi lưu quy tắc hiển thị nhãn xếp loại, kỳ trước đó giữ nhãn cũ trừ khi chọn "Áp dụng lại"; các mức phải phủ kín thang và không chồng lấn. Mỗi chứng nhận nhận số hiệu duy nhất (ví dụ
CN-2026-000123), một PDF dựng từ mẫu kèm mã QR dẫn đến trang xác thực công khai, được gửi đến phụ huynh qua PRD 07; thu hồi cần lý do và trang xác thực hiển thị "Đã thu hồi".
4Màn hình
Tab: Nháp (N) · Chờ duyệt (N) · Đã công bố · Tất cả. Bộ lọc: chi nhánh, lớp, trình độ, loại, giáo viên, khoảng ngày thi. Cột: tên kỳ, lớp hoặc trình độ, ngày thi, giáo viên, tiến độ nhập (11/12), nguồn (Nhập tay · FLYER · Xếp lớp), trạng thái (Nháp · Chờ duyệt · Đã công bố · Trả lại), thông báo đã gửi / tổng, kebab Mở · Nhân bản · Lưu trữ. Trạng thái rỗng: "Chưa có kỳ đánh giá. Tạo kỳ đánh giá đầu tiên từ một lớp đang học hoặc lấy điểm từ bài kiểm tra FLYER." Giáo viên chỉ thấy lớp được phân công.
Trường: Tên (bắt buộc, 3–120 ký tự); Loại (midterm / final / regular / mock_cambridge / mock_ielts); Phạm vi (một lớp / một trình độ kèm chọn lớp); Ngày thi (bắt buộc); Mẫu cấu trúc điểm (điền sẵn bảng cấu phần); bảng Cấu phần (tên, thang, điểm tối đa, trọng số %; 1–10 dòng, tổng = 100); Thang điểm tổng (ten / hundred / shields / band); công tắc Nhận xét bắt buộc; Người duyệt (tuỳ chọn).
Phần đầu: tên kỳ, ngày thi, trạng thái, thời điểm tự lưu; các nút Lấy điểm từ FLYER · Dán từ Excel · Xuất Excel · Gửi duyệt. Bảng: một dòng cho mỗi học viên, một cột cho mỗi cấu phần (tiêu đề ghi trọng số), cột Tổng, cột Xếp loại (P2), cột NX; hàng chân trang: đã nhập / tổng, trung bình, cao nhất, thấp nhất. Cột Học viên cố định khi cuộn ngang. Enter xuống dòng, Tab sang phải, phím mũi tên di chuyển, Escape huỷ sửa ô, Ctrl+Z hoàn tác. Ô nguồn FLYER mang dấu F. Gõ "v" đánh dấu Vắng thi, "m" đánh dấu Miễn. Cột NX mở ngăn chi tiết học viên. Trạng thái: khung chờ tải; danh sách rỗng "Lớp chưa có học viên tại ngày thi"; xung đột "Lưới đã được [tên] cập nhật lúc HH:mm" kèm nút tải lại; banner "Chờ duyệt: chỉ đọc" hoặc "Đã công bố: sửa điểm cần lý do".
Ngăn chi tiết: họ tên, mã học viên, điểm tổng và xếp loại; một ô cho mỗi cấu phần; công tắc Vắng thi / Miễn; nhận xét (1.000 ký tự, nút "Gợi ý" chèn mẫu câu theo mức điểm); tệp đính kèm (kéo thả, xem trước, phát video); lịch sử điểm; nút Trước · Sau · Lưu. Modal duyệt: số học viên, đã có điểm, vắng thi, miễn, thiếu nhận xét, giá trị bất thường liên kết đến ô; xem trước tin nhắn phụ huynh với một học viên mẫu, số phụ huynh có thể liên hệ và số không có kênh; công tắc "Gửi thông báo ngay" và "Hiển thị xếp loại" (P2); nút Công bố · Trả lại kèm ghi chú · Huỷ.
Hồ sơ học viên: bảng kỳ đã công bố (ngày, lớp, loại, từng cấu phần, tổng, xếp loại, nhận xét, tệp), biểu đồ đường theo cấu phần qua tối đa 12 kỳ, khối "Điểm đầu vào" từ kiểm tra xếp lớp, chứng nhận (P2), nút Xuất bảng điểm PDF. Cổng phụ huynh: mục "Kết quả kỳ đánh giá" trong trang Kết quả của PRD 07, mỗi kỳ là một thẻ mở trang chi tiết; không có thứ hạng. Cài đặt: mẫu cấu trúc điểm (mẫu hệ thống: Bốn kỹ năng thang 10, Cambridge YLE theo khiên, IELTS theo band, Kiểm tra thường xuyên một cột), mẫu câu nhận xét, quy tắc xếp loại (P2), mẫu chứng nhận và định dạng số hiệu (P2).
5Quy tắc nghiệp vụ
- Một kỳ đánh giá thuộc một chi nhánh và một lớp (hoặc một trình độ với các lưới con theo lớp); danh sách học viên chụp từ các lượt ghi danh đang hoạt động tại ngày thi; giáo vụ có thể bổ sung thủ công trước khi công bố, có ghi nhật ký.
- Trọng số cộng lại bằng 100. Điểm tổng = tổng (điểm cấu phần quy đổi về thang tổng × trọng số) / 100; làm tròn một chữ số thập phân với thang 10, số nguyên với thang 100, bước 0,5 với band. Cấu phần Vắng thi tính 0; cấu phần Miễn loại khỏi mẫu số; vắng thi toàn bộ không có điểm tổng và xếp loại.
- Trạng thái:
draft→pending_review→published;pending_review→returned→pending_review;published→archived. Chuyển khác trả vềINVALID_TRANSITION. - Điều kiện gửi duyệt: mọi học viên có đủ điểm hoặc được đánh dấu Vắng thi hoặc Miễn; nhận xét đủ khi kỳ bật "Nhận xét bắt buộc". Người duyệt phải khác người gửi duyệt khi trung tâm bật "Tách vai trò duyệt" (mặc định bật với chi nhánh có từ 2 nhân sự có quyền publish).
- Sau công bố, điểm và nhận xét chỉ được sửa bởi người có quyền
assessments.regradekèm lý do; mọi thay đổi ghi vào lịch sử, không ghi đè giá trị cũ; kỳ đã công bố không được xoá, chỉ lưu trữ. - Thông báo công bố gửi một tin cho liên hệ chính của mỗi học viên có điểm qua PRD 07 với loại
assessment_published; tuân theo giờ im lặng 21:30–07:00; học viên trưởng thành có vai trò cổng phụ huynh cho chính học viên đó nhận tin trực tiếp. - Giá trị lấy từ FLYER giữ tham chiếu
exam_idvà thời điểm đọc; làm mới chỉ ở trạng thái nháp và trả lại; ô đã sửa tay mang cờmanual_overridevà không bị làm mới ghi đè trừ khi chọn rõ. - Quy đổi thang cố định: thang 100 sang thang 10 chia 10; khiên Cambridge sang thang 10 nhân 2; band IELTS giữ nguyên giá trị kèm ghi chú "quy đổi tham khảo"; không quy đổi ngược từ thang 10 sang band.
- Xếp loại (P2) tính tại thời điểm công bố và lưu kèm phiên bản quy tắc. Chứng nhận (P2) chỉ cấp từ kỳ cuối khoá đã công bố; số hiệu duy nhất trong tenant, không tái sử dụng sau thu hồi; trang xác thực công khai chỉ hiển thị tên học viên, khoá học, ngày cấp, chi nhánh và trạng thái.
- Tệp đính kèm tối đa 5 mỗi học viên mỗi kỳ; hình ảnh, PDF, DOCX tối đa 10 MB; video tối đa 100 MB hoặc liên kết; lưu 24 tháng sau công bố.
- Kỳ đánh giá là dữ liệu cấp chi nhánh (
school_id); mẫu cấu trúc điểm, quy tắc xếp loại, mẫu chứng nhận và mẫu câu nhận xét là dữ liệu cấp trung tâm (center_id).
6Mô hình dữ liệu
| Thực thể | Trường | Ghi chú |
|---|---|---|
| assessment_template | id; center_id; name; components jsonb [{key, name, scale, max, weight}]; total_scale enum(ten, hundred, shields, band); comment_required; is_system | cấp trung tâm; mới |
| assessment | id uuid; center_id; school_id; class_id null; level_id null; parent_assessment_id null; name; type enum(midterm, final, regular, mock_cambridge, mock_ielts); exam_date; components jsonb (bản chụp từ mẫu); total_scale; comment_required; source enum(manual, flyer_exam, placement_test, mixed); flyer_exam_id null; flyer_synced_at; status enum(draft, pending_review, returned, published, archived); reviewer_staff_id null; published_by; published_at; return_note; show_grade; grading_rule_version; version int; created_by; updated_at | cấp chi nhánh; mới; kỳ theo trình độ là bản ghi cha với bản ghi con theo lớp |
| assessment_score | id uuid; assessment_id; student_id; enrollment_id null; roster_type enum(enrolled, added); component_scores jsonb {key: {value, source, manual_override}}; total null; grade_label null; attendance_status enum(taken, absent, exempt); exempt_components[]; flyer_learner_id null; updated_by; updated_at; version int | unique (assessment_id, student_id); mới |
| assessment_comment | id; assessment_score_id (unique); body text (≤ 1.000 ký tự); template_phrase_id null; author_staff_id; updated_at | mới; tách bảng cho tìm kiếm toàn văn |
| assessment_attachment | id; assessment_score_id; kind enum(image, document, video, video_link); file_id null; url null; name; size_bytes; uploaded_by; created_at | mới; tối đa 5 mỗi score |
| assessment_score_history | id; assessment_score_id; field (component key | total | comment | attendance_status); from_value; to_value; reason; notify_sent; actor_id; created_at | chi tiết nhật ký; mới |
| grading_rule (P2), comment_phrase | grading_rule: id; center_id; scale; version; bands jsonb [{label, min, max}]; min_component null; effective_from. comment_phrase: id; center_id; min_total; max_total; text; lang | cấp trung tâm; mỗi lần sửa quy tắc tạo phiên bản mới |
| report_card | id; school_id; student_id; scope enum(assessment, course, period); assessment_id null; period_from; period_to; file_id; generated_by; generated_at; sent_at | mới; PDF đã dựng, bất biến |
| certificate_template, certificate (P2) | template: id; center_id; name; background_file_id; fields jsonb (vị trí tên, khoá học, ngày, số hiệu, QR); serial_format (CN-{yyyy}-{seq:6}); signer_name; signature_file_id; seal_file_id. certificate: id; center_id; school_id; student_id; assessment_id; template_id; serial (unique trong center); course_name; grade_label; issued_by; issued_at; file_id; qr_token (unique); status enum(active, revoked); revoked_reason | mẫu cấp trung tâm; chứng nhận cấp chi nhánh, số hiệu cấp trung tâm; mới |
| message_template (PRD 07) | type bổ sung assessment_published, assessment_adjusted, certificate_issued | extend |
7Hợp đồng API
| Method | Path | Mục đích / request / response | Trạng thái |
|---|---|---|---|
| GET/POST | /v3/teacher/exams; GET/PUT/DELETE /v3/teacher/exams/{id}; GET .../{exam_id}/students, /score-report, /analytics/summary | kỳ thi FLYER, thí sinh và điểm theo kỹ năng; backend đọc khi gắn nguồn FLYER | existing |
| POST / GET | /v3/teacher/exams/{exam_id}/sessions, /notify; /v3/learner/exams; /v3/parent/learner/{id}/report; /v3/crm/placement-tests, /{id}/submit-result | không đổi | existing |
| GET/POST | /v3/crm/assessments | lọc school_id, status, class_id, level_id, type, teacher_id, from, to → ListResponse; POST {school_id, name, type, exam_date, class_id | level_id + class_ids[], template_id | components[], total_scale, comment_required, reviewer_staff_id?} → assessment (children[] khi theo trình độ) | new |
| GET/PUT/DELETE | /v3/crm/assessments/{id} | chi tiết kèm counts; PUT chỉ ở draft/returned; DELETE chỉ ở draft; 409 STALE_VERSION | new |
| GET / PUT | /v3/crm/assessments/{id}/grid; PUT /{id}/scores | grid → {assessment, components, rows: [{student, roster_type, score, comment_present, attachment_count, flags}], stats}; scores {rows: [{student_id, component_scores?, attendance_status?, exempt_components?}], mode: grid|paste, overwrite, version}; kiểm tra toàn bộ trước khi ghi; 422 kèm danh sách ô lỗi; Idempotency-Key | new |
| GET/PUT | /v3/crm/assessments/{id}/students/{student_id}; POST/DELETE .../attachments[/{attachment_id}]; GET .../history | điểm, nhận xét, tệp của một học viên; PUT {component_scores, attendance_status, comment, reason? (bắt buộc khi published), notify_adjustment?}; lịch sử điểm | new |
| POST | /v3/crm/assessments/{id}/roster; /link-flyer-exam; /submit; /return; /publish; /archive | roster {add[], remove[], reason} chỉ trước công bố; link-flyer-exam {exam_id, mapping, overwrite} → {filled, unmatched_students[]}; /return {note}; /publish {notify, show_grade} phát sự kiện assessment.published; INVALID_TRANSITION, VALIDATION_INCOMPLETE | new |
| GET / POST | /v3/crm/assessments/{id}/export?format=xlsx; POST /{id}/report-cards | xlsx cả lớp; report-cards {student_ids[] | all} → {job_id} | new |
| GET | /v3/crm/students/{id}/results | các kỳ đã công bố (nhân sự thấy cả nháp với cờ), điểm đầu vào, chứng nhận, chuỗi điểm theo cấu phần | new |
| GET/POST/PUT/DELETE | /v3/crm/assessment-templates[/{id}]; /v3/crm/comment-phrases[/{id}]; GET/POST /v3/crm/grading-rules; /v3/crm/certificate-templates | danh mục cấp trung tâm; xoá mẫu bị chặn khi đang dùng; quy tắc xếp loại theo phiên bản (P2) | new |
| GET/POST | /v3/crm/certificates; POST /{id}/revoke; GET /{id}/file; GET /v3/crm/certificates/verify/{qr_token} | {assessment_id, template_id, student_ids[]} → chứng nhận kèm số hiệu; thu hồi {reason}; verify công khai không cần đăng nhập (P2) | new |
| GET | /v3/parent/learner/{id}/results; /results/{assessment_id} | kết quả đã công bố cho cổng phụ huynh; không có dữ liệu của học viên khác | new |
| GET/PUT | /v3/teacher/school-config | khối assessment_policy: comment_required_default, separate_reviewer, notify_absent, show_grade_default, attachment_limits | extend |
8Phân quyền
| Mã quyền | owner | branch_manager | admissions | academic_admin | accountant | teacher | parent |
|---|---|---|---|---|---|---|---|
assessments.view | tất cả | chi nhánh | không | chi nhánh | không | lớp được phân công | con được liên kết (chỉ đã công bố) |
assessments.create, .enter_scores, .submit, .link_flyer, .export | có | chi nhánh | không | chi nhánh | không | lớp được phân công | chỉ xuất bảng điểm của con |
assessments.publish, assessments.roster_edit | có | chi nhánh | không | chi nhánh | không | không | không |
assessments.regrade | có | chi nhánh | không | chi nhánh | không | chỉ đề nghị sửa | không |
certificates.issue, certificates.revoke (P2) | có | chi nhánh | không | cấp; thu hồi cần branch_manager | không | không | không |
assessments.settings (mẫu, xếp loại, mẫu chứng nhận, mẫu câu) | có | không | không | chỉ mẫu câu nhận xét | không | không | không |
9Sự kiện phân tích
| Sự kiện | Thuộc tính |
|---|---|
| assessment_created | type, scope (class|level), from_template, components_count, total_scale |
| assessment_scores_saved | mode (grid|single|paste|flyer_import), cells_written, cells_invalid, seconds_in_grid, by_role, unmatched (flyer) |
| assessment_submitted / assessment_returned | students, absent_count, comments_missing, hours_from_exam_date, anomalies_flagged |
| assessment_published | students, notified, skipped_no_channel, show_grade, hours_in_review |
| assessment_notification_sent | channel, outcome, template (published|adjusted|certificate) |
| assessment_score_regraded | field, days_after_publish, by_role, notify |
| assessment_exported | format (xlsx|pdf), scope (class|student) |
| parent_result_viewed | seconds_after_notification, has_attachment, has_grade |
| certificate_issued / certificate_revoked / certificate_verified | template_id, count, reason, source (qr|link) |
10Trường hợp biên
- Học viên chuyển lớp giữa ngày thi và ngày công bố: vẫn thuộc danh sách kỳ của lớp cũ; hồ sơ hiển thị tên lớp tại thời điểm thi.
- Học viên nhập học sau ngày thi nhưng có dự thi: giáo vụ thêm thủ công (
roster_type = added) kèm lý do trước khi công bố. - Giáo viên chính và trợ giảng cùng nhập lưới: lượt lưu với
versioncũ nhận 409 kèm bản mới nhất, các ô khác biệt được tô sáng. - Dán từ Excel có dòng dư hoặc mã học viên không tìm thấy: các dòng đó bị bỏ qua và liệt kê, không lệch dòng.
- Thí sinh FLYER chưa liên kết với học viên trong Trường Số: liệt kê "Chưa khớp" kèm gợi ý theo tên; giáo vụ khớp thủ công một lần và liên kết lưu vào hồ sơ học viên (PRD 02).
- Thay đổi cấu phần hoặc thang sau khi đã có điểm: chỉ ở trạng thái nháp, cảnh báo số ô sẽ bị xoá; xoá cấu phần đang có điểm yêu cầu gõ tên cấu phần để xác nhận.
- Phụ huynh không có kênh nào đã đồng ý: tin bị bỏ qua với lý do "Chưa có kênh liên lạc"; kỳ đánh giá hiển thị số bị bỏ qua và bộ phận lễ tân thấy trong danh sách cần theo dõi (PRD 07).
- Công bố trong giờ im lặng: kết quả hiển thị ngay trên cổng phụ huynh, tin nhắn giữ đến 07:00.
- Sửa điểm sau công bố làm chứng nhận đã cấp không còn đạt điều kiện: không tự thu hồi; kỳ đánh giá hiển thị cảnh báo để giáo vụ quyết định.
- Kỳ theo trình độ có một lớp chưa nhập xong: các lớp khác vẫn công bố riêng; báo cáo theo trình độ ghi rõ số lớp đã công bố.
11Câu hỏi còn mở
- Học viên có được xem kết quả trong ứng dụng học tập FLYER không? Đề xuất: giai đoạn 1 chỉ phụ huynh; giai đoạn 2 cân nhắc cho học viên từ 15 tuổi.
- Nhận xét có bắt buộc theo mặc định cho mọi loại kỳ không? Đề xuất: bắt buộc với giữa khoá và cuối khoá, tuỳ chọn với kiểm tra thường xuyên.
- Chứng nhận có cần chữ ký số theo quy định pháp luật không? Cần ý kiến pháp lý trước P2.
- Điểm kiểm tra thường xuyên có cộng dồn vào điểm cuối khoá theo trọng số không? Đề xuất: giai đoạn 2, dưới dạng kỳ tổng hợp đọc từ các kỳ thành phần.
- Báo cáo học tập của PRD 07 có thay thế bảng điểm PDF không? Đề xuất: cùng tồn tại; bảng điểm cho một kỳ, báo cáo học tập cho một giai đoạn.
Trường Số (truongso.net) · Nội bộ FLYER