SDD-008 — Learner Overview & Views
Hai câu hỏi phải trả lời đồng thời: "Hôm nay learner cần làm gì?" (Daily) và "Toàn bộ hành trình đang ở đâu?" (Overview). Zoom out để hiểu hành trình. Zoom in để biết việc tiếp theo.
2. Multi-Dimensional View (REQ-VIS-01)
Không chỉ một progress bar. Các chiều: By School / Subject / Area / Grade / Goal / Skill / Knowledge / Readiness / Mastery / Confidence / Deadline / Priority / Workload. Cùng data đổi được view (Mathematics theo area 82/71/64/76% ↔ Goal thi chuyên: Ready 58% · Needs Work 27% · Critical Gaps 10% · Unknown 5%).
Thiết kế kỹ thuật: view = projection đọc từ Learner Model + Goal + Workload (SDD-007), materialize qua learner_view_snapshots cache (KV) invalidate theo events — không tính lại mỗi page load (REQ-NFR-06).
3. Drill-down (REQ-VIS-02)
Nemo12 → School → Subject → Area → Unit → Knowledge/Skill → Evidence và zoom-out ngược. Parent: Shark → Mathematics → Algebra → Factorization → skill yếu chính xác → evidence gốc.
4. Node States (REQ-VIS-04)
Not Assessed · Unknown · Learning · Needs Review · Mastered · Advanced · Blocked · At Risk + mastery, confidence, priority, trajectory, prerequisite gaps. Phân biệt rõ "chưa học" vs "chưa đủ evidence" (REQ-LRN-01).
5. Goal View (REQ-VIS-03, REQ-LRN-05, REQ-PAR-03)
Goal: IELTS 7.5 → readiness ước tính 6.8
Writing ▓▓▓▓▓▓▓░░ · Reading ▓▓▓▓▓▓▓▓▓ · Listening ▓▓▓▓▓▓▓▓░ · Speaking ▓▓▓▓▓▓░░░
Critical gaps / Important gaps / Nice-to-haveTrả lời: còn cách mục tiêu bao xa, điều gì cản nhiều nhất.
6. Time & Trajectory + Workload View (REQ-VIS-05)
Past → Current → Expected (Algebra 52%→64%→73%; readiness tăng nhanh/ổn định/giảm). Workload: Available 12h/w vs Turtle 4h + Shark 5h + Squid 2h + Octopus 1h — cảnh báo overload/imbalance (data từ Workload Model SDD-007 §8).
7. Liên kết Daily ↔ Overview (REQ-VIS-06)
Global View → Priority → This Week → Today → Next Action; trace ngược "vì sao hôm nay học cái này": Task → Skill Gap → Area → Goal (dùng recommendation reason + model version SDD-002 §15).
8. Lời hứa của từng tầng thẻ (REQ-VIS-11)
Bấm một thẻ thì popover phải trả lời "học xong thì con làm được gì", và nhãn phải nói rõ đang nói về tầng nào: Package, Module hay Unit. Ba tầng dùng chung một câu là learner mở popover Module rồi tưởng đó là lời hứa của một bài.
Thẻ Package có thêm một ô riêng: Ý xuyên suốt (strands.big_idea). Nó khác vai với i-will: i-will là lời hứa với learner, còn Ý xuyên suốt là hạt nhân sư phạm giữ mấy chục Unit bên dưới dính vào nhau thành một câu chuyện. Nhét hai thứ vào một cột thì mất một.
Nguồn chữ là Pearl, đổ về D1 bằng scripts/sync-iwill-from-pearl.mjs: strands.i_will, strands.big_idea, skill_nodes.module_i_will, skill_nodes.i_will, unit_evidence, unit_misconception.
Bài học đắt nhất của phần này (SRC-483): lỗi "bấm vào Unit không thấy i-will" sống sót qua nhiều phiên sửa vì nó KHÔNG nằm ở dữ liệu hay ở popover. Trong /overview, khối gom node chép tay từng trường, nên bốn cột i-will rụng ngay tại đó và pick(...) phía dưới luôn trả null. Truy vấn SELECT đủ, D1 có đủ chữ, popover có chỗ hiển thị, mà màn hình vẫn trống, và không có gì báo lỗi vì null là giá trị hợp lệ. Luật rút ra: mọi object trung gian giữa truy vấn và view phải sao nguyên bản ghi, không chép tay từng trường.
9. Ô đặc nghĩa là đã chứng minh (REQ-VIS-12)
MasteryBar vẽ mười ô. Ô tô đặc chỉ khi đủ hai lượt đo (attempts >= 2) và độ chắc từ 0,65. Thiếu một trong hai thì vẽ viền rỗng, và chính ô rỗng là lời mời làm thêm.
Luật chạy ở mọi tầng. Bản đầu chỉ truyền sure xuống thẻ Unit nên Module, Package và thanh tổng luôn đặc, tức đúng chỗ mắt nhìn đầu tiên thì màu vẫn nói "xong rồi". agg() trong /overview trả sure = MIN confidence và attempts = MIN số lượt của phần đã đo, lấy MIN chứ không trung bình vì một node mới chạm một lần là cả cụm chưa chắc.
10. Nhật ký học (REQ-VIS-13)
GET /v1/learners/{id}/daily?subject_id=&days= trả mỗi ngày một thẻ: từng Unit đã chạm, số lượt, mức vững hiện tại, và tách new_units khỏi review_units.
Hai luật đếm, cả hai đều để hệ khỏi tự khen:
- Đếm theo Unit, không theo lượt làm bài. Mười lượt trong một Unit là học sâu một chỗ, không phải học thêm mười chỗ.
- "Mới" nghĩa là lần đầu chạm Unit đó tính trên toàn bộ lịch sử, không phải trong cửa sổ đang xem. Tính trong cửa sổ thì learner thu về 7 ngày là các Unit cũ hiện thành "mới" (SRC-486).
Cửa sổ 7 · 30 · 60 ngày thay cho một màn diff riêng: màn diff phải suy ngược từ learner_evidence.mastery_after, cột mới có dữ liệu ở một phần nhỏ bản ghi, nên nó sẽ nói sai về quá khứ.
11. Bàn mô phỏng lộ trình (REQ-VIS-14)
GET /v1/learners/{id}/forecast?subject_id= trả bảng kiểm kê (mỗi Unit thuộc Module nào, lớp mấy, nặng bao nhiêu phút, learner đang đứng ở đâu) kèm review_interval_days lấy từ engine retention. Phép mô phỏng chạy ở client, theo từng nấc thanh trượt: kéo thanh trượt mà phải chờ mạng thì không ai kéo, và quan trọng hơn, công thức nằm cạnh kết quả nên nó bị soi chứ không núp sau một con số đẹp từ server.
Mô hình chạy theo từng ngày, nhờ vậy trả lời được luôn "mỗi ngày làm Unit nào". Unit đã vững vẫn ăn giờ ôn theo review_interval_days; bỏ lỡ hai kỳ ôn thì rơi lại hàng đợi. Đó là chỗ mô phỏng này khác một phép chia: học càng nhanh, gánh ôn càng nặng, tới lúc nào đó giờ học mới bị gánh ôn ăn hết, và "tỉ lệ hổng" sinh ra từ đúng chỗ đó.
Lớp là tham số bắt buộc. Cây năng lực trải lớp 1 tới 12, nên "phủ được bao nhiêu phần" chỉ có nghĩa sau khi chốt phạm vi.
12. Phòng khám chỗ hổng (REQ-VIS-15)
GET /v1/learners/{id}/gaps phân loại ba kiểu chỗ hổng vì cách chữa khác nhau: weak (đã đo, dưới 5/10), shaky (có đo nhưng bằng chứng mỏng), unseen (chưa đo mà lại đang chặn bài khác, rủi ro lớn nhất vì không ai biết). Mỗi chỗ hổng kèm đơn thuốc: các Lesson có kho câu, lab của Unit, bài đo lại, và khoảng cách ngày tính từ CFG.S_BASE + CFG.S_MASTERY * target của engine retention, không bịa số.
Trang này và bàn mô phỏng đang mở cho danh sách tài khoản kiểm định (isQcEmail), chặn ở server chứ không chỉ ẩn link: một con số dự báo bày cho phụ huynh rất dễ bị đọc thành lời hứa.
Trace
REQ-VIS-01..06 → §2–§7 · REQ-LRN-05, REQ-PAR-03 → §5 · REQ-VIS-11 → §8 · REQ-VIS-12 → §9 · REQ-VIS-13 → §10 · REQ-VIS-14 → §11 · REQ-VIS-15 → §12.