Thay vì mỗi tuần giao bài thủ công, giáo viên đặt lịch một lần: hệ thống tự giao các bài của một chương trình cho cả lớp theo tuần, đúng thứ, đúng giờ, kèm hạn nộp. Đây là "automatic assignment v2" của Sprint 106.
Phiên bản
1.1
Ngày
14/08/2026
Owner
Tùng (Product)
Trạng thái
Đang chạy (production)
📈 Số liệu production (15/08/2026)397 lịch đã tạo345 đang hoạt động14.807 bài đã xếp lịch
Thay vì mỗi tuần giao bài thủ công, giáo viên đặt lịch một lần: hệ thống tự giao các bài của một chương trình cho cả lớp theo tuần, đúng thứ, đúng giờ, kèm hạn nộp. Đây là "automatic assignment v2" của Sprint 106.
GV đặt lịch 1 lần cho cả học kỳ
HS nhận bài đều đặn đúng nhịp học
Quản lý tập trung khi giao nhiều bài nhiều lớp
2Người dùng & user stories
Vai trò
User story
Ưu tiên
Giáo viên
Đặt lịch giao bài hàng tuần cho lớp theo một chương trình.
P0
Giáo viên
Xem lớp chạy tới bài nào, ai đã nộp; dừng/đổi lịch khi cần.
P0
Chủ trường
Chuẩn hoá tiến độ dạy giữa các lớp cùng giáo trình.
P1
3Phạm vi & phase
Phase
Nội dung
Trạng thái
Phase 1
Đặt lịch tuần + bảng theo dõi + dừng/sửa lịch
Done
Phase 2
Onboarding Giao bài tự động (banner 3 bước) — Sprint 107
Done
Phase 3
Quản lý giao bài tập trung đa lớp trên 1 màn (backlog 106)
Đề xuất
4Luồng sản phẩm
Tab Giao bài tự động trong lớp — banner + bộ chọn chương trình
Vào lớp → tab Giao bài tự động → chọn chương trình → đặt thứ/giờ/hạn nộp → Tạo lịch
Hệ thống tự giao mỗi tuần → GV theo dõi bảng bài học
Hết học kỳ → Dừng giao bài (confirm 2 bước)
5Spec UI — cho Designer
Form đặt lịch: chip thứ trong tuần, TimePicker giờ giao, select hạn nộp (N ngày/không hạn), bảng checkpoint select-all theo unit
Dòng tổng kết "Bài cuối cùng sẽ được giao: …" trước khi xác nhận
Toàn bộ theo design system FLYER Teacher: antd 6 + Tailwind, màu chủ đạo tím #955DCB (primary), chữ #212B36, phụ #637381, viền #EEF0F2, bo góc 8–16px, font Public Sans.
Song ngữ VI/EN qua next-translate; mọi trạng thái lọc/tab persist trên URL để share được link.
6Business rules
Rule
Định nghĩa
Một lớp một lịch active
Lớp có lịch đang chạy không hiện bộ chọn chương trình
Sửa lịch
Giữ nguyên scheduleId, không tạo lịch trùng
Nguồn bài
Theo đúng thứ tự bài trong chương trình, bắt đầu từ bài được chọn
7Data & API — cho Developer
REST v3: GET/DELETE /v3/teacher/classes/{classId}/active-schedule; tạo/sửa lịch v3; invalidate query sau thao tác