Publication versioning
Course editor làm việc trên draft. Learner-facing content đọc từ publication snapshot. Đây là lý do teacher sửa bài xong chưa chắc học viên thấy ngay cho tới khi submit/approve và class dùng đúng version.
Luồng chính
Teacher edit draft
-> submit-for-approval
-> Admin/ORG_ADMIN approve
-> CoursePublicationService tạo snapshot trong course_publications
-> LearningClass chọn latest hoặc pinned publication
-> Student learning API đọc effective publication
Bảng và migration
| Migration/table | Ý nghĩa |
|---|---|
V92__course_publications_and_version_modes.sql |
Tạo course_publications, thêm version_mode cho learning class |
course_publications |
Snapshot detail + content, có publication_number |
V94__learning_classes_publication_fk.sql |
FK từ learning_classes.course_version_id sang course_publications.id |
learning_classes.version_mode |
Cách lớp dùng version: pinned hoặc latest/follow |
File nguồn cần nhớ
| File | Vai trò |
|---|---|
CoursePublicationService |
Tạo và resolve snapshot publication |
GetCoursePublicationsUseCase |
Trả timeline version kèm adoption metrics |
BulkAdoptPublicationUseCase |
Pin nhiều lớp vào một publication trong một transaction |
TeacherCoursesControllerV3 |
Endpoint publications và adopt-all |
CourseQueryControllerV3 |
Query course detail/content theo draft hoặc published snapshot |
Câu trả lời mẫu
Nếu thầy hỏi “vì sao sửa video rồi học viên chưa thấy?”, trả lời:
LMS tách draft và publication. Teacher sửa trong draft, còn học viên đọc snapshot đã publish để tránh nội dung đang soạn làm hỏng lớp đang học. Muốn học viên thấy thay đổi thì course cần được submit/approve để tạo publication mới, sau đó class follow latest hoặc được bulk adopt/pin sang publication đó.
Rủi ro cần kiểm tra khi sửa
- Không đọc draft cho học viên thường.
- Không cập nhật class nửa chừng nếu bulk adopt lỗi;
BulkAdoptPublicationUseCasechạy transaction để rollback toàn bộ. - Khi course đã
APPROVED, thêm internal video mới cần submit/approve lại trước learner smoke.