Skip to content

PRD-001 · REQ: Learner: trải nghiệm, overview, UI/UX ​

Một mảnh của danh mục REQ PRD-001, gồm REQ-LRN, REQ-VIS, REQ-UX. Sổ chung chỉ CHÈN: thêm REQ bằng Edit vào đúng bảng của nhóm, không ghi cả file. Luật viết REQ, nghĩa của cột Priority và Status nằm ở trang mục lục; §6, §7 ở độ phủ.

REQ-LRN — Learner Experience (app: learn) ​

IDYêu cầuƯu tiênNguồnSDDQGStatus
REQ-LRN-01Learner biết chính xác mình đang ở đâu (mastery + confidence, không nhầm "chưa học" với "chưa đủ evidence")MSRC-006 JTBD1SDD-002 §2QG-005✔
REQ-LRN-02Next best action hằng ngày (cockpit), kèm lý doMSRC-006 JTBD2, FEAT-007SDD-002 §10QG-005✔
REQ-LRN-03Học đúng độ khó (difficulty controller)MSRC-006 JTBD3SDD-002 §11QG-005✔
REQ-LRN-04Giải cứu khi mắc kẹt: tìm nguyên nhân, scaffold, quay lại prerequisiteMSRC-006 JTBD4SDD-002 §11QG-005✔
REQ-LRN-05Thấy tiến độ tới goal (readiness %, critical gaps + uncertainty)MSRC-006 JTBD5, SRC-032SDD-002 §17, SDD-008 §5QG-005✔
REQ-LRN-06Một hành trình liên tục xuyên school (không học lại từ đầu)MSRC-006 JTBD6SDD-007 §5QG-005✔
REQ-LRN-07Chứng minh năng lực bằng evidence; dừng đúng lúc (stopping criteria)MSRC-006 JTBD7, SRC-011SDD-002 §12QG-005✔
REQ-LRN-08Onboarding khảo sát mục tiêu — không ép mọi learner khai mục tiêu thi chuyênMFEAT-005, RISK-009SDD-002 §4QG-002✔
REQ-LRN-09Learner xem danh sách school, enroll thêm và chuyển đổi giữa nhiều school (active school trong Context)MSRC-024WF-01 §1, SDD-002 §3QG-005✔
REQ-LRN-12Nemo tự sửa thông tin của mình (họ tên, ngày sinh, lớp, trường, tỉnh) từ menu avatar → ProfileMSRC-027, CC-APP-01WF-01QG-008✔
REQ-LRN-11Điều hướng: trang gốc hiển thị mọi school; "Vào xem" trước → School Home (mục tiêu chung + mục tiêu con) → "Bắt đầu học"/"Vào học"; logo → về gốc; avatar góc phải → Settings/Profile/LogoutMSRC-024, SRC-027, SRC-086, SRC-088WF-01QG-007✔
REQ-LRN-10Turtle: nhiều cách học; learner chọn thẳng một bài để học (browse node/lab theo area → luyện với feedback tức thì per câu)MSRC-024SDD-010, SDD-004 §5QG-005✔
REQ-LRN-13Nemo khai tự nhiên ("con sắp thi học kỳ", "em sợ hình") → AI interpret (gateway, confirm trước khi ghi) → Context Event / Goal entry; TÙY CHỌN, cấm form 20 fields, degradation → form tối giảnMSRC-032SDD-002 §5b, WF-15QG-005/010✔
REQ-LRN-15Khởi động 1 câu trước luyện tập: "Con thấy phần này thế nào?" — 4 mức bằng tiếng người (chưa học / học rồi mà quên / nhớ khá rõ / chắc lắm rồi), TÙY CHỌN, thành evidence self-report (.50) vào Evidence Registry; sau bài so calibration tự-đánh-giá vs thực tế bằng lời. Không hỏi "đoán đúng mấy trên N câu" và "chỗ khó nhất" — SRC-066MSRC-046, SRC-066, SRC-140SDD-002 §5, §18QG-005✔
REQ-LRN-14URL theo page (shareable deep links): mỗi màn chính của mọi portal có URL riêng — learn (/{school}/hoc…), coral (/{school}/{subject}/{tab}[/{id}]), marlins (/child/:id/…), dolphin (/learner/:id, /doi-ngu…). Copy URL gửi được cho người khác, back/forward + F5 hoạt động. Bắt buộc History API, không dùng hash (hash không tới server nên không phân quyền/đo lường theo trang được, và một số công cụ chat cắt mất phần sau #); đổi slug thì giữ redirect mềm cho link đã chia sẻMSRC-036, SRC-161, SRC-451SDD-001 §4QG-007✔
REQ-LRN-16Đường đi của Unit ở Phòng Lab (kiểu Duolingo): mỗi Unit là một dãy Experience, mỗi ô chỉ một hình đại diện + 2-3 chữ; 3 Assessment Experience ở đầu/giữa/cuối, ô đầu là "Học vượt" chỉ có 1 bong bóng (sai một câu là trượt, làm lại từ đầu, không được vượt unit), và tối thiểu 6 Learning Experience (thiếu thì bù bằng vòng luyện tập trên chính bài của unit). 3 màu trạng thái: chưa làm (xám) - đã xong (xanh) - cần làm ngay (coral). Điều hướng chỉ mở 1 Learning Package / 1 module / 1 unit tại một thời điểmMSRC-102SDD-010 §9QG-005✔
REQ-LRN-18Con xem được Learning Plan mới nhất ở trang riêng /plan, xem lại các phiên bản trước, mỗi bản kèm "đổi gì so với bản trước · vì sao · do đâu"; con khai thêm thông tin (ốm, bận, quỹ thời gian…) để kế hoạch tính lại ngayMSRC-107SDD-007 §6bQG-005✔
REQ-LRN-19Hải đăng (Lighthouse) — một mảng gom ba thứ nói về đường dài: Student Portrait (ĐÍCH) · Lộ trình dài hạn (ĐƯỜNG) · Kế hoạch học (BƯỚC ĐI). Trang hub /lighthouse giới thiệu từng phần (là gì · vào đó làm gì) trước khi vào; ba trang con giữ URL riêng. Có ở cả learn (Nemo) và Marlins (bố mẹ)MSRC-113, SRC-223SDD-015 §2cQG-005✔
REQ-LRN-20Hình học phải nhiều hình, và hình vẽ bằng thuật toán: mọi hình minh hoạ là SVG sinh từ tham số, kéo được (đổi số đo → hình đổi theo); cấm file ảnh bitmap (JPEG/PNG) trong nội dung học. Tham số lưu ở item_figures, engine dựng hình ở clientMSRC-114SDD-010 §11QG-006✔
REQ-LRN-21Mở dần theo mức khai báo: trang gốc gom mọi nơi vào một lưới (school + Whale + Orca, không nhãn nhóm); school mở dần theo số bước learner đã khai trong Lighthouse (hồ sơ · phản hồi Portrait · bản của riêng con · quỹ thời gian · mục tiêu), school đầu luôn mở và school đã enroll không bị khoá lại. Nút Lighthouse nằm trên navbarMSRC-120SDD-015 §2cQG-005✔
REQ-LRN-17Sai thì làm lại — nhưng ở CUỐI hàng, không phải ngay tại chỗ: câu trả lời sai được chèn xuống cuối danh sách câu phải làm (10 câu → sai 1 thành 11 → sai nữa thành 12); learner xem đáp án + giải thích rồi đi tiếp, lát nữa gặp lại. Mỗi lần sai vẫn mất một bong bóng, hết bong bóng thì làm lại cả Experience. Chỉ lần trả lời đầu của mỗi câu được ghi làm evidence (lượt gặp lại chấm ở client) để bài đo không bị đẩy hết về 100%MSRC-103, SRC-115SDD-010 §9, SDD-002 §5QG-005✔
REQ-LRN-22Một cửa vào duy nhất: bỏ Compass khỏi menu; Dashboard gánh cả hai việc, hàng chờ đề xuất nằm trên đầu trang (đúng 1 việc lớn có nút + 2 việc nhỏ có nhãn lý do), bản đồ để learner tự chọn nằm ngay dưới. Không có nút "để sau" trong hàng chờMSRC-384SDD-021 §1-2QG-002✔
REQ-LRN-23Ba bậc hiện ra: mỗi thẻ Unit hiện ba bậc can_do (Đang hình thành · Đạt · Vững) bằng ba chấm nhỏ, không chữ; chữ giải thích chỉ nằm trong popover dấu hỏi. Vào Module nào cũng được nhưng vào ở bậc "Đạt"; bậc "Vững" chỉ mở khi đã có bằng chứng ở bậc "Đạt"MSRC-384SDD-021 §6QG-007✔
REQ-LRN-24Diagnosis Report ở URL riêng /{school}/report/{subject}, mở lại được bất cứ lúc nào: không có điểm số, tối đa 5 mục "con đã vững" và đúng 1 mục "bắt đầu từ đây" bấm được vào họcMSRC-384SDD-021 §4QG-002✔
REQ-LRN-25Hé cửa, không khoá: learner chọn Unit sâu hơn bằng chứng hiện có thì vẫn vào được; sai 3 câu thì hệ gọi tên một bài tiên quyết cụ thể và mở được ngay, luôn kèm nút "con cứ học tiếp ở đây". Mỗi Module hiện một dòng "phần này thường học ở lớp N, con đang có bằng chứng ở mức lớp M"MSRC-384SDD-021 §5QG-005✔
REQ-LRN-26Học đến đâu là xong: đo bằng SỐ UNIT, không bằng phút. Một phiên thật trên production ghi 82 câu trong 1.241 phút (tab bỏ quên) so với 77 câu trong 19 phút, nên phút không đo được gì. Cường độ khai trong hồ sơ: nhẹ 1-3 · vừa 4-7 · cao 8-20 unit/ngày; tuần tính 5 ngày có học trong 7MSRC-419SDD-021QG-005✔
REQ-LRN-27"Còn cách đích bao xa" chỉ hiện ở trang Kế hoạch, cố ý không đưa lên màn hình hằng ngày, để đích dài hạn không đè lên việc hôm naySSRC-419SDD-021QG-007✔
REQ-LRN-28Dashboard tách hai kênh, cấm trộn vào một số: mức vững (mastery) đo trên phần ĐÃ đo, độ phủ đo trên toàn bộ bài. Gộp lại thành một trung bình khiến learner học 4/36 bài rất chắc vẫn hiện ra như đang kémMSRC-175, SRC-233, SRC-235, SRC-269, SRC-298SDD-021QG-005✔
REQ-LRN-29Trang Học là một lộ trình Package → Module → Unit mở dần theo thứ tự, không phải một cái phòng chứa đồ; cây mở sẵn cả, không gấp lại theo Module. Tên trang từng là "Đường học" (SRC-188) và SRC-284 đổi lại thành "Học" — luật còn hiệu lực là tên phải nói đúng thứ bên trong, xem REQ-UX-30SSRC-188, SRC-263, SRC-284, SRC-061SDD-021QG-007✔
REQ-LRN-30Học vượt chạy với số câu SẴN CÓ, không chờ kho đủ. Luật "sai tối đa một câu" vốn là TỈ LỆ chứ không phải con số cố định, nên màn hình nói đúng số câu thật của lượt này thay vì cứng "9/10"MSRC-377SDD-010 §12QG-005✔
REQ-LRN-31Dashboard chỉ trả lời MỘT câu: phần đã học thì vững tới đâu. Chấm trên thang 10 lấy một số lẻ; bỏ hẳn "phần trăm đã đo" khỏi màn hình chính vì trộn hai câu hỏi vào một con số làm cả hai mất nghĩaMSRC-178, SRC-391, SRC-392, SRC-393SDD-021QG-007✔
REQ-LRN-32Đúng MỘT cách hiển thị Experience trên toàn hệ, theo lối Duolingo: ô nhỏ, đường đi uốn nhẹ, tên Unit làm dải phân cách, ô chưa mở và ô đang làm vẽ khác nhau rõ. Bấm ô thì mở popover trước, bấm nút trong popover mới vào bàiMSRC-256, SRC-257, SRC-267, SRC-268, SRC-271, SRC-274, SRC-282, SRC-292, SRC-294, SRC-296, SRC-324, SRC-328, SRC-358, SRC-344SDD-021QG-007✔
REQ-LRN-33Mỗi Unit có tối thiểu 6 ExperienceMSRC-259SDD-010 §9QG-006✔
REQ-LRN-34Thang tự tin còn ba mức, không đánh số; lý do chọn đáp án còn ba lựa chọn xếp trên một dòng, bỏ ô nhập tự do. Ít lựa chọn hơn thì learner trả lời thật hơn, và dữ liệu gom được cũng dùng đượcSSRC-262, SRC-264, SRC-265SDD-002QG-005✔
REQ-LRN-35Unit chia thành PHẦN theo mức vững, không theo Package. Ngăn cách các Unit bằng đường kẻ thay vì dòng chữ "Unit này chưa mở"; Unit quá nhiều ô thì bớt; có màn danh sách các Phần để nhảy nhanhMSRC-272, SRC-278, SRC-280, SRC-283SDD-021QG-007✔
REQ-LRN-36Học vượt CHỈ tồn tại ở cấp Unit, không có ở cấp Package hay Module; báo "Học vượt chưa qua" rút còn một câuSSRC-276, SRC-280SDD-010 §12QG-005✔
REQ-LRN-37Phần nào cũng phải có bài, và số lượng tương đồng nhau. Một Phần rỗng hoặc lệch hẳn về số bài làm learner hiểu nhầm là mình đã bỏ sót gì đóMSRC-289SDD-010 §9QG-006✔
REQ-LRN-38Hạn mức câu hỏi siêu nhận thức: mỗi Experience hỏi tối đa 2 lần "con tự tin tới mức nào" và tối đa 2 lần "vì sao con chọn đáp án đó". Hỏi mãi thì learner bấm cho xong, và dữ liệu thu được thành vô nghĩaMSRC-333SDD-002QG-005✔
REQ-LRN-39Learner đi được tới MỌI Phần, không Phần nào bị khoá; việc khoá chỉ tồn tại ở cấp Unit. Khoá cả một Phần thì learner không nhìn thấy đường mình sẽ điMSRC-375SDD-021QG-005✔
REQ-LRN-40Unit nào cũng cho học vượt. Unit thiếu bài học vượt hoặc thiếu câu thì bổ sung nội dung, không phải tắt tính năng ở unit đóMSRC-376SDD-010 §12QG-006✔
REQ-LRN-41Lab phải ghi bằng chứng năng lực. Learner nghịch xong một lab mà hồ sơ im lặng thì lab nằm ngoài hệ đo. Bằng chứng từ lab mang độ tin cậy THẤP hơn bài đo (0,45) và tính một lần mỗi lab mỗi ngày: lab là chỗ thử, không phải chỗ chấm. Lab không gắn được vào Unit nào thì đó là tín hiệu THIẾU NỘI DUNG trong cây năng lực, không phải lý do để bỏ quaMSRC-478, SRC-479SDD-010 §5QG-006✔
REQ-LRN-42Lối tắt cho learner đã biết phải tự giải thích được khi nào dùng, và không được đứng ở vị trí bước 1. Tên gọi phải nói ĐIỀU KIỆN dùng ("Con biết rồi?") chứ không mô tả kết quả ("Học vượt"); nó nằm ngoài chuỗi đường đi, kèm một câu nói rõ khi nào nên thử. Cơ chế giữ nguyên: chỉ mở ở Unit chưa học, một lượt, phải đúng tất cảSSRC-485SDD-010 §12QG-006✔
REQ-LRN-43Màn kết quả có đúng MỘT nút chính, và nút đó không đổi theo kết quả. "Tiếp tục" luôn là việc chính, kể cả khi còn câu sai; rà soát bài làm và làm lại là lựa chọn, nằm ở link nhỏ. Không hiện chi tiết cơ chế (số lượt bị xếp lại) cạnh điểm số, vì đứng đó nó đọc thành lời chê kèm điểmMSRC-357, SRC-488SDD-021 §6QG-007✔
REQ-LRN-44Dấu lược giữa từ không phải dấu mở ngoặc. Luật tách đề đọc hiểu chỉ được cắt khi dấu mở và dấu đóng cùng một cặp và đều không nằm giữa từ, nếu không mọi câu tiếng Anh có 's, n't, 're đều bị cắt vỡ ("Don't" thành lead "Don" và đoạn trích "t judge a book…")MSRC-156, SRC-487SDD-021 §6QG-007✔
REQ-LRN-45Cổng readiness trước khi vào Unit, có ngân sách và không khoá cửa. Điểm vào cửa tính từ tiên quyết trực tiếp; chưa đủ bằng chứng thì mời ĐO chứ không mời học lại. Thang sửa dừng ở bốn phanh chạy cùng lúc — sàn lớp min(G−2, trung vị bằng chứng −1), tối đa 2 hop, 3 Unit, ~30 phút — và mỗi lần cắt phải nói ra còn bao nhiêu. Nghỉ 7 ngày mỗi (learner, Unit); thử 2 lần tới sàn không qua thì gắn cờ cho người, không dẫn đi vòng nữa. can_enter_anyway LUÔN true (REQ-LRN-25 không đổi)MSRC-618SDD-021 §14QG-002/005✔
REQ-LRN-46Con tự kể về mình + ảnh thật: năm ô văn xuôi (sở thích · quá khứ học tập · tự thấy mạnh ở đâu · tự thấy yếu ở đâu · điều muốn thầy cô biết), ô nào cũng được bỏ trống, ghi gộp từng phần (ô không gửi thì giữ nguyên, gửi chuỗi rỗng thì xoá); learner tải ảnh thật của chính mình (JPG/PNG/WebP, ≤ 5 MB) vào đúng cột learners.photo_media_id đang dùng cho ảnh gia đình, ảnh luôn là media nội bộ (Q-146) và phục vụ qua lối gác bằng quan hệ để chính em ấy và bố mẹ xem được — /v1/media/{id} chỉ mở cho vai nội bộ nên không dùng được ở đây; mentor đọc tất cả ở tab About, không cắt chữMSRC-739SDD-036 §1-§5QG-004/008✔
REQ-LRN-47Chương trình AI Teen ở /ai-teen: sau đăng nhập; ghi danh/rút từng course (AI Teen 1..3), server chỉ nhận id course có trong chương trình và kiểm quyền với learner; mỗi course 6-8 unit, mỗi unit 3-5 key concept, lessons và MỘT Performance Task; task khai skill CCS + level TRƯỚC rubric; khu Skills của course SUY RA từ các task, lấy level cao nhấtMSRC-1005SDD-043 §1-§4QG-008✔
REQ-LRN-48Tick từng bước của lesson AI Teen (SRC-1283): lesson > Activity > Bước; learner tự tick bước không có máy kiểm, bước có cổng đọc chỉ xong khi qua cổng và bước câu kiểm chỉ xong khi đúng (server từ chối tick hai loại ấy); lưu server theo learner, khoá theo slot lesson + id Activity + id Bước; chỉ chính learner đã ghi danh được ghi, phụ huynh và mentor đọc; card Activity và NavBar hiện số + tick; không vào Evidence RegistryMSRC-1283, SRC-1286SDD-043 §14, §15QG-005/008✅ đã dựng 07.10.2026 (SDD-043 §15.8)
REQ-LRN-49Chứng chỉ khoá học của learner ở /certificates (SRC-1331): mục "Chứng chỉ" trong menu tài khoản; chia "Đã có" và "Sắp có" (xong n/m bài, còn bài nào, tiêu chí); chứng chỉ đã có mở ở /certificates/{courseId}, in được, có tên learner, tên khoá, ngày cấp DD.MM.YYYY, mã xác thực. Chứng chỉ SUY RA từ dữ liệu hoàn thành có thật, không bảng riêng: khoá curriculum = xong chặng Tổng hợp của mọi bài; AI Teen = tick xong mọi bước tự làm của mọi lesson. Chương trình chưa có tiêu chí hoàn thành (IELTS, SPEAK, lớp theo lịch) không cấp. Chỉ chính learner, gia đình và vai nội bộ có audit đọc đượcMSRC-1331SDD-004 §20QG-005/008✅ đã dựng 10.10.2026
REQ-LRN-50Tra cứu chứng chỉ công khai theo mã (SRC-1333): learn.nemo12.com/verify (ô nhập) và /verify/{mã}, không cần đăng nhập, tiếng Việt; hiện hợp lệ hay không, và khi hợp lệ chỉ hiện tên gọi + chữ đầu của họ (ví dụ "Đắc N."), tên khoá, ngày cấp DD.MM.YYYY. Không lộ id, email, họ tên đầy đủ, trường. Mã lạ hay hết hiệu lực trả cùng một câu trả lời; có trần lượt tra theo IP. Chứng chỉ in được ghi kèm đường tra cứuMSRC-1333SDD-004 §20fQG-005/008✅ đã dựng 10.10.2026

REQ-VIS — Overview & Views (SRC-012) ​

IDYêu cầuƯu tiênNguồnSDDQGStatus
REQ-VIS-01Multi-dimensional view: by school/subject/area/goal/skill/readiness/workload…MSRC-012 §2SDD-008 §2QG-005✔
REQ-VIS-02Drill-down Nemo12 → School → Subject → Area → Unit → Skill → Evidence, và zoom-outMSRC-012 §3SDD-008 §3QG-005✔
REQ-VIS-03Goal View: readiness ước tính + critical/important/nice-to-have gapsMSRC-012 §5SDD-008 §5QG-005✔
REQ-VIS-04Node states đầy đủ (Not Assessed / Unknown / Learning / Needs Review / Mastered / Advanced / Blocked / At Risk)MSRC-012 §4SDD-008 §4QG-005✔
REQ-VIS-05Trajectory view (Past → Current → Expected) + Workload view + cảnh báo overloadMSRC-012 §6–7SDD-008 §6QG-005✔
REQ-VIS-06Trace ngược "vì sao hôm nay học cái này": Task → Gap → Area → GoalMSRC-012 §8SDD-008 §7QG-005✔
REQ-VIS-07Màn hình tiến độ theo từng school (thời gian học ước tính, số kỹ năng đã học/đã vững, hoạt động gần đây) — cho cả Nemo và MarlinMSRC-019SDD-008 §6, §2QG-005/007✔
REQ-VIS-08Màn hình toàn cảnh: môn → area (Số học/Đại số/Hình học…) → node; đi từ môn tới node trong ≤3 lần bấm; mỗi cấp hiện mastery + trạng thái theo bộ trạng thái REQ-VIS-04, mã hóa bằng màu kèm chữ (không dùng màu làm tín hiệu duy nhất — WCAG)MSRC-019, SRC-012 §2-3SDD-008 §2-4QG-005/007✔
REQ-VIS-16Learner ở đâu: đếm theo quốc gia, rồi theo tỉnh/thành/bang trong từng quốc gia. Quốc gia lấy từ mã Cloudflare gắn sẵn vào mọi request lúc đăng nhập, nên không hỏi learner thêm câu nào; learner tự khai thì lời khai thắng vĩnh viễn phép đoán. Tỉnh/thành đổi từ chữ tự gõ sang mã có bí danh, kèm cả tên tỉnh CŨ trước lượt sáp nhập 2025. Nhóm chưa rõ là một dòng có số, không phải một chỗ trống: đó là con số nói cho người đọc biết bảng này đáng tin tới đâuMSRC-989SDD-042QG-008✔
REQ-VIS-09Màu tô trong hình minh hoạ phải giữ đủ tương phản với nền. Một đợt chuyển sang tông đơn sắc từng đẩy 19 màu tô lên gần trắng (~#F2F2F2): hình vẫn vẽ đủ nét nhưng vô hình trên nền trắng, và báo cáo về là "ảnh không hiển thị"MSRC-182, SRC-323DS-001QG-007✔
REQ-VIS-10Hình minh hoạ phải tự nó giải thích được ý, không cần đọc chú thích mới hiểu. Phản hồi "xem hình này không hiểu gì cả" là tiêu chí loại bỏ, không phải góp ý về thẩm mỹ. Icon vẽ phẳng, bỏ nét nối thừa giữa các ôMSRC-228, SRC-275DS-001QG-007✔
REQ-VIS-11Ba tầng thẻ đều phải nói được "học xong thì con làm được gì", và nói rõ đang nói về tầng nào. Package thêm Ý xuyên suốt (hạt nhân sư phạm, khác vai với lời hứa i-will). Nguồn chữ là Pearl, không soạn lại trong app. Cấm để ô rỗng: thiếu chữ thì bổ sung nội dung ở Pearl chứ không giấu ô điMSRC-463, SRC-473, SRC-483, SRC-484SDD-008 §8QG-007✔
REQ-VIS-12Ô mức vững chỉ được tô ĐẶC khi đã chứng minh: tối thiểu hai lượt đo và độ chắc từ 0,65. Chưa đủ thì vẽ viền rỗng ở MỌI tầng (Unit, Module, Package, thanh tổng), vì tô đặc sau một lượt đúng là hệ tự khen thay learner và learner sẽ dừng lại đúng lúc chưa nên dừngMSRC-459, SRC-489SDD-008 §9QG-007✔
REQ-VIS-13Nhật ký học theo ngày: mỗi ngày liệt kê chính xác từng Unit, đếm theo Unit chứ không theo lượt làm bài, tách rõ Unit mới khỏi Unit ôn lại, cửa sổ xem 7 · 30 · 60 ngày. "Mới" tính trên toàn bộ lịch sử, không tính trong cửa sổ đang xem, nếu không thu cửa sổ lại là hệ khen saiMSRC-221, SRC-481, SRC-486SDD-008 §10QG-007✔
REQ-VIS-14Bàn mô phỏng lộ trình: chỉnh tham số ngay trên trang (lớp, ngày/tuần, phút/ngày, số lượt để một Unit thành vững, số tháng nhìn trước) và tính tại chỗ ra độ phủ theo Module, tỉ lệ hổng, kế hoạch từng ngày. Phạm vi lớp là tham số bắt buộc: cây trải lớp 1 tới 12 nên "phủ bao nhiêu phần" vô nghĩa nếu chưa chốt phạm vi. Unit đã vững vẫn ăn giờ ôn theo chu kỳ của engine retention, để con số hổng sinh ra từ một đánh đổi có thật chứ không từ một phép chiaSSRC-482SDD-008 §11QG-007✔
REQ-VIS-15Phòng khám chỗ hổng: mỗi chỗ hổng phải kèm ĐƠN THUỐC đọc được, gồm các Learning Experience cụ thể, tối thiểu một lab, một bài đo lại và khoảng cách ngày lấy từ engine retention. Trang này soi xem hệ đang khuyên gì, nên lời khuyên vô lý là dấu hiệu dữ liệu hoặc luật saiSSRC-476SDD-008 §12QG-005✔

REQ-UX — Learner-first UI/UX (SRC-042) ​

Phân tích, audit hiện trạng và trọng số của từng yêu cầu: PRD-002. Thứ tự áp dụng: learn → marlins → dolphin.

IDYêu cầuƯu tiênNguồnSDDQGStatus
REQ-UX-01Mỗi màn đúng một primary action (coral) kèm lý do; màn "Hôm nay" trả lời "làm gì tiếp" trong ≤5 giâyMSRC-042, PRD-002 W10DS-001 §5-6QG-007✔
REQ-UX-02Tiến bộ nhìn thấy được: mastery/readiness dùng progress component chung (dày, nhãn ngữ cảnh, animation tăng tiến)MSRC-042, PRD-002 W9DS-001 §5QG-007✔
REQ-UX-03Không phán xét: đỏ chỉ cho lỗi hệ thống; trạng thái học tập thấp dùng amber/neutral + lời khích lệ; empty state luôn có bước tiếp theoMSRC-042, PRD-002 W9, SRC-311, SRC-318DS-001 §2,§6QG-007✔
REQ-UX-04Ngưỡng đọc đo được: cỡ chữ nhỏ nhất 14px, body 16px, line-height ≥1.5, contrast ≥ WCAG AA (4.5:1 chữ thường, 3:1 chữ lớn), type scale 5 bậcMSRC-042, SRC-013DS-001 §3QG-007✔
REQ-UX-053 portal chỉ dùng token + lớp n12-* của @nemo12/design-system; cấm style ad-hoc/copy component giữa appMSRC-042, RISK-012, SRC-158, SRC-351DS-001 §1,§7QG-007✔
REQ-UX-06Trạng thái hệ thống hiển thị: skeleton khi tải, busy state trên nút, error có retry; motion 150–200ms + reduced-motionMSRC-042, PRD-002 W7, SRC-325DS-001 §4-5QG-007✔
REQ-UX-07Mobile-first: touch target ≥44px cho hành động chính, layout 1 cột co giãnMSRC-042, Q-029DS-001 §4QG-007✔
REQ-UX-08Mỗi school một "thế giới": hero gradient từ accent, icon lớn, accent xuyên suốt — nhưng theme vẫn là lớp mỏng, không fork componentMSRC-042, PRD-002 W6DS-001 §6QG-007✔
REQ-UX-09Giảm tải nhận thức: mỗi màn ≤3 khối thông tin chính, chi tiết mở dầnSSRC-042, PRD-002 W6DS-001 §6QG-007✔
REQ-UX-10Portal người lớn (marlins/dolphin/coral): cùng ngôn ngữ hình ảnh, mật độ thông tin cao hơn, số liệu kèm giải thíchMSRC-042, PRD-002 W5DS-001 §6QG-007✔
REQ-UX-11Full-width + HOME = hub: mọi trang trải hết chiều ngang; trang home (Root, tab "Hôm nay") chỉ chứa 1 hành động chính + cards điều hướng — không dữ liệu chi tiết; School Home read-only theo cụm, KHÔNG form nhập liệuMSRC-048DS-001 §5bQG-007✔
REQ-UX-13Chưa có dữ liệu ≠ điểm 0: ô/vòng tròn của phần chưa đo mang dấu "?" và mờ hẳn (opacity ~0.4) — rỗng hoàn toàn thì đọc ra "hỏng", còn hiện 0 thì nói sai (0 là một khẳng định đã đo và kém). Mờ để phần đã học vẫn là thứ bắt mắt trướcMSRC-205DS-001 §5bQG-007✔
REQ-UX-12Text budget & hình > chữ: card = icon + tên + ≤1 dòng phụ; cấm đoạn văn trên card/list; metadata ≤3 mẩu/dòng; ưu tiên icon/cờ/progress thay câu mô tả; cả card bấm được thay vì link "Chi tiết" riêngMSRC-048DS-001 §5bQG-007✔
REQ-UX-14Toàn cảnh môn học mở dần ba tầng: Package (một hàng thẻ) → Module (một hàng vòng tròn nối bằng mũi tên chỉ thứ tự học) → Unit (mỗi Unit một thẻ chứa các chấm Experience). Mỗi lúc chỉ một Package và một Module mở; điểm cả môn thu về một dòng mảnh, không còn dải băng chiếm đầu trangMSRC-207DS-001 §5bQG-007✔
REQ-UX-15Thời gian hiển thị theo giờ Việt Nam (GMT+7), có ghi rõ múi giờ: cấm in UTC trần và cấm cắt chuỗi ISO bằng .slice(0,10) — cắt chuỗi UTC làm mọi việc sau 17:00 giờ Việt Nam nhảy sang ngày hôm sauMSRC-242SDD-001 §4QG-007✔
REQ-UX-16Mốc thời gian tương đối đi kèm mốc tuyệt đối: mỗi dòng trong sổ chạy ghi "x phút trước / x giờ y phút trước / x ngày trước"; mốc dưới 24 giờ tô đỏ để chuyện vừa xảy ra nổi lên khỏi danh sáchSSRC-336SDD-001 §4QG-007✔
REQ-UX-17Trang Mục tiêu không có nhãn "tạm tính" và không có nút Xác nhận: learner sửa ngày bằng cách bấm thẳng vào ngày, nên một nút xác nhận riêng chỉ thêm việc mà không đổi được gì. Ngày dạng DD.MM.YYYY kèm "còn x tuần"; dưới 7 ngày thì "còn x ngày y giờ"SSRC-224SDD-021QG-007✔
REQ-UX-18Nhãn tiếng Việt cho mọi cổng learner-facing, gồm cụm lọc của Orca. Đảo lại quyết định cũ SRC-080 ("đồng bộ với Whale") vì lý do gốc của nó không còn sau khi WhaleHub Việt hoá ở SRC-134SSRC-145, SRC-424SDD-016 §6QG-007✔
REQ-UX-19Màn luyện tập bỏ mọi con số đếm không giúp learner quyết định gì: nhãn "Câu 4/10", dòng "bài này hiện có N câu". Chữ mô tả mức tự tin nằm THẲNG trong tag cùng con số, không tách thành chú giải riêngSSRC-082, SRC-147, SRC-156, SRC-152SDD-021QG-007✔
REQ-UX-20Thứ tự phương án phải xáo thật theo từng lượt, kể cả ở câu hỏi phụ "vì sao con chọn đáp án này"; hai lựa chọn xếp một dòng cho đỡ dàiSSRC-151, SRC-162, SRC-440SDD-010 §12QG-006✔
REQ-UX-21Trang chủ school là hub, không phải trang nội dung: bỏ các cụm gom nhóm thừa và các thẻ lối tắt trùng vai, giữ đúng những lối vào learner thật sự dùngSSRC-179, SRC-186, SRC-187SDD-021QG-007✔
REQ-UX-22Công tắc VI/EN đổi được qua lại và dùng chung ở mọi nơi có chức năng đổi ngôn ngữ, gồm cả tên mục trong menu avatarSSRC-146, SRC-229, SRC-078SDD-001 §4QG-007✔
REQ-UX-23Màn kết quả không nhắc "đúng ngay lần đầu", và ngọc trai hiện đúng MỘT viên kèm con số thay vì rải nhiều viênSSRC-260, SRC-266SDD-021QG-007✔
REQ-UX-24Thẻ trong Dashboard dùng chung một kiểu viền: viền xám mảnh, thẻ đang chọn đổi sang viền đen nhưng KHÔNG dày hơn — đổi độ dày làm bố cục nhảy khi chọn qua lại. Module cũng nằm trong card như Package và UnitSSRC-239, SRC-240, SRC-303DS-001QG-007✔
REQ-UX-25Dashboard có công tắc mở dần: mặc định chỉ hiện Package kèm điểm, bấm mới mở chi tiết Module. Vòng Coverage có màu, số ở giữa kèm ký tự %, và mỗi lúc chỉ bật được một trong hai kênhSSRC-184, SRC-241, SRC-243, SRC-304SDD-021QG-007✔
REQ-UX-26School Home có lưới chọn môn kiểu DuolingoSSRC-261SDD-011QG-007✔
REQ-UX-27Công thức toán hiển thị bằng thư viện dựng công thức, không phải chuỗi ký tự thô: 3/(x - 2) viết dạng chữ thì learner đọc ra một phép chia phẳng, không phải một phân thứcMSRC-244DS-001QG-007✔
REQ-UX-28Mỗi màn hình đáng quay lại có URL riêng: từng Phần, Lịch thi học kỳ, Toàn cảnh, và từng Experience. Mở Experience thì URL đổi, thoát ra thì về đúng trang Học — để F5 không mất chỗ đứng và gửi link cho nhau đượcMSRC-281, SRC-285, SRC-286, SRC-287SDD-021QG-007✔
REQ-UX-29Đang làm bài thì trên màn hình chỉ còn nội dung Experience: bỏ header, bỏ cột phụ, chạy full-width. Mọi trang khác trong cùng một môn thì dùng chung cột tráiMSRC-277, SRC-279, SRC-284, SRC-288, SRC-291SDD-021QG-007✔
REQ-UX-30Tên trang nói đúng thứ bên trong: "Đường học" → "Học", "Điểm thi học kỳ" → "Lịch thi học kỳ", bỏ tiêu đề lặp lại tên môn và các dòng đếm số lab. Bỏ hẳn tính năng "Tiến độ" vì nó trùng vai với Toàn cảnhSSRC-176, SRC-177, SRC-225, SRC-227, SRC-284, SRC-286SDD-021QG-007✔
REQ-UX-31Dấu hỏi trên thẻ Unit mở đủ ba lớp thông tin: Unit này là gì · nằm trong Module nào · câu hỏi cốt lõi kiểu IB của nóSSRC-290SDD-021 §5QG-007✔
REQ-UX-32Nhận diện mỗi school có đúng MỘT nguồn: mascot, tagline, màu, cụm giới thiệu, favicon định nghĩa một lần rồi mọi app dùng chung, lấy learn làm chuẩn. Mascot Marlins là cá hề vì Marlin là bố của NemoMSRC-091, SRC-096DS-001QG-007✔
REQ-UX-33Hai kênh vẽ theo đúng bản chất đại lượng của chúng: Mastery là dải liên tục (thanh dày, ngắn bằng một nửa bề ngang cũ), Coverage là vòng có dấu mốc mục tiêu để learner thấy luôn còn cách bao xaSSRC-236, SRC-237DS-001QG-007✔
REQ-UX-34Màn làm bài ẩn header và chân trang toàn cục từ MỘT nguồn sự thật (đặt trên body), nút thoát ở góc trên trái cùng hàng với thanh tiến độ — không để mỗi trang tự ẩn theo cách riêng rồi lệch nhauMSRC-258, SRC-279SDD-021QG-007✔
REQ-UX-35Vỏ điều hướng ba cột dùng chung cho mọi trang trong một môn: cột trái mang logo school (không phải logo Nemo12) cùng các mục Học · Hồ sơ · Toàn cảnh · Labs; cột giữa là nội dung; "Tất cả các phần" mở ngay trong cột giữa chứ không phủ toàn màn hìnhMSRC-300, SRC-305, SRC-306, SRC-307, SRC-308SDD-021QG-007✔
REQ-UX-36Hệ luôn biết learner đang đứng ở Phần nào, nên không cần link "tới phần đang đứng"; khi làm bài thì bỏ tên tiếng Anh cạnh tên Unit, thông tin Package → Module → Unit lùi vào dấu "i" ở góc dưới phảiSSRC-312, SRC-331, SRC-332SDD-021QG-007✔
REQ-UX-37Phản hồi khi trả lời đúng phải nhanh và tinh tế: bong bóng vỡ kèm âm thanh nhỏ, bong bóng nổi từ đáy lên mặt nước; chọn đáp án xong thì nút đổi thành "KIỂM TRA"; bấm dấu nhân giữa bài thì hỏi lại trước khi thoátSSRC-357, SRC-366, SRC-367, SRC-368, SRC-369DS-001QG-007✔
REQ-UX-38Màu và tương phản lấy từ Design System, không chỉnh lẻ từng màn: ô tô sáng không được che chữ, hình không nằm trên tấm nền trắng trơ, popover không đè lên nhau. Mỗi Unit một nền khác nhau theo lối "càng xuống sâu càng đậm"MSRC-349, SRC-350, SRC-353, SRC-355, SRC-360, SRC-378DS-001QG-007✔
REQ-UX-39Cuối mỗi câu hỏi có lối báo lỗi nội dung: bấm "Báo cáo" mở danh sách lý do có sẵn, để learner nói được "câu này sai" ngay tại chỗ thay vì bỏ quaSSRC-365SDD-013QG-006✔