AI-CLO PTITHCM — V12.6 Cố định và rút ngẫu nhiên
Ngày: 06/09/2026
Mục tiêu
Đơn giản hóa cách thiết kế bài kiểm tra trực tuyến:
- Với các chế độ rút ngẫu nhiên, Builder không hiển thị câu hỏi cụ thể sau khi thiết kế ma trận.
- Bổ sung chế độ riêng Cố định và rút ngẫu nhiên khi giảng viên cần một số câu chắc chắn xuất hiện, còn phần còn lại được rút ngẫu nhiên đúng ma trận.
Bốn chế độ rút câu
common_fixed— Đề chung cố định: dùng đúng bộ câu đã chốt và hiển thị đầy đủ trong Builder.student_fixed— Đề riêng theo sinh viên: mỗi sinh viên được rút một bộ riêng ở lần đầu; các lần sau của sinh viên đó dùng lại bộ này. Builder không hiển thị câu cụ thể.attempt_random— Rút lại mỗi lần làm: mỗi lượt làm rút lại câu theo ma trận. Builder không hiển thị câu cụ thể.mixed_fixed_random— Cố định và rút ngẫu nhiên: các câu cố định luôn xuất hiện; phần quota còn lại của từng ô ma trận được rút ngẫu nhiên cho mỗi lượt làm.
Dữ liệu
Không tạo bảng hay cột mới.
Các câu cố định được lưu tối giản tại:
exams.question_blueprint.fixed_question_ids
Mỗi câu cố định phải thuộc phạm vi Chương/Mục/CLO đang chọn và tiêu thụ đúng một chỉ tiêu của ô ma trận tương ứng.
Builder
- Random thuần chỉ hiển thị tổng số câu, mô tả cách rút và ma trận.
- Không render bộ câu mẫu cho
student_fixed/attempt_random. mixed_fixed_randomhiển thị riêng danh sách Câu cố định cùng hai thao tác:+ Chọn câu cố định✦ AI tạo câu cố định
common_fixedgiữ nguyên quy trình Rút câu hỏi → xem/đổi/tự chọn/sửa nhanh/AI → lưu.
Backend
Migration:
supabase/migrations/assessment-v12.6-mixed-fixed-random.sql
Migration mở rộng exams.question_mode và cập nhật populate_attempt_questions để:
- chèn câu cố định trước trong mode hỗn hợp;
- trừ số câu cố định khỏi quota từng ô ma trận;
- rút ngẫu nhiên phần còn lại;
- không lặp câu trong cùng lượt;
- ưu tiên câu sinh viên chưa gặp ở các lượt trước cho
attempt_randomvàmixed_fixed_random; - giữ nguyên semantics
common_fixedvàstudent_fixed.
Triển khai an toàn
V12.6 đang phát triển trên branch:
work-assessment-v12-6-mixed-random-20260906
Không merge frontend V12.6 vào main trước khi migration Supabase đã được chạy và kiểm thử đủ bốn chế độ.
main tiếp tục giữ V12.5.1 ổn định trong thời gian kiểm thử.