Đối chiếu 20 PRD với read-replica production (PostgreSQL 17.9, user readonly_analyst_full có pg_read_all_data — đọc được toàn bộ 284 bảng schema public, so với v1 chỉ 38 bảng). Chạy ngày 20/08/2026.
pg_read_all_data nên 5 tính năng trước đây "◻︎ không kiểm được bằng DB" giờ có bằng chứng thật. Phát hiện lớn nhất: Thách đấu là feature top usage với 87k trận/30 ngày (v1 nhìn không thấy).
| Tính năng | Bảng production | Bằng chứng (số liệu thật · 30 ngày gần nhất) | Kết luận |
|---|---|---|---|
| Giao bài tập | assign_tests | 396.148 all-time · 31.536/30d (~1.050/ngày) | Xác nhận usage mạnh nhất phía teacher |
| Giao bài tự động | class_schedules · class_schedule_lessons | 408 lịch (356 active · +113/30d) · 15.687 bài xếp | Adoption thấp ~1% so với giao tay |
| Quản lý lớp | classes · class_students | 122.856 lớp (+9.208/30d) · 987k lượt HS trong lớp | Xác nhận |
| Học sinh | learner_profiles · users | 1,68M hồ sơ · 480.602 tài khoản · 51.619 learners active/30d | Xác nhận |
| Chấm điểm AI | speaking_question_attempts + user_attempts | 7,31M speaking attempts · 47.693 nói + 32.683 viết /30d | Xác nhận top-3 usage |
| Trợ Giảng AI / Bingo talk | ai_conversation_sessions | 965.377 phiên all-time · 63.059/30d (TOPIC 29,9k · CHAT 16,6k · CALL 16,4k) | Xác nhận 3 mode cân bằng |
| Khám phá đề & Tạo đề | check_points | 42.704 đề (+2.523/30d) · 943k lượt exam+practice/30d | Xác nhận |
| Kiểm tra đầu vào | user_attempts(placement_test) | 11.764/30d | Xác nhận |
| Chương trình / Study paths | duolingo_* · user_attempts(STUDY) | 222.641 STUDY/30d | Xác nhận |
| Tài chính & Học phí | tuitions · tuition_transactions · group_invoices · vnpay_payments · wallets | 16 phiếu thu (2 PAID) · 2 tuition_tx · 10 group_invoice · 43.388 ví · 21.589 wallet_tx · 19.163 VNPay records (không có PAID theo enum hiện tại) | Adoption ≈ 0 phía học phí; VNPay + ví dùng cho gói HS |
| Thiết lập / White-label | schools · teacher_profiles · custom_domain | 40.320 trường · 21.107 GV · 703 tên miền APPROVED (214 pending · 72 rejected) | Xác nhận white-label thật sự được dùng |
| Quản lý kỳ thi v2 mới | teacher_exams · teacher_exam_sessions · teacher_exam_students | 131 kỳ thi (20/30d) · 188 sessions (31/30d) · 1.751 lượt HS · types: 67 CAMBRIDGE + 62 IELTS + 1 GENERAL + 1 MOE | Pilot feature dùng nhưng khiêm tốn, chủ yếu trung tâm lớn |
| Khen thưởng (Đá Tri Thức) v2 mới | teacher_wisdom_stone_grants · _transactions · _balances · _skills | 1.227 lần trao đá (100% trong 30d) · 4.922 viên đá phát ra · 522 HS có balance · 1.288 transactions | Mới launch — cần theo dõi retention |
| Thách đấu v2 mới | challenges · challenge_players · challenge_ranking | 1,07M challenges all-time · 87.388/30d · 1,88M lượt tham gia · 247k joins/30d | TOP USAGE — quy mô ngang chấm AI, v1 không nhìn thấy |
| Dạy Trực Tuyến v2 mới | calendar_events · calendar_event_times | 7.390 events · 2.528/30d · phân loại: 7.366 ASSIGNMENT + chỉ 24 MEETING | Adoption ≈ 0 MEETING thực; bảng chủ yếu dùng cho reminder assign_test |
| Điểm danh · Quà tặng | — | Không có bảng nào trong 284 bảng public matching (attendance / gift). Khớp trạng thái PRD: prototype localStorage, chưa có backend. | Khớp PRD |
| Thư viện của tôi | check_points (owner_id) · questions | Tồn tại field owner/school trên check_points → có backend; không đo được chia sẻ vì không có bảng share riêng | Xác nhận |
| Học sinh (batch/Excel) | learner_profiles · class_students · class_invitation_emails | 1,68M hồ sơ · flow batch/mã lớp/join email đều có bảng | Xác nhận |
calendar_events đang bị "cắm cờ đôi" cho hai mục đích khác nhau — cần phân tách.status không có giá trị PAID trong 19.163 records → cần dev xác nhận tập giá trị hợp lệ (có thể là SUCCESS, 00, …) trước khi đối chiếu tỉ lệ thanh toán.