AI-CLO PTITHCM V12.6.2 — Shared Question Bank Ownership Fix
Mục tiêu
Sửa các module cũ vẫn truy vấn nội dung theo subject_id sau khi hệ thống đã chuyển sang mô hình ngân hàng câu hỏi dùng chung.
Nguyên tắc ownership:
- Chương, Chủ đề, CLO và Câu hỏi thuộc Ngân hàng câu hỏi (
question_bank_id). - Bài kiểm tra, lượt làm và kết quả thuộc Học phần/lớp (
subject_id). - Nhiều học phần có thể dùng chung một ngân hàng mà không sao chép dữ liệu.
Thay đổi runtime
Thêm js/core/question-bank-ownership.js và nạp ngay sau js/app.js.
Bridge chỉ xử lý các bảng nội dung legacy: chapters, clos, questions.
- Truy vấn cũ
.eq('subject_id', state.subjectId)được chuyển sangquestion_bank_idcủa học phần hiện tại. - Insert legacy vào các bảng nội dung trên được bổ sung
question_bank_idnếu còn thiếu. - Query đã dùng
question_bank_idkhông bị thay đổi. - Query theo một
subject_idkhác học phần đang mở không bị thay đổi.
topics tiếp tục được truy vấn qua chapter_id, nên không cần rewrite.
Các luồng được sửa
- Ngân hàng câu hỏi của lớp mới dùng chung ngân hàng cũ.
- Thêm câu hỏi thủ công.
- Nhập câu hỏi hàng loạt.
- Lưu câu Gemini sau duyệt.
- Tạo bài kiểm tra trực tuyến từ ngân hàng dùng chung.
- Tạo đề thi cuối kỳ từ ngân hàng dùng chung.
Supabase
Không cần migration mới cho V12.6.2 nếu database đã chạy V11.1/V11.2 question-bank migrations. Hạ tầng hiện có đã gồm question_bank_id, RLS theo ngân hàng và trigger gán mã câu.
Backup
Trước khi triển khai đã tạo branch:
backup-before-bank-ownership-v12-6-2-20260906