Tiến độ dự án AI-CLO PTITHCM — 07/09/2026

Mốc hiện tại

Dự án đang ở chuỗi nâng cấp V12.6.x, tập trung vào hai việc:

  1. bổ sung chế độ rút đề Cố định và rút ngẫu nhiên;
  2. hoàn thiện mô hình Ngân hàng câu hỏi dùng chung cho nhiều học phần/lớp.

main vẫn là nhánh triển khai chính. Trước mỗi đợt sửa runtime/backend đã tạo nhánh backup theo thỏa thuận với người dùng.

V12.6.1 — Cố định và rút ngẫu nhiên

Đã bổ sung loại rút đề thứ tư:

Quy tắc UX đã chốt:

Dữ liệu câu cố định được lưu trong:

exams.question_blueprint.fixed_question_ids

Không dùng mô hình slot Câu 1/Câu 2 nữa.

V12.6.2 — Ownership theo ngân hàng câu hỏi

Phát hiện lớp mới dùng chung ngân hàng Giải tích 1 có thể nhìn thấy Chương · Mục · CLO nhưng các module cũ vẫn lọc theo subject_id.

Đã bổ sung compatibility bridge:

js/core/question-bank-ownership.js

Nguyên tắc kiến trúc:

Chương · CLO · Câu hỏi thuộc Question Bank.
Bài kiểm tra · lượt làm · kết quả thuộc Subject/Học phần.

Các truy vấn legacy trên chapters, clos, questions dùng subject_id của học phần hiện tại được chuyển sang question_bank_id khi học phần có ngân hàng dùng chung.

V12.6.3 — Sửa foreign key khi ghi câu hỏi

Khi lưu câu Gemini ở lớp mới, PostgreSQL báo lỗi foreign key trên bảng questions.

Nguyên nhân xác định:

Migration đã thêm:

supabase/migrations/v12.6.3-question-bank-legacy-subject.sql

Giải pháp:

Sau khi chạy migration cần kiểm tra marker:

V12.6.3_OK

V12.6.4 — Assessment dùng question_bank_id

Sau V12.6.3, tạo bài kiểm tra vẫn bị backend từ chối với thông báo:

Pool bài trực tuyến chỉ được dùng câu đã duyệt từ Ngân hàng luyện tập - kiểm tra

Nguyên nhân nằm trong RPC replace_exam_design() của Assessment V12.2: backend còn điều kiện legacy

q.subject_id = exam.subject_id

Điều kiện này sai khi nhiều học phần dùng chung một Question Bank.

Migration mới:

supabase/migrations/assessment-v12.6.4-question-bank-scope.sql

Đã sửa:

Sau khi chạy migration cần có marker:

ASSESSMENT_V12.6.4_OK

V12.6.5 — Tối ưu màn hình sinh viên làm bài

Đã chỉnh lớp giao diện css/exams/student-attempt.css sau khi kiểm tra thực tế trên desktop:

Đã rà cơ chế giữ màn hình khi chuyển tab trình duyệt:

Backup trước thay đổi:

backup-before-student-attempt-ux-v12-6-5-20260907

Backup quan trọng

Các backup gần nhất cần giữ:

Quy ước làm việc đã chốt

Việc cần kiểm tra tiếp

Sau khi chạy migration V12.6.3 và V12.6.4 trên Supabase:

  1. lớp mới dùng ngân hàng Giải tích 1 thêm câu thủ công;
  2. lớp mới lưu câu Gemini;
  3. import Excel vào ngân hàng dùng chung;
  4. tạo bài kiểm tra common_fixed;
  5. tạo bài student_fixed;
  6. tạo bài attempt_random;
  7. tạo bài mixed_fixed_random;
  8. tạo đề cuối kỳ từ secure bank;
  9. sinh lượt làm sinh viên và kiểm tra snapshot câu;
  10. kiểm tra CLO/GPA vẫn gắn đúng học phần hiện tại;
  11. smoke màn hình sinh viên V12.6.5 trên desktop/mobile và thử chuyển tab trình duyệt trong lúc đang làm bài.

Nếu các kịch bản trên đều ổn thì có thể coi V12.6.x đạt mốc ổn định đầu tiên cho Question Bank dùng chung.