AI·CLO APMaths — Ghi nhớ kỹ thuật và quyết định thiết kế

Đây là file ghi nhớ ưu tiên khi tiếp tục phát triển. Đọc cùng ARCHITECTURE-AI-CLO.md trước khi sửa runtime/backend.

Cập nhật gần nhất: 16/09/2026 — nhận diện APMaths + ngân hàng Tự luận + tối ưu chuyển tab.

1. Nguyên tắc phát triển

2. Nhận diện APMaths

3. Public surface

Cấu trúc đã chốt:

apmaths.github.io/
├─ ai-clo/
├─ tools/
├─ courses/
└─ ...

4. Render và hiệu năng

Global render() đang có nhiều lớp legacy wrap. Quy tắc bắt buộc:

Ngân hàng câu hỏi:

5. Ngân hàng câu hỏi

Hai phạm vi

Kiểm tra trùng phải theo phạm vi ngân hàng đang xem: practice so với practice/both; secure so với secure/both; không đối chiếu practice-only với secure-only qua hai khu khác nhau.

Trắc nghiệm

Giữ logic/tables hiện hữu; các thay đổi Tự luận không được làm hỏng MCQ.

Tự luận

Mô hình:

Câu tự luận
  → Ý/phần (tùy chọn)
  → Rubric
  → Điểm + một CLO chính cho mỗi tiêu chí

6. AI cho câu hỏi

AI tạo tự luận

AI nhân bản tự luận

Phiên AI

essay_ai_sessions ghi lịch sử tạo/nhân bản để xem lại trong UI.

7. Assessment

8. Kết quả CLO

9. AI Chat

10. Backend / dữ liệu

11. Quy tắc trước khi commit

  1. Tìm owner của UI/behavior.
  2. Rà dependency trước khi xóa file.
  3. Không đổi business logic khi chỉ rebrand CSS.
  4. Bump query version nếu asset thay đổi để tránh cache trình duyệt.
  5. Sau thay đổi lớn: rà link cũ, console, Supabase function và mobile.
  6. Không tuyên bố đã test browser nếu chỉ mới kiểm tra code/static/backend.