Nghiệm thu end-to-end như một giáo viên mới 100% (tài khoản +8412345673359, trial 7 ngày): tạo lớp → tạo 10 học sinh → xếp lớp → thiết lập thời khóa biểu → điểm danh buổi đầu → xem /vi/report/attendance → tạo khóa học → thu học phí. Screenshot chụp thật bằng script tự động, 1440×900.
Tạo lớp "Lớp Nghiệm Thu ĐD" (#CL71410, Pre A1 Starters)
→ Tạo 10 HS batch (NT HS 01-10 · 0 coin nhờ trial)
→ [vòng] Học sinh chưa xếp lớp → bulk "Chuyển học sinh" → vào lớp
→ Tab Điểm danh: gate "thiết lập thời khóa biểu" → Th5 hàng tuần, 03/09→30/11 (13 buổi)
→ Điểm danh buổi 1: bulk có mặt → HS09 Vắng, HS10 Đi trễ → Xác nhận (8·1·1)
→ Report /vi/report/attendance: 10 HS · TB 90% · 1 HS cần theo dõi [OK] realtime
→ Tạo khóa học "Khóa Starters Nghiệm Thu" 13 buổi · 1.500.000đ · Hoạt động
→ Tab Quản lý học phí: chọn 10/10 HS → "Gửi phiếu thu" → [FAIL] KHÔNG CÓ GÌ XẢY RA
2Bằng chứng từng bước
2.1 Báo cáo điểm danh — empty state (trước khi có data)
4 KPI (Tổng HS · Tỉ lệ TB · Lớp cần theo dõi · HS cần theo dõi) + banner "Điểm danh cho lớp có buổi học hôm nay" + bảng theo lớp + filter thời gian + Xuất dữ liệu. Empty state có hướng dẫn hành động rõ — tốt.
2.2 Tạo lớp
Form đủ: Loại lớp (bắt buộc) · Tên lớp · Khóa học (tùy chọn — móc sẵn sang tính năng Khóa học) · lớp online toggle · mục tiêu giờ học/tuần. Lưu ý: chọn Loại lớp xong mới lộ field "Mục tiêu" bắt buộc thứ 2 — dễ bấm Xác nhận hụt một nhịp.Lớp tạo thành công, có mã lớp #CL71410 copy được để HS join.
2.3 Tạo 10 học sinh
Form batch tối đa 30 em/lần + import Excel (.xlsx ≤2MB có file mẫu) + mật khẩu chung + panel Gói (trial → 0 coin). Đây là form tốt nhất trong flow.Modal xác nhận tính phí minh bạch: "nâng cấp các tài khoản được chọn và tính phí: 0 C"."Tạo tài khoản thành công". Nhưng để ý nền phía sau: Tổng số học sinh vẫn 0.
2.4 Finding: HS vừa tạo "biến mất" khỏi trang Học sinh
Sau khi tạo 10 HS thành công, trang Học sinh hiện "TỔNG SỐ HỌC SINH: 0" + "Thông tin tìm kiếm không tồn tại". 10 em thực ra nằm ở tab thứ 2 "Học sinh chưa xếp lớp" — nhưng GV mới không được dẫn sang đó. Cảm giác đầu tiên là "mất dữ liệu".Lối thoát đúng: tab "Học sinh chưa xếp lớp" → tick tất cả → nút "Chuyển học sinh" xuất hiện → chọn lớp → OK. Bulk hoạt động tốt, nhưng phải tự mò ra.
2.5 Thiết lập thời khóa biểu (gate của Điểm danh)
Điểm danh yêu cầu thời khóa biểu trước: chọn khoảng ngày + tick thứ trong tuần + giờ mỗi buổi. Hợp lý về mô hình (buổi học sinh ra từ lịch) nhưng là bước chặn thứ 2 giữa "muốn điểm danh" và "được điểm danh". Bug nhỏ: giờ nhập 18:00–19:30 không được nhận — buổi lưu với giờ mặc định 07:00–17:00.
2.6 Điểm danh buổi học
Ma trận 13 buổi × 10 HS với 4 trạng thái (Có mặt · Vắng · Đi trễ · Nghỉ phép) + tỉ lệ từng em + tab "Buổi học hôm nay"/"Tổng quan" + Xuất báo cáo.Điểm danh nhanh: nút bulk "tất cả có mặt" rồi chỉnh từng em; mỗi em có ô ghi chú. Modal xác nhận đếm đúng "8 có mặt · 1 vắng · 1 đi trễ" và nói rõ vẫn sửa được sau. UX tốt.
2.7 Báo cáo cập nhật realtime
Ngay sau xác nhận, /vi/report/attendance hiển thị: 10 học sinh · Tỉ lệ TB 90% · 1 học sinh cần theo dõi (HS09 vắng) + dòng lớp Nghiệm Thu trong bảng. Số liệu khớp tuyệt đối với thao tác. PASS.
2.8 Tạo khóa học
"Khóa Starters Nghiệm Thu" tạo OK: 1.500.000 VND · trạng thái Hoạt động · hỗ trợ trả 1 lần / chia nhỏ. 2 lỗi nhỏ: (1) ô search của select Cấp độ không lọc theo text gõ — gõ "Starters" nhưng Enter chọn "IELTS" (option đầu); (2) validation hiển thị tiếng Anh "Cấp độ is required" giữa UI tiếng Việt.
2.9 Blocker: Gửi phiếu thu không phản hồi
Tab Quản lý học phí: tick 10/10 HS → nút "Gửi phiếu thu" enable → bấm 3 lần → không có gì xảy ra: không modal, không chuyển trang, không toast, không lỗi console, không request HTTP lỗi. Nghi do GV chưa có Hồ sơ thanh toán/STK — nhưng hệ thống không nói gì. Silent failure = lỗi nặng nhất về UX.
2.10 Blocker: Hồ sơ thanh toán treo vô hạn
/vi/bank-account ("Hồ sơ thanh toán") — spinner quay vô hạn (>5s, không nội dung, không lỗi). GV tự do trial không thể thiết lập STK → toàn bộ phễu thu học phí bị khóa với persona này.
Nếu thiếu điều kiện (STK, hồ sơ) → hiện modal giải thích + CTA thiết lập; không bao giờ để nút enable mà chết im
2
Hồ sơ thanh toán (/vi/bank-account) spinner vô hạn với GV tự do trial
Blocker
Fix API/permission; thêm timeout + error state cho trang
3
HS mới tạo hiển thị "Tổng số 0" — nằm ở tab "chưa xếp lớp" nhưng không được dẫn
Cao
Sau tạo thành công: toast/redirect sang tab chưa xếp lớp + gợi ý "Chuyển vào lớp ngay"
4
Modal "Thêm học sinh" trong lớp chỉ có Tạo mới / Mời kết nối — không chọn từ HS sẵn có; phải vòng qua student-list → "Chuyển học sinh"
Cao
Thêm lựa chọn thứ 3 "Chọn từ danh sách học sinh của tôi" ngay trong modal của lớp
5
Giờ học nhập trong form thời khóa biểu không được lưu (nhận default 07:00–17:00)
Trung bình
Kiểm tra binding time-picker; hiển thị lại giờ đã lưu để GV thấy sai mà sửa
6
Select "Cấp độ" (form Khóa học) search không lọc — gõ "Starters" Enter ra "IELTS"
Trung bình
Bật filterOption theo label cho mọi select search
7
Validation lẫn tiếng Anh: "Cấp độ is required"
Thấp
Bổ sung i18n key cho message antd form
8
Điểm danh cần 2 gate (xếp lớp + thời khóa biểu) trước khi dùng được — CTA "Điểm danh ngay" ở report chưa nói trước điều đó
Thấp
CTA dẫn thẳng vào checklist còn thiếu ("Bạn cần: ① HS trong lớp ② thời khóa biểu")
Những gì làm tốt (giữ nguyên)
Ma trận điểm danh 4 trạng thái + bulk "tất cả có mặt" + ghi chú từng em + sửa lại được sau — đúng nhu cầu lớp thật.
Report tổng hợp realtime, số khớp tuyệt đối (90%, 1 HS cần theo dõi) + có Xuất dữ liệu.
Form tạo HS batch 30 em + Excel + modal phí minh bạch (0 C) — friction thấp.
Trial 7 ngày đủ trải nghiệm toàn flow không cần thẻ.
Kết luận nghiệm thu:Điểm danh + Báo cáo: PASS — chất lượng tốt, cho phép công bố. Thu học phí: FAIL với persona GV tự do/trial (finding #1, #2) — cần fix trước khi marketing tính năng học phí cho GV cá nhân; với trung tâm có school setup đầy đủ có thể hành xử khác (chưa kiểm chứng). Khớp với data production: tuitions toàn hệ chỉ 16 phiếu / 2 PAID — silent failure kiểu này có thể là một phần nguyên nhân adoption ≈ 0.
4Kế hoạch nghiệm thu tiếp (100% functions)
Chuỗi trang /acceptance/<slug> sẽ nghiệm thu lần lượt từng nhóm chức năng của teacher.flyer.us với cùng persona (GV 10–50 HS), mỗi trang có screenshot + findings: