━━━━━━━━ 4 VAI TRÒ ━━━━━━━━
• Học viên: mua gói học, đặt lịch, vào lớp học, nộp bài, xem tiến trình
• Phụ huynh: quản lý nhiều con, mua học & đặt lịch thay con, chat với gia sư
• Gia sư: khai lịch rảnh theo tuần + ngày nghỉ, duyệt/buổi học, chấm bài,
đánh giá 6 kỹ năng, tài liệu buổi học
• Quản trị: duyệt thanh toán, quản lý gói học, quản lý người dùng (khoá/mở khoá),
báo cáo doanh thu & buổi học
━━━━━━━━ TÍNH NĂNG NỔI BẬT ━━━━━━━━
✓ Đặt lịch thông minh: slot trống tính theo múi giờ gia sư (xử lý DST), chống
đặt trùng ở mức DATABASE (PostgreSQL exclusion constraint — không thể double-book)
✓ Ví credit: 1 buổi = 1 credit, trừ tự động khi đặt, hoàn credit khi huỷ trước 12h,
sổ cái append-only, hết hạn tự động + thông báo trước 3 ngày
✓ Thanh toán: VNPay online (chữ ký HMAC-SHA512, verify số tiền + merchant, IPN +
redirect idempotent) và chuyển khoản thủ công (upload chứng từ, admin duyệt)
✓ Lớp học 1-1 online: Jitsi Meet self-hosted, JWT riêng từng buổi, gia sư là
moderator, phòng mở trước giờ học 15 phút
✓ Nhắc lịch tự động: email/notification trước 24h và 1h (background job)
✓ Chat realtime 1-1 (WebSocket + PostgreSQL LISTEN/NOTIFY, scale đa server),
thông báo realtime trên mọi trang
✓ Bài tập: giao → nộp (kèm file) → chấm điểm 0-100 + nhận xét
✓ Đánh giá 6 kỹ năng sau mỗi buổi (Speaking/Listening/Reading/Writing/Grammar/
Vocabulary) → radar chart + timeline tiến bộ theo tuần (ECharts)
✓ Tài liệu học tập theo buổi, download có phân quyền
✓ Đa ngôn ngữ Việt/Anh 100% (279 key i18n), đăng nhập Google OAuth +
mật khẩu Argon2id, refresh token xoay vòng chống replay
✓ Trang cài đặt hồ sơ: tên, múi giờ, ngôn ngữ, đổi mật khẩu
XEM THÊM ==> Hướng dẫn cài đặt chi tiết
HƯỚNG DẪN CÀI ĐẶT
✓ Hướng dẫn cài đặt chi tiết tiếng Việt (docs/INSTALL.md): môi trường, biến
cấu hình, Google OAuth, VNPay sandbox, Jitsi, deploy Kubernetes, xử lý sự cố
✓ Code đúng mô tả, đầy đủ migration + script seed dữ liệu mẫu
Nguồn: Topcode.vn