HƯỚNG DẪN CẬP NHẬT AI-CLO PTITHCM — V11

Ngày chốt checkpoint: 02/09/2026.

1. Mục tiêu V11

V11 là đợt tái cấu trúc và tối ưu hiệu năng frontend, ưu tiên ba nguyên tắc:

  1. Giữ nguyên tính đúng đắn của nghiệp vụ và khả năng nâng cấp về sau.
  2. Giảm mã legacy/versioned, chuyển file sang tên semantic theo chức năng.
  3. Cải thiện cảm nhận người dùng khi mở hệ thống và chuyển giữa các mục sidebar.

V11 không yêu cầu migration Supabase mới, không yêu cầu deploy Edge Function mới và không thay đổi cấu hình/model Gemini trong đợt tối ưu này.

2. Checkpoint ổn định hiện tại

Đây là mốc nên dùng làm điểm đối chiếu khi tiếp tục sửa giao diện hoặc hiệu năng.

3. Tái cấu trúc CSS/JS

Các file versioned chính đã được đổi/gộp sang tên semantic theo chức năng. Một số file tiêu biểu:

css/exams/final-workflow.css
css/questions/bank.css
css/courses/class-list.css
css/ui/final-layer.css
css/students/profile.css

js/exams/final-workflow.js
js/exams/attempt-autosave.js
js/questions/bank.js
js/ui/final-layer.js
js/students/profile.js

Các tên compatibility nội bộ như AICLO_V108, AICLO_V1053, v95*, v96*, v102* có thể vẫn tồn tại để bảo đảm tương thích. Không tự ý xóa chỉ vì tên còn mang số phiên bản.

4. Tối ưu tải ban đầu

XLSX và JSZip

PR #56 chuyển XLSX và JSZip từ tải eager sang lazy-load.

MathJax

PR #57 chuyển MathJax sang lazy-load.

5. Cải thiện UX chuyển sidebar

PR #58 thêm js/ui/view-transition.js.

Mục tiêu là giảm hiện tượng khi bấm sidebar, toàn bộ nội dung bị thay bằng dòng “Đang tải dữ liệu…” rồi mới hiện trang mới.

Cơ chế hiện tại:

Module này được tách riêng để có thể chỉnh hoặc rollback độc lập mà không sửa app.js lõi.

6. Các lỗi/điểm đã lưu ý trong V11

7. Kiểm thử sau V11

Sau khi mở web trên Chrome desktop và mobile, ưu tiên kiểm tra:

8. Việc có thể làm tiếp

Chỉ tiếp tục sau khi có phản hồi sử dụng thực tế. Thứ tự ưu tiên đề xuất:

  1. Sửa các màn hình cụ thể còn loading/nháy mạnh.
  2. Cache theo view cho dữ liệu ít đổi như chương, chủ đề, CLO nếu cần.
  3. Audit duplicate CSS giữa các file semantic.
  4. Audit JS theo vai trò để cân nhắc lazy-load module — chỉ làm nếu lợi ích rõ và không làm kiến trúc khó bảo trì.

9. Supabase

Không cần thao tác Supabase để áp dụng checkpoint V11 này.

Các Edge Function vẫn theo nguyên tắc self-contained và được deploy độc lập trên Supabase Dashboard khi có thay đổi nghiệp vụ AI trong tương lai.