PRD-001 · REQ: SAT, Journey, Gull, app IELTS
Một mảnh của danh mục REQ PRD-001, gồm REQ-SAT, REQ-JRN, REQ-GUL, REQ-MOB. 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-SAT — NEMO SAT (SRC-1024, PRD-004)
Bản đầy đủ, kèm người dùng, hành trình và chỉ số: PRD-004. Chủ dự án chốt 24.09.2026 (PRD-004 §10). ✔ = đã code (đợt 1 ngày 24.09, đợt 2 và 3 ngày 25.09.2026, SDD-044 §10); ⏳ = chưa code.
| ID | Yêu cầu | Ưu tiên | Nguồn | SDD | QG | Status |
|---|---|---|---|---|---|---|
| REQ-SAT-01 | learn.nemo12.com/sat/** là một khu riêng (router, khung, đầu trang "NEMO SAT"), khoá sau đăng nhập cả giao diện lẫn API, theo khuôn cổng IELTS (SDD-038 §9, SRC-839). Người chưa đăng nhập thấy màn giới thiệu một câu + nút đăng nhập | M | SRC-1024 | SDD-044 §3 | QG-007 | ✔ |
| REQ-SAT-02 | Goal Setup: learner khai danh sách trường (chọn nhóm: Việt Nam · Mỹ ngoài top 50 · Mỹ top 30, hoặc tự nhập điểm), ngày thi dự kiến và hạn nộp sớm nhất; hệ đề xuất điểm mục tiêu tổng và từng phần, learner sửa được | M | SRC-1024 | SDD-044 §3 | QG-007 | ✔ |
| REQ-SAT-03 | Nếu ngày thi cách hôm nay dưới 8 tuần hoặc khoảng cách tới mục tiêu > 200 điểm/8 tuần, màn mục tiêu hiện cảnh báo bằng số (điểm/tuần cần tăng), không chặn | S | SRC-1024 | SDD-044 §3 | QG-007 | ✔ |
| REQ-SAT-04 | Bài đo đầy đủ: R&W 2 module × 27 câu × 32 phút, Math 2 module × 22 câu × 35 phút, nghỉ 10 phút; module 2 của mỗi phần là bản dễ hoặc khó tuỳ số câu đúng ở module 1 (ngưỡng cấu hình theo đề). Đồng hồ đếm ngược, hết giờ thì tự nộp module | M | SRC-1024 | SDD-044 §4 | QG-007 | ✔ |
| REQ-SAT-05 | Người chơi đề có: đánh dấu xem lại, gạch đáp án (eliminator), bảng câu hỏi của module, ô nhập đáp án tự điền cho Math (student-produced response, nhận phân số và số thập phân), công thức tham khảo | M | SRC-1024 | SDD-044 §4 | QG-007 | ✔ |
| REQ-SAT-06 | Máy tính đồ thị có sẵn cho mọi câu Math (nhúng Desmos nếu có giấy phép API, nếu không thì mở tab Desmos công khai) | S | SRC-1024 | SDD-044 §4 | QG-007 | ✔ |
| REQ-SAT-07 | Báo cáo: điểm ước lượng từng phần (200-800, bước 10) và tổng, ghi chữ "ước lượng" + khoảng ±40; module 2 rơi vào bản nào; mức 1-7 của 8 miền; thời gian từng câu | M | SRC-1024 | SDD-044 §4 | QG-007 | ✔ |
| REQ-SAT-08 | Sau bài đo, learner xem lại từng câu sai và gắn một trong 4 nguyên nhân (hệ gợi ý sẵn: hết giờ nếu trả lời trong 10 giây cuối hoặc bỏ trống; bất cẩn nếu câu cùng kỹ năng đã đúng ≥ 2 lần trước đó). Báo cáo hiện tỉ lệ 4 nguyên nhân | M | SRC-1024 | SDD-044 §4 | QG-007 | ✔ |
| REQ-SAT-09 | Báo cáo kết thúc bằng 3 việc làm trước, xếp theo (số câu mất × trọng số miền) / giờ học ước tính | S | SRC-1024 | SDD-044 §4 | QG-007 | ✔ |
| REQ-SAT-10 | Luyện theo miền: chọn một miền (hoặc một kỹ năng con trong cây SA1-SA5), làm bộ 10 câu, xem lời giải từng câu ngay sau khi trả lời | M | SRC-1024 | SDD-044 §5 | QG-007 | ✔ |
| REQ-SAT-11 | Module có giờ: làm một module 27 hoặc 22 câu đúng giờ thi, kết quả tính vào bằng chứng tốc độ | M | SRC-1024 | SDD-044 §5 | QG-007 | ✔ |
| REQ-SAT-12 | Sổ lỗi: mọi câu sai tự vào sổ kèm nguyên nhân; learner lọc theo miền/nguyên nhân và làm lại; câu làm lại đúng 2 lần cách nhau ≥ 3 ngày thì ra khỏi sổ | M | SRC-1024 | SDD-044 §5 | QG-007 | ✔ |
| REQ-SAT-13 | Ôn giãn cách: câu trong sổ lỗi quay lại theo lịch 1-3-7-14 ngày (dùng engine Retention, SDD-017) | S | SRC-1024 | SDD-044 §5 | QG-007 | ✔ |
| REQ-SAT-14 | Không trả lời lại được câu đã xem lời giải trong cùng phiên; lần làm lại tính là một attempt mới | M | SRC-1024 | SDD-044 §5 | QG-007 | ✔ |
| REQ-SAT-15 | Plan: từ ngày thi, số giờ/tuần và 3 chỗ hổng lớn nhất, hệ dựng lịch tuần (bài luyện miền, module có giờ, đo lại mỗi 3-4 tuần); mỗi mốc một ngày + điểm mong đợi; learner kéo dời được mốc | M | SRC-1024 | SDD-044 §6 | QG-007 | ✔ |
| REQ-SAT-16 | Mốc trượt (lần đo lại thấp hơn điểm mong đợi > 30) thì Plan đề xuất sửa, không tự sửa | S | SRC-1024 | SDD-044 §6 | QG-007 | ✔ |
| REQ-SAT-17 | Readiness: trạng thái "Sẵn sàng" chỉ bật khi 2 lần đo đầy đủ liên tiếp ≥ mục tiêu; trước đó màn chính hiện khoảng cách còn lại | M | SRC-1024 | SDD-044 §6 | QG-007 | ✔ |
| REQ-SAT-18 | Trang chủ /sat (dashboard) hiện: điểm ước lượng gần nhất, mục tiêu, số ngày tới ngày thi, việc hôm nay (≤ 3), chuỗi ngày học | M | SRC-1024 | SDD-044 §6 | QG-007 | ✔ |
| REQ-SAT-19 | Mọi câu trả lời ghi thành attempt (câu, đáp án, đúng/sai, thời gian, ngữ cảnh: đo/miền/module/ôn) và đổ vào Evidence Registry theo miền + node SA1-SA5 | M | SRC-1024 | SDD-044 §7 | QG-007 | ✔ |
| REQ-SAT-20 | sat-effort: số phút, số câu, độ chính xác 7/30 ngày, cho learner và cho dashboard sat-learners (SDD-037) | S | SRC-1024 | SDD-044 §7 | QG-007 | ✔ |
| REQ-SAT-21 | Phụ huynh (marlins) thấy: mục tiêu, các mốc và điểm từng lần đo, trạng thái sẵn sàng; không thấy từng câu | S | SRC-1024 | SDD-044 §7 | QG-007 | ✔ |
| REQ-SAT-22 | Bàn SAT (SDD-037 §7.8): mentor thấy học sinh không có attempt 21 ngày, miền yếu nhất và tỉ lệ nguyên nhân của từng học sinh | S | SRC-1024 | SDD-044 §7 | QG-007 | ✔ |
| REQ-SAT-23 | Câu hỏi sống trong D1: phần (R&W/Math), miền, kỹ năng, node SA1-SA5, độ khó 1-3, đoạn văn (nếu có), 4 lựa chọn hoặc đáp án tự điền (nhiều dạng đúng), lời giải, nguồn + giấy phép, trạng thái duyệt | M | SRC-1024 | SDD-044 §2 | QG-007 | ✔ |
| REQ-SAT-24 | Chỉ câu approved mới vào đề; mỗi câu có ≥ 1 người duyệt khác người soạn; nguồn College Board bị chặn ở tầng dữ liệu | M | SRC-1024 | SDD-044 §2 | QG-007 | ✔ |
| REQ-SAT-25 | Một đề đầy đủ = 6 module (R&W M1/M2-dễ/M2-khó, Math tương tự) ghép từ kho theo bảng phân bố miền của College Board; admin ghép và kiểm phân bố bằng máy | M | SRC-1024 | SDD-044 §2 | QG-007 | ✔ |
| REQ-SAT-26 | Đủ kho cho v1: ≥ 3 đề đầy đủ (≈ 294 câu) + ≥ 40 câu mỗi miền cho luyện; độ khó hiệu chỉnh lại sau mỗi 30 attempt/câu | S | SRC-1024 | SDD-044 §2 | QG-007 | ⏳ |
REQ-JRN - Journey Management & Activation Engine (SRC-1077, PRD-005)
Bản đầy đủ: PRD-005. Thiết kế: SDD-045. ✔ = đã code 27.09.2026; ⏳ = chờ quyết định.
| ID | Yêu cầu | Ưu tiên | Nguồn | SDD | QG | Status |
|---|---|---|---|---|---|---|
| REQ-JRN-01 | Journey Registry: mỗi hành trình có id, phiên bản, tên, mục đích, tầm (session/day/week/month/lifecycle), chủ, trạng thái (draft/active/deprecated), luật, policy ưu tiên, catalog việc gợi ý, chỉ số thành công. Cấu hình sai (trọng số không cộng bằng 1, catalog thiếu gợi ý mặc định) bị test chặn | M | SRC-1077 | SDD-045 §4 | QG-005 | ✔ |
| REQ-JRN-02 | Luật đủ điều kiện, kích hoạt, xong, hết hạn viết dạng khai báo (fact, op, value; all/any), có phiên bản; mọi kết quả luật kèm vết từng điều kiện | M | SRC-1077 | SDD-045 §4, §5 | QG-005 | ✔ |
| REQ-JRN-03 | Learner State đọc từ dữ liệu thật ở MỘT chỗ (mục tiêu, hồ sơ, quiz, bài đo, mốc, hoạt động, Learner Model); bảng chưa có thì coi là "chưa có", không hỏng trang | M | SRC-1077 | SDD-045 §5 | QG-004 | ✔ |
| REQ-JRN-04 | Journey Portfolio: mỗi learner có trạng thái cho từng hành trình (NOT_ELIGIBLE, ELIGIBLE, ACTIVE, PAUSED, COMPLETED, EXPIRED); mỗi lần chuyển trạng thái ghi đúng MỘT dòng sổ | M | SRC-1077 | SDD-045 §3, §7 | QG-004 | ✔ |
| REQ-JRN-05 | Ưu tiên theo năm nhân tố (mức gấp, liên quan tới mục tiêu, mức cần, tác động, sẵn sàng) và policy có trọng số, ngưỡng tối thiểu; learner không thấy điểm | M | SRC-1077 | SDD-045 §6 | QG-005 | ✔ |
| REQ-JRN-06 | Chọn MỘT hành trình đứng trước: phá hoà theo mức gấp, liên quan, tác động; giữ hành trình đang đứng trước nếu kém trong biên 0.05; loại hành trình đang hoãn | M | SRC-1077 | SDD-045 §8 | QG-005 | ✔ |
| REQ-JRN-07 | Next Best Action: một việc cụ thể (có đích bấm được) kèm một câu vì sao do server viết từ đúng luật đã chọn nó | M | SRC-1077 | SDD-045 §8, §11 | QG-005 | ✔ |
| REQ-JRN-08 | Trạng thái đánh giá lại mỗi khi learner mở trang và qua một đường đánh giá lại tường minh; dữ liệu đổi (nộp quiz, thêm mốc, nghỉ học) thì việc tiếp theo đổi theo | M | SRC-1077 | SDD-045 §9, §10 | QG-003 | ✔ |
| REQ-JRN-09 | Ghi lại learner đã bấm gợi ý nào và đã "Để sau" hành trình nào; action lạ bị từ chối | S | SRC-1077 | SDD-045 §7, §9 | QG-004 | ✔ |
| REQ-JRN-10 | Admin thấy số learner theo từng hành trình và trạng thái | S | SRC-1077 | SDD-045 §9, §11 | QG-003 | ✔ |
| REQ-JRN-11 | Admin nhập một learner và thấy: dữ kiện engine đọc, từng điều kiện đúng sai kèm giá trị thật, nhân tố, điểm, vì sao hành trình này đứng trước, vì sao hành trình khác không, và sổ sự kiện. Xem không làm đổi sổ | M | SRC-1077 | SDD-045 §8, §9, §11 | QG-008 | ✔ |
| REQ-JRN-12 | Tám hành trình MVP: Onboarding, Diagnosis, Learning Plan, Daily Learning, Learning Progress, Recovery, Exam Preparation, Goal Achievement (PRD-005 §6) | M | SRC-1077 | SDD-045 §4 | QG-005 | ✔ |
| REQ-JRN-13 | Bước Learn (learn.nemo12.com/ielts/today) có một thẻ "What to do now" chỉ thẳng vào một kỹ năng nên luyện hôm nay (kẹt → gợi ý của Nemo → kỹ năng chưa luyện → Reading), một nút; thẻ Next up riêng đã gộp vào đây (09.10.2026, PR #531) và chỉ còn ở hồ sơ learner | M | SRC-1077 | SDD-045 §11 | QG-007 | ✔ |
| REQ-JRN-14 | Hành trình năm bước bị thay ở app (dải năm bước, endpoint ielts-journey) và ở trang công khai IELTS (/ielts/journey, trang chi tiết, khối trang môn, nhãn liên kết); URL giữ nguyên. Bàn mentor giữ năm bước tới Q-169 | M | SRC-1077 | SDD-045 §9, §11 | QG-007 | ✔ |
| REQ-JRN-15 | Phụ huynh xem portfolio hành trình của con (xem gì: chờ chủ dự án, Q-168) | S | SRC-1077 | SDD-045 §12 | QG-008 | ⏳ |
| REQ-JRN-16 | Phân tích phễu hành trình theo thời gian (tỉ lệ kích hoạt, xong, bỏ dở, hoãn) | C | SRC-1077 | SDD-045 §14 | QG-003 | ⏳ |
REQ-GUL - Gull: Customer Understanding & Journey Intelligence (SRC-1094, PRD-007)
Bản đầy đủ: PRD-007. Thiết kế: SDD-047. ✔ = đã code 27.09.2026; ⏳ = đợt 2 (SDD-047 §7). Tìm kiếm hiện là tìm theo từ; tìm theo nghĩa ở REQ-GUL-15.
| ID | Yêu cầu | Ưu tiên | Nguồn | SDD | QG | Status |
|---|---|---|---|---|---|---|
| REQ-GUL-01 | Mười hai loại thực thể (Program, Stakeholder, Persona, JTBD, Need, Pain, Journey, Journey Stage, Journey Step, Touchpoint, Evidence, Opportunity); MVP tám thực thể | M | SRC-1094 | SDD-047 §4.1 | QG-005/007/008 | ✔ |
| REQ-GUL-02 | Quan hệ nhiều-nhiều giữa mọi thực thể là dữ liệu hạng nhất; Evidence gắn được vào mọi thực thể | M | SRC-1094 | SDD-047 §4.2 | QG-005/007/008 | ✔ |
| REQ-GUL-03 | Tách Global Entity khỏi Program Context: một thực thể dùng lại ở nhiều chương trình, phần khác biệt ghi theo chương trình | M | SRC-1094 | SDD-047 §4.3 | QG-005/007/008 | ✔ |
| REQ-GUL-04 | Pain quan trọng không có Evidence thì bị chặn, trừ khi ghi là Hypothesis | M | SRC-1094 | SDD-047 §4.4 | QG-005/007/008 | ✔ |
| REQ-GUL-05 | Trạng thái tri thức (Hypothesis, Draft, Evidence-backed, Validated, Deprecated) và vòng đời quản trị; không xoá cứng, mọi sửa có lịch sử phiên bản | M | SRC-1094 | SDD-047 §4.4 | QG-005/007/008 | ✔ |
| REQ-GUL-06 | Tri thức do AI sinh mang nguồn, confidence, generated by, human verified, ngày xác minh; chỉ người nâng được lên Validated | M | SRC-1094 | SDD-047 §4.4 | QG-005/007/008 | ✔ |
| REQ-GUL-07 | F1 Knowledge Library: tìm, lọc, tag, đi theo quan hệ | M | SRC-1094 | SDD-047 §5 | QG-005/007/008 | ✔ |
| REQ-GUL-08 | F2 Journey Builder: Journey, Stage, Step, Touchpoint; MVP chỉ hiển thị, tạo và đổi thứ tự bằng script vào database (Q-187) | M | SRC-1094 | SDD-047 §5 | QG-005/007/008 | ✔ |
| REQ-GUL-09 | F3 Journey Matrix theo Persona × Program × Stakeholder × Stage | M | SRC-1094 | SDD-047 §5 | QG-005/007/008 | ✔ |
| REQ-GUL-10 | F4 Journey Detail và F5 Persona Explorer | M | SRC-1094 | SDD-047 §5 | QG-005/007/008 | ✔ |
| REQ-GUL-11 | F6 JTBD Library: xem và đi theo quan hệ; tạo, sửa, gộp, nhân bản, nối bằng script vào database (Q-187) | M | SRC-1094 | SDD-047 §5 | QG-005/007/008 | ✔ |
| REQ-GUL-12 | F7 Evidence Registry: mọi nhận định quan trọng trả lời được "vì sao ta tin điều này" | M | SRC-1094 | SDD-047 §5 | QG-005/007/008 | ✔ |
| REQ-GUL-13 | F8 AI Research Assistant: trích Persona/JTBD/Pain/Need từ ghi chép phỏng vấn, phát hiện trùng và mâu thuẫn | S | SRC-1094 | SDD-047 §5 | QG-005/007/008 | ⏳ |
| REQ-GUL-14 | F9 AI Relationship Discovery: hỏi bằng lời, trả về chuỗi quan hệ kèm Evidence | C | SRC-1094 | SDD-047 §5 | QG-005/007/008 | ⏳ |
| REQ-GUL-15 | F10 Semantic Search trên mọi thực thể và bằng chứng | S | SRC-1094 | SDD-047 §5 | QG-005/007/008 | ⏳ |
| REQ-GUL-16 | F11 Dashboard và F12 Journey Analytics, North Star Evidence-backed Coverage | S | SRC-1094 | SDD-047 §5, §8 | QG-005/007/008 | ✔ |
| REQ-GUL-17 | Năm vai: Researcher, Product Manager, UX Researcher, Program Manager, Admin; MVP là nhãn mô tả, chưa gắn quyền (Q-187) | S | SRC-1094 | SDD-047 §6 | QG-005/007/008 | ✔ |
| REQ-GUL-18 | Deploy tại gull.nemo12.com qua GitHub Actions, công khai, không đăng nhập (Q-184); UI dùng chung component với learn.nemo12.com/ielts | M | SRC-1094 | SDD-047 §10 | QG-005/007/008 | ✔ |
| REQ-GUL-19 | Trang Journeys gom journey theo nhóm người dùng (chương trình × stakeholder), chia chính/phụ; IELTS Learners có 2 journey chính và 3 phụ. Trang journey có tổng quan rồi các thành phần, mỗi thành phần một card, mỗi card một dòng | M | SRC-1095 | SDD-047 §6.1 | QG-005/007 | ✔ |
REQ-MOB - NEMO IELTS, app Flutter iOS + Android (SRC-1100, PRD-010)
Bản đầy đủ: PRD-010. Thiết kế: SDD-055. 🔵 = đã code đợt 0 ngày 28.09.2026 (backend đăng nhập có test; app Flutter chờ build trên máy Mac có Xcode); ⏳ = đợt 1-2.
| ID | Yêu cầu | Ưu tiên | Nguồn | SDD | QG | Status |
|---|---|---|---|---|---|---|
| REQ-MOB-01 | Một app tên NEMO IELTS viết bằng Flutter, một codebase ra iOS và Android; bundle id com.nemo12.ielts | M | SRC-1100 | SDD-055 §2, §9 | QG-007 | 🔵 |
| REQ-MOB-02 | Dùng chung backend api.nemo12.com, chung D1, chung hồ sơ learner; app không có bảng nội dung riêng, mọi bài làm ghi qua API hiện có | M | SRC-1100 | SDD-055 §1, §5 | QG-005 | 🔵 |
| REQ-MOB-03 | Đăng nhập Google (iOS + Android) và Sign in with Apple (iOS); chọn Google thì vào đúng tài khoản web cũ, không tự gộp theo email (RISK-001) | M | SRC-1100 | SDD-055 §4 | QG-005 | 🔵 |
| REQ-MOB-04 | Phiên dài hạn: không phải đăng nhập lại nếu mở app ít nhất một lần mỗi 30 ngày; token trong Keychain / Keystore | M | SRC-1100 | SDD-055 §4 | QG-005 | 🔵 |
| REQ-MOB-05 | Home chỉ hiện một việc tiếp theo từ Journey Engine (SDD-045), đúng luật tối giản SRC-048 | M | SRC-1100 | SDD-055 §5 | QG-008 | 🔵 |
| REQ-MOB-06 | Luyện Reading và Listening bằng kho đề D1; audio phát được khi khoá màn hình | M | SRC-1100 | SDD-055 §5 | QG-008 | 🔵 |
| REQ-MOB-07 | Màn Progress: bốn kỹ năng, mục tiêu band, hoạt động bảy ngày, đọc từ API có sẵn | M | SRC-1100 | SDD-055 §5 | QG-008 | 🔵 |
| REQ-MOB-08 | Hồ sơ chưa setup IELTS thì setup ngay trong app | S | SRC-1100 | SDD-055 §5 | QG-008 | ⏳ |
| REQ-MOB-09 | Speaking: ghi âm, nghe lại, nộp; bài ghi dở không mất khi app xuống nền | M | SRC-1100 | SDD-055 §6 | QG-008 | ⏳ |
| REQ-MOB-10 | Writing: soạn, tự lưu nháp trên máy, nộp qua API productions | M | SRC-1100 | SDD-055 §6 | QG-008 | ⏳ |
| REQ-MOB-11 | Nhắc học bằng push: learner chọn giờ, tối đa một lời nhắc mỗi ngày, tắt được | S | SRC-1100 | SDD-055 §8 | QG-005 | ⏳ |
| REQ-MOB-12 | Tải trước đề để làm offline; đồng bộ khi có mạng, không tạo bản ghi trùng | S | SRC-1100 | SDD-055 §7 | QG-005 | ⏳ |
| REQ-MOB-13 | Chế độ thi thật: đếm giờ theo chuẩn IELTS, tự nộp khi hết giờ | S | SRC-1100 | SDD-055 §7 | QG-008 | ⏳ |
| REQ-MOB-14 | App không bán gì: membership chỉ hiện trạng thái, không nút mua, không link thanh toán (App Store Review 3.1.1) | M | SRC-1100 | SDD-055 §5 | QG-008 | 🔵 |
| REQ-MOB-15 | Xoá tài khoản ngay trong app (App Store Review 5.1.1(v)) + link chính sách quyền riêng tư | M | SRC-1100 | SDD-055 §4 | QG-005 | 🔵 |
| REQ-MOB-16 | Giao diện Flutter dựng theo token DS-001 sinh bằng máy, để app và web là một họ | M | SRC-1100 | SDD-055 §3 | QG-007 | 🔵 |