Supabase 1 — Khóa học APMATHS liên kết AI-CLO hiện có

Project đích duy nhất: yhfburffwzvcayjadskr. Không chạy các migration này trên Supabase 2 hoặc AI-CLO PTITHCM.

Nguyên tắc không làm hỏng môn học

  1. subjects là nguồn môn học duy nhất của AI-CLO. Không nhân bản môn từ personal_courses.
  2. subject_members là nguồn quyết định quyền vào môn, bài kiểm tra và kết quả. Gói thương mại không tự sửa bảng này.
  3. personal_courses.subject_id chỉ là khóa ngoại chỉ tới môn đã có; dùng trang web /courses/apmaths/ để giới thiệu và quản lý gói học, còn học tập diễn ra trong /ai-clo/app.html.
  4. Không thay đổi các bảng subjects, subject_members, profiles, questions, question_banks, exams, exam_attempts hoặc Edge Functions đang hoạt động.
  5. Không cấp quyền học cho người mua trước khi có giao dịch được xác thực phía backend; chưa tích hợp payment provider trong đợt này.

Migrations đã áp dụng ngày 12/10/2026

File (trong supabase-personal/migrations/) Nội dung
20261012155353_apmaths_personal_classes_and_offers_v1.sql Tạo 4 bảng phụ: personal_courses, personal_course_offers, personal_course_enrollments, personal_course_orders với RLS
20261012163525_apmaths_personal_link_existing_subjects_v2.sql Khóa học muốn xuất bản phải liên kết một môn có sẵn; mỗi môn tối đa một trang khóa học; cấm đổi môn sau công bố hoặc sau khi có ghi danh

Migration v2 không chèn, sửa, xóa bản ghi nào trong subjects hoặc subject_members. Chỉ bổ sung ràng buộc và trigger cho personal_courses.

Hiện trạng đối chiếu sau migration

Giao diện

Bảo mật và ghi danh

Kiểm thử và rollback

Chưa Cloudinary/media, chưa thanh toán, chưa merge PR #4, chưa thay DNS hoặc chuyển hướng đường dẫn cũ.