Appearance
Theo dõi & báo cáo
Training Manager không trực tiếp điểm danh (đó là việc của trainer trong Trainer Panel), nhưng cần theo dõi tổng thể tỉ lệ điểm danh, tiến độ học, học viên at-risk, và xuất báo cáo cho lãnh đạo / khách hàng B2B.
Một dòng tóm tắt
Báo cáo điểm danh = (Có mặt + Muộn) / sessions held — tự động tính bởi AttendanceReportService. Tiến độ khoá học = % activity đã hoàn thành. Cả 2 hiển thị trong tab Học viên + tab Khoá học của Batch + có nút export.
Cấp báo cáo
| Cấp | Phạm vi | Trang |
|---|---|---|
| Mỗi buổi | 1 BatchSession × tất cả học viên | Trang chi tiết buổi → tab Điểm danh |
| Mỗi học viên trong lớp | 1 (Batch × User) | Trang Batch → tab Học viên → cột rate + click học viên |
| Mỗi khoá trong lớp | 1 (Batch × Course) | Trang Batch → tab Khoá học → click khoá |
| Tổng lớp | 1 Batch | Trang Batch → header stats + tab attendance summary |
| Cross-batch | Tất cả lớp | Dashboard widget + xuất report |
Tỉ lệ điểm danh — quy tắc tính
Công thức
attendance_rate = (count(Present) + count(Late)) / count(sessions held × students)| Trạng thái | Tử số | Mẫu số |
|---|---|---|
| Present (Có mặt) | ✅ +1 | ✅ +1 |
| Late (Muộn) | ✅ +1 | ✅ +1 |
| Absent (Vắng) | ❌ | ✅ +1 |
| Excused (Có phép) | ❌ | ✅ +1 |
Quy tắc thêm
- Chỉ buổi
livehoặccompletedđược tính (scheduled/cancelledbỏ qua). - Học viên không có bản ghi attendance cho buổi đã held → tự động tính
Absent. - Excused vẫn ở mẫu số — học viên có phép vẫn không cộng tỉ lệ (đây là lựa chọn thiết kế: Excused = không bị flag at-risk nhưng không được "tặng tỉ lệ").
Excused != Late
- Late = đến học muộn → vẫn cộng có mặt.
- Excused = không đến nhưng có lý do chính đáng → không cộng, nhưng cũng không trừ điểm gì ngoài việc kéo tỉ lệ xuống.
Tỉ lệ học viên Excused 100% buổi sẽ là 0% — đây là điểm cần cân nhắc khi báo cáo.
Tab Học viên — bảng tổng quan
Trong trang chi tiết Batch → tab Học viên:
Bảng hiển thị (per học viên):
| Cột | Nguồn | Mã màu |
|---|---|---|
| Họ tên | users.first_name + last_name | — |
users.email | — | |
| Tỉ lệ điểm danh | AttendanceReportService::userRate() | ≥85% xanh, 70–84% vàng, <70% đỏ |
| (mỗi khoá Program) | enrollments.progress | ≥100% xanh, 50–99% vàng, <50% đỏ |
Sort theo bất kỳ cột nào để phát hiện vấn đề:
- Sort tỉ lệ điểm danh ↑ → at-risk lên đầu.
- Sort tiến độ khoá X ↓ → top performer nhóm khoá X.
Filter:
- Theo trạng thái enrollment.
- Theo khoảng ngày enroll.
Học viên cần chú ý (At-risk)
Hệ thống tự sinh danh sách học viên at-risk theo 2 ngưỡng:
| Lý do | Threshold mặc định |
|---|---|
Tỉ lệ điểm danh thấp (below_threshold) | < 70% |
Vắng liên tiếp (consecutive_absences) | ≥ 3 buổi |
Hiển thị ở:
- Trainer Panel → widget "Học viên cần lưu ý" (cross-batch của trainer).
- Báo cáo lớp → tab "At-risk" (per-batch).
Bạn (Training Manager) xem cross-batch qua dashboard widget hoặc query report.
Tab Khoá học — tiến độ chi tiết
Trong trang Batch → tab Khoá học:
Mỗi khoá hiển thị:
- Tên khoá + mã + danh mục
- Tỉ lệ học viên hoàn thành (
completed / total) - Tiến độ trung bình (% across học viên)
- Số học viên đã enroll
Click khoá → mở Tiến độ khoá học (matrix detail):
Matrix Học viên × Activity
Như Trainer Panel, nhưng bạn xem được mọi lớp (không bị giới hạn ownership).
| Trạng thái cell | Hiển thị |
|---|---|
| Chưa bắt đầu | Trống |
| Đang làm | Icon đồng hồ vàng |
| Hoàn thành (có điểm) | Badge điểm score/max — xanh nếu pass |
| Hoàn thành (Assignment) | Icon kiểu submission |
| Hoàn thành (không chấm) | Tick xanh |
Click cell → mở timeline drill-down (lịch sử attempts, submissions, comments).
Phân biệt với Trainer
Trainer xem matrix để comment / can thiệp cá nhân. Bạn xem matrix để theo dõi tổng thể + audit + báo cáo. Cùng UI nhưng mục đích khác.
Báo cáo cấp Batch (Header stats)
Header trang Batch hiển thị widget thống kê tóm tắt:
- Tỉ lệ điểm danh tổng (
overall_rate). - Số buổi đã diễn ra / tổng số buổi.
- Số lượt có mặt trên tổng lượt dự kiến.
- Số học viên cần chú ý — đếm at-risk (rate < 70% hoặc vắng liên tiếp ≥ 3).
Xu hướng theo tuần
(Nếu UI có) chart bar/line theo tuần — gom buổi theo Monday-of-week:
- Trục X: tuần.
- Trục Y: tỉ lệ điểm danh trung bình của tuần đó.
→ Nhận diện trend: lớp đang ổn định / tăng / giảm dần qua các tuần.
Phân loại điểm danh
Pie chart phân loại:
- Có mặt (Present)
- Muộn (Late)
- Vắng (Absent)
- Có phép (Excused)
Xuất báo cáo
Xuất danh sách học viên + tiến độ
Tab Học viên → header Xuất danh sách:
- Định dạng CSV / XLSX.
- Cột: tên, email, phone, ngày tham gia, tiến độ từng khoá trong Program (per-row).
- Tải về.
Xuất báo cáo điểm danh
Header Batch → Xuất báo cáo điểm danh (AttendanceExportService):
- CSV / XLSX.
- Bảng pivot: học viên × buổi → cell = trạng thái (Present/Late/Absent/Excused).
- Hữu ích cho B2B billing tháng (gửi cho khách hàng).
Xuất per-buổi
Trang chi tiết buổi → Xuất điểm danh (nếu UI có) — bảng học viên × trạng thái buổi đó.
Format Excel chuyên nghiệp
File XLSX có:
- Header in đậm.
- Filter ở mỗi cột.
- Conditional formatting (màu cho trạng thái).
- Sheet tổng kết phía sau.
→ Có thể gửi thẳng cho khách hàng B2B mà không cần làm lại.
Báo cáo cross-batch (cấp tổ chức)
Dashboard widget
Sidebar → Dashboard (/admin):
Các widget cho Training Manager:
- Tổng quan người dùng — tổng user, mới đăng ký kỳ này.
- Biểu đồ người dùng mới — theo tuần.
- Tổng quan khoá học — tổng khoá + đăng ký.
- Biểu đồ ghi danh mới — theo thời gian.
- Biểu đồ hoạt động đã hoàn thành — số activity hoàn thành.
- Biểu đồ thời gian học — tổng thời gian học toàn tổ chức.
Tuỳ biến bố cục: Cài đặt → Bố cục dashboard (kéo thả widget).
Báo cáo aggregate
Hiện không có "report builder" trong UI — Training Manager cần report custom:
- Doanh thu cohort → đề nghị Sales/Finance trích.
- Tỉ lệ retention sau cohort → DB query qua Tenant Admin.
- So sánh hiệu quả các Program → export rồi pivot Excel.
Đề xuất Tenant Admin xây report builder nếu nhu cầu thường xuyên.
Cảnh báo lớp tự động
Thay vì phải mở từng lớp mỗi sáng, hệ thống có thể tự báo khi một lớp có dấu hiệu xấu. Máy quét chạy 07:30 hằng ngày và sinh ba loại sự kiện cảnh báo:
| Sự kiện | Khi nào | Ghi chú |
|---|---|---|
| Chuyên cần lớp tụt dưới ngưỡng | Tỉ lệ chuyên cần của lớp dưới ngưỡng (mặc định 70%) | Không báo lại mỗi sáng cho cùng một lớp — chỉ báo lại sau 7 ngày, hoặc ngay khi tình hình xấu đi rõ rệt |
| Học viên vắng liên tiếp nhiều buổi | Một học viên vắng liên tiếp từ 3 buổi trở lên (mặc định) | Mỗi học viên là một cảnh báo riêng; có thể gửi thẳng cho giảng viên phụ trách lớp |
| Lớp quá hạn chưa đóng | Lớp còn Đang hoạt động sau ngày kết thúc dự kiến + 3 ngày ân hạn (mặc định) | Chừng nào chưa đóng lớp, học viên vẫn nhận email đốc thúc học tập — xem Vòng đời lớp |
Cảnh báo chỉ được gửi khi đã có luật
Ba sự kiện trên chỉ là nguồn. Muốn nhận, quản trị phải tạo Luật cảnh báo cho sự kiện tương ứng và chọn Đích nhận (email theo vai trò, Slack, Mattermost, webhook…) ở mục Cài đặt → Cảnh báo vận hành của trang quản trị. Với cảnh báo vắng liên tiếp, luật có thể bật gửi riêng cho người phụ trách (giảng viên của lớp). Nhờ Tenant Admin cấu hình nếu bạn không có quyền vào mục đó.
Quan hệ với các module khác
Với Trainer Panel
- Trainer tạo dữ liệu điểm danh + comment.
- Bạn xem dữ liệu + báo cáo.
- Nếu trainer quên điểm danh → bạn nhắc qua nhật ký lớp hoặc kênh ngoài.
Với Notifications
- Email tự động gửi cho học viên
at-risk(cấu hình trong Tenant Admin):- Cảnh báo khi tỉ lệ < 70%.
- Reminder nếu vắng buổi tiếp theo.
- Bạn nhận báo cáo tóm tắt hàng tuần (nếu Tenant Admin bật) qua email.
Với Gamification
- Học viên đến đủ buổi → cộng XP streak.
- Báo cáo "top streak attendance" qua leaderboard (Tenant Admin scope).
Với Subscription
- Học viên có sub active → đếm attendance liên kết với gói.
- Sub hết hạn giữa cohort → enrollment auto huỷ → học viên rời lớp tự động (đôi khi bất ngờ — báo trước nếu có thể).
Best practices
Theo dõi định kỳ
- Hàng ngày — kiểm tra dashboard, đặc biệt số at-risk mới.
- Hàng tuần — review tab Học viên của mỗi Batch active. Sort theo rate ↑.
- Mỗi cuối tháng — export báo cáo gửi lãnh đạo / khách hàng.
- Mỗi cuối cohort — tạo retrospective report (tỉ lệ pass, cohort feedback).
Khi gặp at-risk learner
- Báo trainer của lớp (qua nhật ký + @mention).
- Trainer can thiệp 1-1 (call, email).
- Nếu cần can thiệp curriculum:
- Catch-up plan — trainer áp.
- Activity Override — trainer áp.
- Chuyển lớp — bạn (Training Manager) thực hiện nếu lớp khác phù hợp hơn.
- Nếu fail completely → ghi nhận, escalate Tenant Admin / khách hàng.
Khi báo cáo cho B2B
- Đính kèm: file XLSX attendance + tiến độ.
- Highlight: top 3 + bottom 3 học viên.
- Insight: trend tuần (đang tăng / giảm); buổi nào có drop-off cao.
- Action item: học viên nào cần khách hàng hỗ trợ động viên.
Câu hỏi thường gặp
Tỉ lệ điểm danh hiện 0% dù lớp đã có buổi?
- Buổi vẫn ở
scheduled— chưa được trainer click "Bắt đầu" → không được tính. - Trainer chưa lưu attendance → mọi học viên = Absent → 0%.
- Refresh sau 1–2 phút (queue có delay).
Tiến độ khoá hiện 0% dù học viên đã làm bài?
- Bài đã làm nhưng chưa complete (vd: Reading nhưng chưa nộp summary, Quiz chưa pass).
- Activity bị skip / hidden không tính vào % yêu cầu.
Tôi thấy 1 học viên 100% nhưng chưa có chứng chỉ?
- Khoá chưa gắn Certificate Template.
- Job cấp chứng chỉ đang queue → đợi vài phút.
- Liên hệ Tenant Admin nếu sau 1 ngày vẫn không có.
Có thể đặt threshold at-risk khác 70% không?
- Hiện UI chưa cho tuỳ biến per-tenant. Threshold hardcode ở
AttendanceReportService::atRiskStudents($batch, threshold=70.0, consecutive=3). - Đề xuất Tenant Admin code config nếu tổ chức cần ngưỡng khác.
Báo cáo có thể tự gửi định kỳ qua email? Hiện không có cron auto-export. Cách tạm: bạn export tay + gửi qua mail tổ chức.
Học viên xem được tỉ lệ điểm danh của họ? Có — qua Learnspace, trang chi tiết Batch / hồ sơ. Họ thấy tỉ lệ + lịch sử buổi. Minh bạch giảm tranh cãi.
Báo cáo có lưu vào DB hay sinh on-the-fly? On-the-fly. Mỗi lần xem là query lại. Lớp lớn (>500 học viên × >50 buổi) có thể chậm → đề xuất Tenant Admin tối ưu cache.
Tôi cần report so sánh 2 Batch? Không có UI built-in. Cách tạm: export 2 file → Excel pivot.