Skip to content

PRD-001 · REQ: Trường, nội dung, đề, lab, Coral ​

Một mảnh của danh mục REQ PRD-001, gồm REQ-SCH, REQ-ORC, REQ-KNW, REQ-INX, REQ-EXAM, REQ-PED, REQ-CNT, REQ-MED, REQ-LAB, REQ-ART. 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-SCH — Schools as Domain Context ​

IDYêu cầuƯu tiênNguồnSDDQGStatus
REQ-SCH-01School là domain context, không phải app/database riêng (learn.nemo12.com/turtle…)MSRC-002 §4.1SDD-001 §4QG-001✔
REQ-SCH-02Canonical skill — school chỉ thêm context (expected difficulty, exam application), không nhân bản skillMSRC-010 §5SDD-007 §5QG-004✔
REQ-SCH-10Nội dung/mục tiêu học scope theo từng school; mỗi school có môn riêng: Turtle/Shark = Toán/Anh/Văn, Squid = IELTS + SAT + AP, Octopus = GenAI (skill graph + item bank riêng cho từng môn)MSRC-028, SRC-060, SRC-041SDD-011QG-007✔
REQ-SCH-03Depth target theo goal/school (Turtle L3 vs Shark L4-L5 trên cùng skill)MSRC-011 §3-4, FEAT-038SDD-002 §12QG-005✔
REQ-SCH-04Shark: score simulator — từ readiness + kết quả luyện đề, ước tính dải điểm cho từng trường mục tiêu kèm khoảng tin cậy. Ba phần còn lại của cụm "exam & school intelligence" cũ đã có REQ riêng, không lặp lại ở đây: kho đề → REQ-EXAM-05..10, registry trường → REQ-EXAM-11, lịch thi → REQ-INT-16 (ngày thi là deadline trên goal, nguồn duy nhất)SFEAT-034..037, Q-041, Q-120——⏳
REQ-SCH-06Turtle — chẩn đoán mức cơ bản: chọn câu role canonical/variant, độ khó thấp–trung; target depth L2–L3; phạm vi neo theo lớp hiện tại lấy từ Context Model (không hỏi lại learner)MSRC-016SDD-011 §1QG-005✔
REQ-SCH-07Turtle: ngân hàng đề thi học kỳ — gộp vào REQ-EXAM-04 (2026-08-15, AS-02.1.5): hai REQ mô tả cùng một hành vi "đề học kỳ generic theo lớp/môn". Nội dung giữ nguyên tại REQ-EXAM-04MSRC-016SDD-011 §1,§3QG-006🗄️ superseded
REQ-SCH-08Shark — chẩn đoán và experience mức cao: câu role boundary/discriminator, độ khó cao; target depth L4–L5; blueprint specialized-chuyen. Phần ngân hàng đề theo từng trường nằm ở REQ-EXAM-03, không lặp ở đâyMSRC-016SDD-011 §2QG-005/006✔
REQ-SCH-09Whale = hub cơ hội học tập toàn cầu + Việt Nam (học bổng/cuộc thi/du học/trại hè…) để truyền cảm hứng cho learner & parent; public readMSRC-027SDD-011QG-006✔
REQ-SCH-05Octopus: 4F Reflection + product submission (proof-of-work) + curriculum 5 AcademiesSFEAT-045..048, Q-039, Q-121——⏳
REQ-SCH-11Squid: học + luyện tập + luyện thi IELTS, SAT và AP (SRC-081 gộp Ray vào Squid) — target band + ngày thi (exam target kind='ielts'); 4 kỹ năng L/R/W/S; Writing/Speaking chấm rubric AI; practice test generated theo format (không nhập đề thật Cambridge — bản quyền)MSRC-033SDD-011 §7QG-006/010✔
REQ-SCH-12Ray: SAT/AP thành school riêng — gộp vào REQ-SCH-11 (SRC-081, 2026-08-14): bỏ school Ray, SAT và AP nằm trong Squid; nội dung yêu cầu (target score/môn AP + đợt thi, SAT Math từ math graph, R&W từ english graph, practice generated, không đề thật College Board) giữ nguyên tại REQ-SCH-11MSRC-033, SRC-081SDD-011 §7-8QG-006🗄️ superseded
REQ-SCH-14Destination preferences: Nemo và Marlin khai quốc gia/ngành du học yêu thích riêng (không merge) → Whale cá nhân hóa: thông tin quốc gia (giáo dục/học bổng/chi phí), học bổng & trường theo destinationMSRC-043SDD-011 §9QG-006/008✔
REQ-SCH-13Whale: hub 4 khu vực, mỗi khu vực có trang riêng có URL riêng — /whale/countries, /whale/scholarships, /whale/stories, /whale/opportunities. Nemo thấy 3–5 recommendation mỗi cái kèm một câu lý do (rule-based theo lớp/school/điểm mạnh); success case lọc đúng quốc gia đang xem (không fallback theo châu lục); trang quốc gia đặt học bổng ở khối đầu tiên, rồi trường, kèm bảng xếp hạng đại học — mỗi học bổng/trường mở ra trang chi tiết riêng; Marlin xem cùng nội dung ở marlins #/explore/whaleMSRC-034, SRC-075, SRC-084, SRC-074SDD-011 §9QG-006/008✔
REQ-SCH-15Quản lý registry trường chuyên/lớp chọn trong Dolphin: thêm trường mới, sửa mọi thông tin (tên, tên ngắn, slug, tỉnh, loại chuyen/chon/thuong, cơ quan chủ quản, website, năm thành lập, giới thiệu, ảnh) và quản lý các lớp chuyên của trường. Thi hành trên target_schools + specialized_programs đã thiết kế tại SDD-014 §2 — không tạo bảng trường thứ hai, vì exams.target_school_id đã trỏ vào bảng cũMSRC-203, SRC-035SDD-020 §2-3QG-004/008✔
REQ-SCH-16Cựu học sinh tiêu biểu của từng trường: thêm/sửa người được nêu tên công khai (tên, lớp chuyên, khoá/năm tốt nghiệp, thành tích, nơi học/làm hiện tại, ảnh), nối được với hồ sơ mentor (REQ-MEN-07) khi cùng một người. Chỉ người được nêu tên công khai, không phải danh sách học sinh đang theo học (Q-136); mỗi người có cờ consent — chưa có đồng ý thì không publish đượcMSRC-203SDD-020 §4QG-004/008✔
REQ-SCH-17Thành tích & số liệu theo năm học: mỗi trường có các mốc thành tích gắn năm học (2024-2025) theo nhóm (HSG quốc gia/tỉnh · olympic quốc tế · đại học · khác) và các số liệu tuyển sinh so sánh được (chỉ tiêu, số dự thi, tỉ lệ chọi, điểm chuẩn theo lớp chuyên) — mỗi con số bắt buộc có năm học và nguồn; số thiếu để trống, cấm điền 0MSRC-203SDD-020 §5QG-004/006✔
REQ-SCH-18Trang danh sách School tách nơi HỌC khỏi nơi TRA CỨU: Whale và Orca thành cụm riêng vì chúng không phải nơi học; bấm từng school mới vào trang chi tiếtSSRC-073SDD-011QG-007✔
REQ-SCH-19Blueprint khám phá khác nhau theo môn và theo cấp học (levels: cap1/cap2/cap3), không dùng chung một bộ cho mọi mônSSRC-095, SRC-093SDD-003QG-006✔
REQ-SCH-20Trang chủ mỗi School có phần giới thiệu ba mục: dành cho ai · học ở đây thế nào · ra khỏi đây thì con có gì. Không có ba mục này thì phụ huynh không chọn được school nào hợp với conSSRC-054SDD-011QG-007✔
REQ-SCH-21Môn chưa ra mắt vẫn hiện nhưng khoá theo ngày mở: mọi tài khoản trừ tài khoản vận hành chỉ vào được môn đã mở; môn khác hiện kèm ngày sẵn sàng. Giấu hẳn thì learner không biết sắp có gì, mở toang thì vào một môn rỗngSSRC-309SDD-011QG-007✔

REQ-ORC — Orca: Competition & Challenge Hub (SRC-044) ​

Cửa sổ cạnh tranh bên ngoài: đúng sân chơi, đúng thời điểm. North Star: meaningful participations/learner.

IDYêu cầuƯu tiênNguồnSDDQGStatus
REQ-ORC-01Competition directory + editions: registry cuộc thi (organizer, domain, grade, geography, level, format, fee, prestige…) + edition theo năm (deadline/ngày thi/kết quả); phân loại domain × level × intensity 1–5; cờ verifiedMSRC-044, SRC-124SDD-016 §1QG-006✔
REQ-ORC-02Orca Home + Explore: Recommended · Upcoming · Closing Soon · Popular in Grade + search/filterMSRC-044SDD-016 §2QG-007✔
REQ-ORC-03Detail page: what/who/why, difficulty, timeline, requirements + Nemo12 AssessmentMSRC-044SDD-016 §2QG-007✔
REQ-ORC-04Fit Score 0–100 có explanation (eligibility/skill/interest/difficulty/schedule/strategic) + parent verdict 4 mức kèm reasoning; không recommend chỉ theo tuổiMSRC-044SDD-016 §3QG-005✔
REQ-ORC-05Journey states Save→…→Awarded/Skip (learner-owned) theo lifecycle Discover→ReflectionMSRC-044SDD-016 §4QG-005✔
REQ-ORC-06Results & achievements (score/ranking/medal/award/reflection, upload sau) → Evidence RegistryMSRC-044SDD-016 §4QG-005✔
REQ-ORC-07Calendar + Context: deadline/ngày thi/kết quả vào calendar + Context Event RegistryMSRC-044SDD-016 §5QG-005✔
REQ-ORC-08Admin qua Coral: verify/source/merge/archive/reputation; Orca = user experience, Coral = data opsMSRC-044SDD-016 §6QG-006/008✔
REQ-ORC-09Orca có trang chủ riêng giới thiệu Orca là gì trước khi vào phần tra cứu; logo không để dạng khối vuông đenSSRC-053SDD-016QG-007✔

REQ-KNW — Knowledge, Content & Quality (SRC-004, 005) ​

IDYêu cầuƯu tiênNguồnSDDQGStatus
REQ-KNW-01Knowledge Registry: Domain→Area→Knowledge Node/Skill, đầy đủ metadata + lifecycleMSRC-004 §2SDD-003 §2QG-006✔
REQ-KNW-02Shared Knowledge/Skill Graph (prerequisite + 7 quan hệ), dùng chung mọi schoolMSRC-004 §3SDD-003 §3QG-006✔
REQ-KNW-03Learning Package đóng gói mục tiêu dạy được (nhiều package/skill theo age, level, exam)MSRC-004 §4, SRC-127SDD-003 §4QG-006✔
REQ-KNW-04Learning Experience Registry: abstract entity + experience_type (Micro/Practice/Assessment/Lab/Project/Simulation)MSRC-005 §5-8SDD-004 §5-8QG-006✔
REQ-KNW-05Item Bank riêng, không duplicate question giữa practice/assessment/microMSRC-005 §9SDD-004 §9QG-006✔
REQ-KNW-06Storage 3 lớp: D1 metadata, R2 heavy content, KV/cache manifests; "load structure first, content on demand"MSRC-005 §4, §10SDD-004 §4, §10QG-004✔
REQ-KNW-07Quality Profile + rubric per entity; scores có reason/evidence/evaluator/rubric_versionMSRC-004 §6SDD-003 §6QG-006✔
REQ-KNW-08Quality Engine 3 lớp: deterministic checks, graph/rule reasoning, LLM evaluation theo rubricMSRC-004 §7, SRC-406SDD-003 §7QG-006✔
REQ-KNW-09Multi-evaluator + variance flag + human review cho high-stakesMSRC-004 §8SDD-003 §8QG-006✔
REQ-KNW-10Improvement Engine + candidate version lifecycle (không sửa production trực tiếp); Priority EngineMSRC-004 §10-12SDD-003 §10-12QG-006✔
REQ-KNW-11Quality Registry + dashboard (coverage, node thiếu assessment, content quá hạn review)MSRC-004 §9SDD-003 §9QG-006✔
REQ-KNW-12Versioning immutable per asset; learner session ghi experience_versionMSRC-005 §11SDD-004 §11QG-004✔
REQ-KNW-13Quality cuối cùng đối chiếu learner evidence thật (không chỉ LLM score)MSRC-004 §11SDD-003 §11QG-006✔
REQ-KNW-20Mỗi Module ≥ 3 Unit: bản đồ môn (Package → Module → Unit) không được có module một-hai unit — module lẻ loi khiến learner tưởng đã học xong cả mảng khi mới xong một bài, và làm lưới module trên Toàn cảnh trông như dữ liệu hỏng. Unit bổ sung phải đúng phạm vi module + nối tiếp sư phạm, kèm node và đủ 10 câu (REQ-KNW-17)MSRC-205, SRC-094, SRC-381, SRC-383, SRC-397, SRC-398, SRC-401, SRC-402, SRC-403, SRC-409, SRC-414, SRC-432, SRC-437, SRC-438, SRC-443SDD-004 §2QG-006🔵
REQ-KNW-14Ba môn khoa học tự nhiên (Lý · Hoá · Sinh) có cây riêng theo GDPT 2018, gồm mạch, module, unit và quan hệ tiên quyết, không mượn cây của môn khácMSRC-089SDD-004QG-006✔
REQ-KNW-16Cây curriculum của một môn chỉ có MỘT cách sắp xếp đang hiện. Cây cũ trùng vai với cây mới thì tạm ẩn chứ không xoá (mọi bằng chứng đã ghi đều trỏ vào node của nó); bật lại chỉ cần bỏ mã khỏi danh sách ẩnMSRC-299, SRC-408SDD-004QG-006✔
REQ-KNW-17Mỗi Package có 6-9 Module, mỗi Module xử lý một vấn đề riêng. Đo trước khi sửa: 42/42 package chỉ có đúng 1 module, tức "module" khi đó chỉ là một cái tên gộp, không phân loại được gìMSRC-181, SRC-192, SRC-194, SRC-196SDD-004QG-006🔵
REQ-KNW-15Thứ tự hiển thị Package/Module/Unit luôn bắt đầu bằng phần nền tảng. Bảng strands từng không có cột thứ tự nào, nên API trả về theo thứ tự SQLite quét bảng, tức thứ tự GHI VÀO — một thứ tự tình cờMSRC-191SDD-004QG-006✔
REQ-KNW-18Sàn số lượng nội dung, kiểm được bằng máy: mỗi Package ≥5 Module · mỗi Module ≥5 Unit · mỗi Unit ≥6 Experience (≥3 Learning + ≥3 Assessment) và ≥10 câu hỏi. Dưới sàn thì bài đo bị khoá, tức learner mở ra là gặp ngõ cụtMSRC-047, SRC-295, SRC-319, SRC-347SDD-010 §9QG-006🔵
REQ-KNW-19Số bài nêu ở tiêu đề phải khớp số bài đếm được bên dưới. Danh sách từng ghi 9-10 bài trong khi tiêu đề Phần ghi 4 bài; hai con số nói khác nhau thì learner tin con số nào cũng saiSSRC-313SDD-021QG-006✔

REQ-INX — Interaction & Conversation (SRC-007) ​

IDYêu cầuƯu tiênNguồnSDDQGStatus
REQ-INX-01Comment/Reply/Reaction/Mention/Annotation trên mọi object qua target_type+target_idMSRC-007SDD-005 §2-3QG-008✔
REQ-INX-02Threading (UI giới hạn 1–2 cấp)MSRC-007SDD-005 §3QG-007✔
REQ-INX-03Visibility levels: private / learner_parent / mentor_team / school / community / internal_staff — authorize ở backendMSRC-007SDD-005 §4QG-008✔
REQ-INX-04Mentions → events → Queue → Notification (in-app, email, push-ready)MSRC-007SDD-005 §5QG-009✔
REQ-INX-05Moderation K12: profanity/abuse/spam detection, report/hide/block, moderation queue, audit log, AI classify + human reviewMSRC-007SDD-005 §6QG-008✔
REQ-INX-06Activity Stream → Learner Activity Timeline (feed cho Learner/Parent Model)MSRC-007SDD-005 §7QG-005✔
REQ-INX-07Vote (up/down) trên submission (sản phẩm proof-of-work của Octopus). Vote trong forum đã chạy ở REQ-COM-03; "mentor feature bài xuất sắc" ở REQ-MEN-05 — ba thứ không lặp nhauSFEAT-020, Q-047——⏳

REQ-EXAM — Exam Banks (SRC-016, SRC-029) ​

IDYêu cầuƯu tiênNguồnSDDQGStatus
REQ-EXAM-01Exam bank entity (exams/sections/questions) tách khỏi Item Bank thường, liên kết node graph; loại semester|selectiveMSRC-016SDD-011 §3QG-006✔
REQ-EXAM-02Learner luyện mock exam theo timing → evidence per node → cập nhật mastery + readiness kỳ thi (chỉ đề generated — đề thật không mock exam, Q-061)MSRC-016SDD-011 §4QG-005✔
REQ-EXAM-03Shark: đề thi theo từng trường mục tiêu (target_schools, per-school); kế thừa exam-intelligence + registry trườngMSRC-016, FEAT-034/035SDD-011 §2-3QG-006✔
REQ-EXAM-04Turtle: đề thi học kỳ cơ bản/phổ thông (generic theo lớp/môn), luyện trước ngày thiMSRC-016SDD-011 §1,§3QG-006✔
REQ-EXAM-05Đề thi thật: registry đề đã diễn ra (source='authentic') — trường/hệ thi, vòng điều kiện|chuyên, môn, năm học, provenance + asset gốc; immutable sau publishMSRC-029, FEAT-034SDD-012 §2QG-011⏳
REQ-EXAM-06Mỗi đề thật tách thành từng bài (exam_problems): statement riêng, lời giải gợi ý riêng (human review bắt buộc), metadata phân loại (dạng bài, độ khó, điểm, node links)MSRC-029, FEAT-034SDD-012 §3QG-011⏳
REQ-EXAM-07Mỗi bài link một Assessment Experience thuộc Assessment Blueprint (SDD-004) đo đủ 3 lớp answer + confidence + justification → evidence per nodeMSRC-029, SRC-056SDD-012 §4QG-005/010⏳
REQ-EXAM-08Learner lọc bài theo môn/dạng bài/trường/năm/vòng/độ khó/số lần làm và đánh dấu trạng thái cá nhân (chưa làm, bế tắc, chưa tự tin…) rồi lọc lại theo dấu; 2 lối vào: theo đề & theo bàiMSRC-029SDD-012 §5, §8QG-011⏳
REQ-EXAM-12Acquisition targets & coverage: khai mục tiêu thu thập (trường nào, năm nào→nào, chuyên nào); coverage matrix trường × năm × vòng × môn (có đề? có đáp án? đã tách bài?); khu vực riêng trong CoralMSRC-035SDD-014 §3QG-011✔
REQ-EXAM-13Crawl pipeline AI-first: Workflows + Queues crawl nguồn công khai (tôn trọng robots/ToS) → OCR/extract → tách bài → metadata/node links → lời giải AI → AI multi-evaluator → publish; provenance đầy đủ; gom về một chỗMSRC-035SDD-014 §4-5QG-010/011✔
REQ-EXAM-14Source registry + scoring: lưu & xem lại mọi nguồn đề (exam_sources); sau mỗi crawl run, workflow chấm nguồn theo rubric 6 chiều (đúng-đủ đề · có đáp án chính thức · tỷ lệ ký tự phải sửa tay sau OCR · độ tươi · độ ổn định link · phạm vi phủ trường/năm) → score 0–1; resolver xếp nguồn theo score giảm dần khi tìm đề mới, nguồn vi phạm robots/bản quyền chuyển blockedMSRC-039, FEAT-034SDD-014 §6QG-011✔
REQ-EXAM-09Luyện đề chia bốn cụm theo mốc trong năm học: giữa kỳ 1 (A) · cuối kỳ 1 (B) · giữa kỳ 2 (C) · cuối kỳ 2 (D). Một đề "học kỳ" duy nhất cho cả năm thì làm một lần là hết, và trộn cả năm vào một chỗ nên không ôn được cho một kỳ cụ thểMSRC-183SDD-012QG-011✔
REQ-EXAM-10Trang Luyện đề: learner chọn một trong bốn cụm, hệ chọn sẵn cụm hợp thời điểm trong năm học. Mỗi đề một dòng, có tín hiệu đã làm bao nhiêu lần; vào đề thì được XEM trước rồi mới bấm bắt đầu, không rơi thẳng vào bàiSSRC-226, SRC-231, SRC-232, SRC-234SDD-012QG-007✔
REQ-EXAM-11Mốc học kỳ mặc định theo năm học Việt Nam: học kỳ 1 từ 1/9, học kỳ 2 từ khoảng 15/1. Từ hai mốc này suy ra thời gian mặc định của các kỳ thi, để phụ huynh không phải khai tay từng ngàySSRC-230SDD-012QG-005✔
REQ-EXAM-15Lịch thi học kỳ kẻ thành bảng, cột cuối là mục tiêu điểm, cạnh mỗi ngày có số tuần hoặc số ngày còn lại; bỏ thẻ "Chưa có mục tiêu nào"SSRC-334, SRC-338SDD-012QG-007✔

REQ-PED — Pedagogy per school (SRC-016) ​

IDYêu cầuƯu tiênNguồnSDDQGStatus
REQ-PED-01Turtle: Learning Experience theo IB inquiry (Predict→Explore→Explain→Practice→Transfer→Assess) + labs; diagnosis mức cơ bảnMSRC-016SDD-011 §1, SDD-010QG-006✔
REQ-PED-02Shark: pedagogy AoPS/Beast Academy — mỗi unit có ≥1 bài nhiều bước dùng để phân loại (role discriminator), sau khi trả lời hiện phần "vì sao lời giải đi hướng này"; ánh xạ experience type Problem/Challenge; chẩn đoán theo REQ-SCH-08MSRC-016SDD-011 §2QG-006✔
REQ-PED-03Mỗi môn đóng khung đúng MỘT ý quan trọng nhất, xuyên suốt cả môn, tách bạch về mặt thị giác với nhóm ý bổ sung — để learner không phải tự đoán ý nào là ý lớnSSRC-142SDD-004QG-006✔
REQ-PED-04Popover "vì sao đáng học" nói bằng lời của learner: cái đau nếu không học · làm được gì ngay tí nữa · làm được gì mai ngày kia · một ví dụ trẻ hiểu được. Viết tay, không sinh máy — đây là lời nói VỚI learner, sinh máy thì đứa trẻ nào đọc cũng biết là máy nóiMSRC-345SDD-021 §5QG-006✔
REQ-PED-05Popover mở đầu bằng câu "I will be able to…" của đúng Unit đó, lấy thẳng từ Pearl; con số đo đạc lùi xuống dưới. Thứ learner cần biết khi bấm vào là học xong thì làm được gì, không phải đã đo được bao nhiêuMSRC-352, SRC-413, SRC-370SDD-021 §5QG-006✔
REQ-PED-06Năm dạng câu hỏi ngoài trắc nghiệm 4 đáp án: nhập đáp số · ước lượng trong khoảng · sắp lại các bước lời giải · tìm chỗ sai trong bài giải mẫu · thao tác trên hình. Mỗi dạng là một Assessment/LX Blueprint trong registry content_blueprints; item khai answer_kind, máy chấm được ở server, không chờ người chấmMSRC-531SDD-022 §2-4QG-005✔
REQ-PED-07Bằng chứng từ dạng learner tự sản xuất (nhập đáp số, ước lượng, sắp bước) mang reliability cao hơn MCQ — không có sàn đoán mò 25% thì một câu đúng đáng tin hơn; dạng vẫn chọn-trong-tập (tìm chỗ sai) giữ mức MCQMSRC-531SDD-022 §5QG-005✔
REQ-PED-08Trang nhiều nội dung không cho xem lướt: nội dung chia mẩu, mỗi mẩu đổi lấy một động tác (True/False · chọn 1 trong 3 từ · quiz cực ngắn · điền từ) thì mẩu sau mới hiện; sai thì chỉ lại chỗ trong bài rồi cho trả lời lại, không chặn cứng; mỗi trang đọc xong ghi một dòng learning_events action read (phút thật, số cổng, số cổng đúng ngay lần đầu). Người chưa đăng nhập và máy tìm kiếm vẫn đọc trọn trangMSRC-836SDD-039QG-005✔

REQ-CNT — Content Plane Coral (coral.nemo12.com) — SRC-023, SRC-031 ​

Content plane mang tên Coral (SRC-031, 2026-08-14), deploy tại coral.nemo12.com — thay thế data.nemo12.com (ngừng sử dụng, Q-091). Bảo vệ: Cloudflare Access chỉ dac2205@gmail.com (Q-092) + API session staff/admin.

IDYêu cầuƯu tiênNguồnSDDQGStatus
REQ-CNT-01Browse Knowledge Registry (subject → area → node) + Item Bank + Exams trong Coral. Vào Coral phải chọn School rồi Subject ở trang chủ; mọi tab sau đó bám đúng cặp đó và không hỏi lại, muốn đổi thì quay về trang chủ Coral (chip "school · môn ✕" ở header)MSRC-023, SRC-058SDD-003 §2, SDD-004 §9, SDD-013 §2QG-006✔
REQ-CNT-02Coverage/Quality dashboard: node thiếu item/assessment/lab (gaps), thống kê theo môn/areaMSRC-023, CC-MORI-03SDD-003 §9, SDD-013 §4QG-006✔
REQ-CNT-03Xem chi tiết item (prompt/options/đáp án/misconception) và learning experiences gắn nodeSSRC-023SDD-004 §5-9, SDD-013 §2QG-006✔
REQ-CNT-04Coral portal tại coral.nemo12.com thay data.nemo12.com; Cloudflare Access chỉ dac2205@gmail.com (policy hạ tầng, không hardcode code) + session RBAC staff/adminMSRC-031SDD-013 §1,§7QG-008✔
REQ-CNT-05Quản lý registry artifact: Knowledge Package, Learning Experience, Assessment Experience, LX Blueprint, Assessment Blueprint — CRUD, lifecycle Draft→Review→Published, versioning + provenanceMSRC-031, SRC-055, SRC-064SDD-013 §2-3QG-006✔
REQ-CNT-06Quản lý ngân hàng đề thi trong Coral: đề generated + đề thật (UI WF-13: nhập, tách bài, biên tập lời giải, publish với checklist QG-011)MSRC-031SDD-013 §5, SDD-012 §7QG-011✔
REQ-CNT-07Dashboard tổng quan: số lượng + chất lượng theo loại artifact/môn/area; tiến độ tạo mới & nâng cấp theo thời gian; trạng thái runs/queues/review backlogMSRC-031SDD-013 §4QG-006✔
REQ-CNT-08Quản lý Quality Gates & Rubrics: rubric registry duy nhất (gốc CC-QAF-1.0), mapping rubric↔artifact type, quality profile + findings, human review queueMSRC-031, CC-MORI-03SDD-013 §6QG-006✔
REQ-CNT-09Blueprint → generation runs: tạo/sửa blueprint, chạy generation qua AI Gateway, theo dõi status, review candidate → approveMSRC-031, CC-MORI-02SDD-013 §3QG-006/010✔
REQ-CNT-10Pipeline content chạy bằng Cloudflare Workflows + Queues (content-quality, exam-ingest, content-generation; queue nemo12-content + DLQ) — cấm cron-poll (RISK-018); trạng thái run quan sát được trong CoralMSRC-031SDD-013 §8QG-009✔
REQ-CNT-12Coral xem từng đề: danh sách mọi đề → chi tiết từng câu kèm đáp án, node song ngữ; metadata đầy đủ (link gốc, trường, ngày thi thật, năm học, hệ thi, vòng, verified…); filter lớp/môn/dạng đề (giữa|cuối HK1-2, thi vào trường, điều kiện, chuyên)MSRC-042, SRC-045SDD-013 §5QG-006✔
REQ-CNT-13Coral song ngữ vi/en: toggle UI + taxonomy hiển thị song ngữMSRC-042SDD-013 §1QG-007✔
REQ-CNT-11Source provenance + content intelligence: mọi artifact lưu {nguồn, blueprint, model, prompt_version}; audit viewSSRC-031, CC-MORI-04SDD-013 §3QG-010✔
REQ-CNT-14Không Unit nào là ngõ cụt: mọi Unit đang hiện cho learner phải có câu hỏi để luyện, mỗi câu kèm misconception mô tả hiểu lầm dẫn tới đáp án sai. Unit trống làm learner bấm vào và gặp màn báo lỗiMSRC-144, SRC-412, SRC-322, SRC-346, SRC-371, SRC-411SDD-010 §12QG-006✔
REQ-CNT-15Curriculum từng môn có khu riêng, và có trang so sánh ba hệ (Building 21 · Việt Nam · IB) đặt cạnh nhau theo cùng một cấpSSRC-238, SRC-245SDD-004QG-006✔
REQ-CNT-16Data Quality trong Coral: hàng đợi rà soát unit/lesson theo môn xếp ưu tiên kèm lý do; người rà học thử không ghi model; đánh dấu 1-2 cú bấm (Đạt/Sửa nhỏ/Sửa lớn/Ẩn + tag chip) ghi append-only, nhiều lần/nhiều người; blocker ẩn experience khỏi learner tới khi rà lại Đạt; verdict xấu + tags = đầu vào vòng sinh lạiMSRC-446SDD-013 §9QG-006/008✔

REQ-MED — Media & Image Management (yêu cầu bổ sung 2026-08-13) ​

IDYêu cầuƯu tiênNguồnSDDQGStatus
REQ-MED-01Media Registry dùng chung toàn platform: metadata D1, bytes R2, gắn mọi object qua target_type+target_idMUser 2026-08-13, SRC-014SDD-009 §2QG-004✔
REQ-MED-02Upload flow direct-to-storage (presigned), validate type/size/quota; cấm base64 lưu vĩnh viễn trong D1MRISK-028SDD-009 §3QG-004✔
REQ-MED-03Delivery qua CDN + Cloudflare Images variants (thumb/card/full), signed URL theo visibility + authz backendMSRC-014SDD-009 §4QG-008✔
REQ-MED-04Moderation K12 bắt buộc: AI classify + moderation queue + audit; EXIF strip; chưa approve không serve publicMSRC-007, SRC-014SDD-009 §5QG-008✔
REQ-MED-05Media versioning + retention + xóa theo child-privacyMREQ-SEC-04SDD-009 §6QG-008✔
REQ-MED-07Lát cắt đầu tiên được thi hành của Media System (SRC-201): bảng media + bytes trong R2 nemo12-content + GET /v1/media/{id} phục vụ ảnh công khai, bất biến, cache vĩnh viễn; tải lên chỉ dành cho vai nội bộ, chặn theo mime + dung lượng, khử tên tệp. Cố ý chưa làm: variants Cloudflare Images, signed URL, moderation queue, versioning (Q-132) — ảnh ở đây do người nội bộ sau Cloudflare Access đưa lên, không phải ảnh learner tải lênMSRC-201SDD-009 §2-4, SDD-019 §2QG-004/008✔
REQ-MED-06AI illustration pipeline ghi cùng registry với provenanceCFEAT-041, Q-051SDD-009 §7QG-010⏳
REQ-MED-08Kho ảnh chung có tag năm cụm (SRC-1215): ảnh mentor, ảnh album, ảnh chứng chỉ và ảnh báo chí nằm chung bảng media; năm cụm tag đóng shape (máy đo) · tone (máy đoán, người sửa) · context · people · quality; album dùng cùng cơ chế vì tag và người trong ảnh nằm ở mức ảnhMSRC-1215SDD-053 §3-4QG-004/008⏳ thiết kế đã chốt, chưa dựng
REQ-MED-09Phân phối ảnh theo chỗ hiển thị (SRC-1215): mỗi chỗ hiển thị trên nemo12.com khai trong code kèm ràng buộc (hình dạng, bối cảnh, mức chuẩn, độ rộng tối thiểu, số ảnh); khu Phân phối trong dolphin chỉ gợi ý ảnh hợp; phân phối cố định và có thứ tựMSRC-1215SDD-053 §5, §7QG-004/008⏳ thiết kế đã chốt, chưa dựng
REQ-MED-10Cổng đồng ý cho ảnh có học viên (SRC-1215): ảnh có học viên chỉ lên trang công khai khi có đồng ý của phụ huynh ghi ở từng ảnh, chỉ staff/admin đánh dấu; API công khai lọc lại lúc trả về để đồng ý bị rút là ảnh biến mất ngayMSRC-1215SDD-053 §6QG-004/008⏳ thiết kế đã chốt, chưa dựng
REQ-MED-11Skill audit ảnh (SRC-1215): tự điền phần máy đo được (kích thước, hình dạng, nền, alt text còn là tên tệp), gợi ý phần cần phán đoán, không bao giờ tự đánh dấu đồng ý hay kiểm chứngSSRC-1215SDD-053 §8QG-004✔

REQ-LAB — Interactive Labs (bổ sung 2026-08-13, sau audit SRC-015) ​

IDYêu cầuƯu tiênNguồnSDDQGStatus
REQ-LAB-01Lab Platform theo 6 archetypes: 4 engines data-driven (picker/parametric/stepper + inquiry) + sim components + scene3d cô lậpMSRC-015SDD-010 §2QG-007✔
REQ-LAB-02Lab là LearningExperience: metadata D1 + content JSON R2 + version immutable; bỏ mô hình MPA 9-touchpointMSRC-015SDD-010 §3QG-004✔
REQ-LAB-03Migrate content corpus 288 labs (620 prompts, 1.807 options, 288 inquiry triples) bằng reverse-parser; 186 picker labs = 100% tự độngMSRC-015SDD-010 §4QG-006✔
REQ-LAB-04Evidence contract đầy đủ: lab_open/inquiry_open/inquiry_answer/lab_complete — bespoke labs phải có correctness signalMSRC-015SDD-010 §5QG-005✔
REQ-LAB-05Một LabShell trong Design System, sửa a11y một lần cho cả 288 (dialog, focus trap, aria-live, reduced-motion)MSRC-015SDD-010 §6QG-007✔
REQ-LAB-06Công nghệ dài hạn: React 19 + SVG procedural (zero-asset), config schema versioned (zod), engine/content version độc lậpMUser 2026-08-13SDD-010 §7QG-005✔
REQ-LAB-07Labs qua Quality Engine + coverage map theo taxonomy kế thừa; mode suy từ implementation (legacy sai nhãn 24%)MSRC-015SDD-010 §8QG-006✔
REQ-LAB-08Mỗi Unit đi kèm TỐI ĐA MỘT lab: lab gắn vào Unit (labs.unit), ràng buộc bằng unique index từng phần trên (subject_id, unit) khi status='live'; lab dôi ra chuyển 'draft' chứ không xoá. Lab của Unit hiện ngay trong thẻ Unit ở Toàn cảnh, bấm là mở thẳngMSRC-208SDD-010 §3QG-004✔
REQ-LAB-09Lab yêu thích: learner đánh dấu lab trong Thư viện Lab (bảng lab_favorites theo learner) và lọc lại danh sách theo dấu đó; bộ lọc chỉ xuất hiện khi đã có ít nhất một lab được thích, và tự tắt khi lab cuối cùng bị bỏ thíchSSRC-212SDD-010 §3cQG-007✔
REQ-LAB-10Mỗi Unit có lối vào Lab ngay trên thẻ Unit; lab khớp theo node HOẶC theo tên unit, vì phần lớn lab gắn theo unit chứ không theo một node cụ thểSSRC-373SDD-010QG-006✔
REQ-LAB-11Phòng Lab lọc theo lớp và nói rõ "có cần học không", thay cho nhãn đếm số thuần tuýSSRC-062SDD-010QG-007✔
REQ-LAB-12Mỗi lab có URL riêng, mở được thẳng và chia sẻ đượcSSRC-170SDD-010QG-007✔
REQ-LAB-13Lab phải tương tác được thật, không có lab rỗng. Bố cục thoáng, ít chữ, mỗi bước một khối riêng trên một dòng; lab của mọi môn theo cùng một khuônMSRC-169, SRC-172, SRC-173, SRC-174, SRC-380SDD-010QG-006✔
REQ-LAB-14Mỗi môn có một mục xem được mọi lab ngay lập tức, không phải đi qua đường học mới tới; vào lab thì ẩn cột trái và chân trang để lab chiếm trọn màn hìnhSSRC-167, SRC-302SDD-010QG-007✔
REQ-LAB-15Màn kết thúc lab nói ngắn: một câu kết quả, một nút đi tiếp. Chữ dài ở màn kết thúc thì learner đã làm xong rồi, đọc cũng không đổi được gìSSRC-387SDD-010QG-007✔

REQ-ART — tài liệu đọc trong bài học (SRC-692) ​

IDYêu cầuPNguồnSDDQGTT
REQ-ART-01Mỗi lesson chứa được một hoặc nhiều tài liệu đọc tự soạn, lưu trong bảng riêng curriculum_lesson_articles chứ không nhét vào curriculum_lesson_materials (bảng đó trỏ ra ngoài, mọi kind đều đòi url hoặc ref_id). Có bản nháp, có lịch sử phiên bản, có slug ổn định dùng cả cho URL lẫn khoá tiến độMSRC-692SDD-033 §1, §2QG-008✔
REQ-ART-02HTML learner đọc do server dựng từ TipTap JSON bằng một bộ lọc danh sách-cho-phép duy nhất; không đường nào nhận HTML từ client. Link chỉ http/https/mailto/đường dẫn nội bộ, video chỉ YouTube và Vimeo với địa chỉ iframe do hệ dựng từ id, ảnh chỉ từ kho ảnh của hệ và mang URL tuyệt đốiMSRC-692SDD-033 §3QG-008✔
REQ-ART-03Bản nháp không tới tay learner, và trả 404 chứ không 403 — với learner một bản nháp không tồn tại. Payload course mang tóm tắt (không thân bài); tên bài đọc của lesson bị khoá cũng bị cắt cùng phần nội dung khácMSRC-692SDD-033 §4QG-008✔
REQ-ART-04Route đọc thân bài đi qua đủ ba cổng của mọi route lesson: phiên đăng nhập, quyền trên learner, quyền mở bài. Route soạn nằm ở router riêng gác bằng vai admin/staff, không chạm dữ liệu learnerMSRC-692SDD-033 §4QG-008✔
REQ-ART-05Soạn trong admin bằng TipTap, nhúng được ảnh (kéo thả, dán, tải lên qua kho ảnh có sẵn) và video, có khung nhấn mạnh, bảng, nếp gấp giấu đáp án, công thức toán. Cổng nội dung chắn lúc đăng chứ không lúc lưu; chiều rút xuống nháp không có cổng nàoMSRC-692SDD-033 §5QG-008✔
REQ-ART-06Bài đọc là cụm trong chặng Kết nối, đứng sau câu chuyện và trước học liệu; mỗi bài một mục menu mang chính tên nó và một URL riêng; tiến độ dùng lại curriculum_part_completions với khoá connect:article-<slug>MSRC-692SDD-033 §6QG-008✔