PRD-001 · REQ: Gia đình và mentor: Marlins, Dolphins, Dory, Anchor, Portrait
Một mảnh của danh mục REQ PRD-001, gồm REQ-PAR, REQ-MEN, REQ-DOR, REQ-ANC, REQ-POR. 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-PAR — Marlins (app: marlins)
| ID | Yêu cầu | Ưu tiên | Nguồn | SDD | QG | Status |
|---|---|---|---|---|---|---|
| REQ-PAR-01 | "Giúp tôi hiểu con": giải thích trạng thái + nguyên nhân bằng evidence | M | SRC-006 Job1 | SDD-002 §13 | QG-005 | ✔ |
| REQ-PAR-02 | Actionable recommendation cho parent (tối nay/tuần này/tháng này) | M | SRC-006 Job2 | SDD-002 §13 | QG-005 | ✔ |
| REQ-PAR-03 | On-track view: Goal → Current → Gap → Trajectory → Expected | M | SRC-006 Job3 | SDD-008 §5 | QG-005 | ✔ |
| REQ-PAR-04 | Chống intervention error: recommendation nêu rõ cả "không nên làm gì" + trade-off | M | SRC-006 Job4, SRC-011 §8 | SDD-002 §13 | QG-005 | ✔ |
| REQ-PAR-05 | Parent Model (evidence + inferred tendency, không label phán xét) + parent observation/upload; niềm tin định kỳ theo môn do bố mẹ khai (mức lo lắng, điểm hình dung khi con đi thi thật, cảm nhận "đang hổng" hay "học tự tin", có tin đủ điểm đỗ không) lưu tách khỏi Evidence Registry và hiển thị cạnh ước tính của hệ để đối chiếu — màn marlins #/child/{id}/beliefs | M | SRC-003 §4, FEAT-030/031, SRC-051 | SDD-002 §4 | QG-005 | ✔ |
| REQ-PAR-06 | Depth trade-off explanation (target depth, current, cost để nâng) | M | SRC-011 §8 | SDD-002 §12 | QG-005 | ✔ |
| REQ-PAR-10 | Parent observations (ghi quan sát) → evidence + Parent recommendation "tuần này nên làm gì" kèm anti-intervention-error ("chưa cần thêm lớp") | M | SRC-006 Job4/5 | WF-12, SDD-002 §13 | QG-005 | ✔ |
| REQ-PAR-07 | Shared understanding layer: parent–learner–mentor nhìn cùng evidence | M | SRC-006 Job5 | SDD-005 §7 | QG-005 | ✔ |
| REQ-PAR-09 | Marlin xem báo cáo học tập của con tại marlins #/child/{id}/report: readiness, tiến độ theo school, toàn cảnh môn→area→node, thời gian học. Đây là mặt Marlins của REQ-VIS-07/08 — dùng lại cùng view + cùng API, cấm dựng bản báo cáo thứ hai cho phụ huynh | M | SRC-019 | SDD-008 §2-6 | QG-005/008 | ✔ |
| REQ-PAR-08 | Member-intelligence-style: evidence gaps → adaptive questions cho parent | S | FEAT-033, Q-040 | — | — | ⏳ |
| REQ-PAR-11 | Weekly plan cho Marlin: khuyến nghị → 2-3 nhiệm vụ có hạn trong tuần, đánh dấu hoàn thành | M | parent-jtbd JTBD-P3 | WF-12 | QG-005 | 🔵 |
| REQ-PAR-13 | Marlin duyệt các school + Whale (view mode) từ cổng phụ huynh | M | SRC-027, SRC-125, SRC-126 | SDD-011 | QG-007 | ✔ |
| REQ-PAR-12 | Parent digest định kỳ (tuần) qua notification/email: thay đổi đáng chú ý + 1 việc nên làm | S | parent-jtbd JTBD-P1/P3 | SDD-005 §5 | QG-009 | ⏳ |
| REQ-PAR-14 | Marlin khai tự nhiên (lịch thi, mục tiêu, "con bị ốm", "con sợ hình") → Context Event (source=parent .60) / Goal entry; định tuyến observation {skill evidence | context event | cả hai}; ngừng dual-write node-rỗng | M | SRC-032 | SDD-002 §5b, §13, WF-15 | QG-005/010 | ✔ |
| REQ-PAR-15 | Bố mẹ xem đúng Learning Plan của con (không có bản riêng) và khai thêm thông tin cho Planning Engine; mọi lời khai ghi rõ ai khai (con hay bố mẹ) | M | SRC-107 | SDD-007 §6b | QG-008 | ✔ |
| REQ-PAR-16 | Sự kiện cộng đồng ở marlins #/events: danh sách buổi sắp diễn ra (buổi đã diễn ra không nằm trong danh sách mặc định), mỗi buổi một URL riêng #/events/{id} mở ra mục tiêu · dành cho ai · lịch trình · địa điểm · chi phí · người đã đăng ký; giữ chỗ và bỏ chỗ, và backend từ chối đăng ký khi buổi đã huỷ, đã tới giờ bắt đầu, hoặc đủ số chỗ. Danh sách người đăng ký chỉ hiện tên, không hiện email hay điện thoại. Đây là mảng đầu tiên của Marlins không nói về một đứa con cụ thể, nên quyền là quyền trên chỗ ngồi của chính mình, không đi qua resolveLearnerAccess | M | SRC-122, SRC-139, SRC-709 | SDD-018 | QG-003/004/007/008 | ✔ |
| REQ-PAR-17 | Bố mẹ luôn biết việc cần làm tiếp: sau khi khai xong hồ sơ con, marlins #/ hiện đúng một việc kế tiếp cho mỗi con (nhãn + vì sao đáng làm + nút đi thẳng tới màn đó) kèm tiến độ x/y; trang #/next-steps giữ toàn bộ danh sách để bố mẹ bận rồi quay lại vẫn biết còn thiếu gì. Trạng thái suy từ dữ liệu thật (hồ sơ, lời mời, Portrait, mục tiêu, cảm nhận, evidence đầu tiên), KHÔNG có bảng tiến độ riêng — làm xong ở màn nào thì việc tự tắt. Chưa có con nào thì trả đúng một việc: mở wizard #/bat-dau | M | SRC-205, SRC-209 | WF-19 §4b | QG-005/008 | ✔ |
| REQ-PAR-19 | Chứng chỉ của con trên marlins (SRC-1331): trang của con có cụm "Chứng chỉ của con" (đếm đã có / sắp có), trang /child/{id}/certificates liệt kê chứng chỉ đã có và sắp có kèm phần còn lại, /child/{id}/certificates/{courseId} mở chứng chỉ in được. Chỉ đọc; quyền đi qua resolveLearnerAccess, nên bố mẹ chỉ thấy con trong gia đình mình. Cùng một luật suy ra như REQ-LRN-49 | M | SRC-1331 | SDD-004 §20 | QG-005/008 | ✅ đã dựng 10.10.2026 |
REQ-MEN — Dolphins (app: mentors)
| ID | Yêu cầu | Ưu tiên | Nguồn | SDD | QG | Status |
|---|---|---|---|---|---|---|
| REQ-MEN-01 | Dolphin portal dolphin.nemo12.com: mọi Dolphin (role mentor, nội bộ — Q-009) xem được mọi family, mọi Nemo — gate theo role ở backend + audit log; không còn giới hạn assignment (mentor_assignments giữ làm phân công theo dõi chính). Đường vào nghề của một Dolphin (cấp quyền → đăng nhập → phiên đầu tiên) đặc tả tại WF-18 | M | SRC-002 §13, SRC-021, SRC-037 | WF-06m, WF-18, SDD-001 §6 | QG-008 | ✔ |
| REQ-MEN-02 | Mentor notes với visibility (internal_staff / mentor_team / learner-visible) | M | SRC-007 | SDD-005 §4 | QG-008 | ✔ |
| REQ-MEN-03 | Mentor interaction ghi thành evidence (MentorInteractionRecorded) | M | SRC-002 §2.3 | SDD-002 §5 | QG-005 | ✔ |
| REQ-MEN-06 | Dolphin portal: dashboard theo sát learners được giao (readiness, hoạt động gần đây, gap) + drill vào cockpit/overview/progress từng learner | M | SRC-021 | WF-06m, SDD-008 | QG-008 | ✔ |
| REQ-MEN-07 | Hồ sơ Mentor & Advisor quản lý trong Dolphin: tên, ảnh chân dung, một dòng giới thiệu, nơi học/làm hiện tại, môn phụ trách, tiểu sử ba bản (gốc · dành cho bố mẹ · dành cho học sinh), vòng đời draft → published → archived. Advisor không bắt buộc có tài khoản (user_id NULL) vì cố vấn thường không dùng cổng làm việc | M | SRC-201 | SDD-019 §3 | QG-004/007/008 | ✔ |
| REQ-MEN-08 | Bằng chứng cựu học sinh trường chuyên là dữ liệu có cấu trúc — trường · lớp chuyên · năm tốt nghiệp · cờ xác minh (ai xác minh, lúc nào, dựa vào gì) — không phải câu văn tự do; hồ sơ thiếu bất kỳ mảnh nào hoặc chưa xác minh thì không publish được (API chặn, không chỉ nhắc trên UI); con số công khai ("N mentor · N cựu học sinh chuyên · N trường") đếm từ dữ liệu chứ không viết cứng trong giao diện; ghi chú xác minh là nội bộ, không lọt ra API công khai | M | SRC-201 | SDD-019 §4 | QG-004/008 | ✔ |
| REQ-MEN-09 | Photo albums quản lý trong Dolphin: album (slug, ảnh bìa, thứ tự, vòng đời, gắn mentor/advisor có mặt trong album) + ảnh trong album (alt text bắt buộc, chú thích, thứ tự); tải ảnh lên trực tiếp từ cổng | M | SRC-201 | SDD-019 §5 | QG-004/007/008 | ✔ |
| REQ-MEN-11 | Family Workspace trong Dolphin: mentor xem được danh sách từng gia đình (bố mẹ + các con) và mở ra hồ sơ một nhà; mentor tự tạo được gia đình kể cả khi thiếu thông tin (một liên hệ chỉ cần một trong ba: họ tên, điện thoại, email). Con do mentor tạo là learners thật ở status='invited' (Q-149). Quyền xem là mọi mentor xem mọi nhà như REQ-MEN-01, và mỗi lượt mở một nhà ghi một dòng audit_log (Q-141) | M | SRC-584 | SDD-023 §2-3, §8 | QG-004/008 | ✔ |
| REQ-MEN-12 | Người chưa có tài khoản vẫn có hồ sơ: bảng liên hệ riêng với user_id cho phép NULL, không sinh hàng users nào (Q-142); lưu điện thoại/Zalo, nghề nghiệp, nơi làm việc, địa chỉ, quận huyện (Q-148). Khi tài khoản thật đăng nhập, hệ gợi ý nối theo trùng email hoặc theo việc người đó đã ở trong nhà này, mentor bấm duyệt — máy không tự gộp (Q-143). Sau khi nối, mentor không đè được tên và ảnh do chính chủ đặt; hai lớp dữ liệu hiện cạnh nhau (Q-144) | M | SRC-584 | SDD-023 §3-4 | QG-004/008 | ✔ |
| REQ-MEN-13 | Ghi chú theo gia đình: dùng lại interactions với target_type='family' và đúng thang visibility của ghi chú learner, mặc định internal_staff, nâng lên được khi ghi (Q-145). Không dựng bảng note thứ hai | M | SRC-584 | SDD-023 §5 | QG-008 | ✔ |
| REQ-MEN-14 | Ảnh của gia đình: mỗi ảnh có caption · description · thời gian chụp · vị trí là bốn cột riêng; taken_at do người nhập khai (không đọc EXIF), location là ô chữ tự do chứ không phải toạ độ (Q-147). Ảnh luôn ở media.visibility='internal', không có tham số nào trong luồng này đặt được public (Q-146); GET /v1/media/{id} với ảnh internal đòi phiên đăng nhập + vai nội bộ và trả Cache-Control: private, no-store. Lưu trữ thay cho xoá (Q-150) | M | SRC-584 | SDD-023 §6-7 | QG-004/008 | ✔ |
| REQ-MEN-15 | Danh sách chính của Dolphin xếp theo GIA ĐÌNH, không phải theo learner rời: mỗi thẻ có tên bố mẹ ở dòng trên, tên các con ở dòng ngay dưới; không có tiêu đề trang và không có nhãn "Quan sát" trên thẻ. Mỗi gia đình có một hoặc nhiều Dolphin chăm sóc; mỗi Dolphin tự đánh dấu "tôi chăm nhà này" và tự bỏ (khác mentor_assignments vốn ở tầng learner và do admin giao). Bộ lọc gồm hai ô: "nhà tôi chăm" và "nhà chưa ai chăm", mặc định bật cả hai, bỏ chọn cả hai thì hiện tất cả | M | SRC-585 | SDD-023 §11 | QG-004/007/008 | ✔ |
| REQ-MEN-16 | Toàn bộ giao diện dolphin bằng tiếng Anh, không còn chuỗi tiếng Việt nào hiển thị cho người dùng — kể cả đường dẫn (/families, /team, /albums, /testimonials, /schools), thông báo lỗi của các endpoint chỉ dolphin dùng, và danh sách lý do chưa publish. Đường dẫn tiếng Việt cũ vẫn mở được, đổi lặng sang đường mới. Ngoại lệ có chủ đích: tên riêng tiếng Việt trong ví dụ gợi ý (tên trường, tên tỉnh) giữ nguyên vì đó là dữ liệu thật. Thẻ mentor ở danh sách Team chỉ còn một link sang /team/{id}; mọi thao tác chuyển sang trang riêng đó | M | SRC-586 | SDD-023 §12 | QG-007 | ✔ |
| REQ-MEN-17 | Buổi học cùng Dolphin theo khung giờ: Teacher mở các khung lặp hàng tuần (mặc định CN 10:00-12:00, CN 15:00-17:00, tối T2 và T4 20:00-22:00) kèm sức chứa và link Google Meet lưu trên hệ thống; learner khai nguyện vọng nhất và nhì trong đúng các khung đã mở (khai nguyện vọng KHÁC với đăng ký buổi); ghi tên một buổi cụ thể phải trước 48 giờ tính tới giờ bắt đầu, để Teacher kịp chuẩn bị; link phòng chỉ tới tay learner đã ghi tên buổi đó. Điểm danh vẫn thuộc REQ-MEN-04, chưa làm | M | SRC-733 | SDD-034 §1-§5 | QG-003/008 | ✔ |
| REQ-MEN-18 | Buổi học trực tiếp (Live Session): mentor mở một phòng có mã bốn chữ số 1000-9999 (SRC-906; một mã chỉ trỏ tới một phòng chưa kết thúc); learner vào bằng mã, và có mặt đo bằng last_seen_at chứ không bằng một cờ online. Màn mentor hiện nguyên văn check-in đầu buổi (mood + bốn thang 1-5: sức lực, hào hứng, mục tiêu còn đúng, tốc độ có ổn + hai ô chữ trong đó có điều đang chặn learner) và tiến độ hành trình IELTS của từng người (đã xong bước nào, còn bước nào), đọc từ readPathway qua một endpoint riêng vì nó là N+1. Cuối buổi learner viết 4F Reflection; nộp được cả sau khi buổi đóng. Ván đấu mười câu do mentor giữ nhịp: đáp án và câu giải thích chỉ rời server khi câu đã đóng, mỗi người trả lời mỗi câu đúng một lần (ràng buộc ở schema), điểm = 600 đúng + tối đa 400 tốc độ nên trả lời đúng chậm luôn hơn trả lời sai nhanh. Đồng bộ bằng hỏi-lại (2,5-3 giây), không WebSocket | M | SRC-893 | SDD-040 §3-§6 | QG-003/008 | ✔ |
| REQ-MEN-19 | Khu cấu hình mở khoá IELTS trong Dolphin: (a) mặc định toàn hệ ở /ielts-unlock - thứ tự bốn kỹ năng, số ngày chờ, điều kiện tiên quyết; (b) trong hồ sơ từng learner - trạng thái bốn kỹ năng, lý do đang khoá, nút mở sớm bắt buộc kèm một dòng lý do. Mọi lần mở/khoá ghi audit_log; giao diện tiếng Anh theo REQ-MEN-16 | M | SRC-859 | SDD-038 §58f | QG-008 | ⏳ pending-confirm (Q-157) |
| REQ-MEN-20 | Hồ sơ mentor đầy đủ trong dolphin (SRC-1215): xem chi tiết từng mentor; ảnh chân dung mặc định chọn từ kho ảnh; mọi ảnh khác của mentor lấy theo người trong ảnh; mentor tự tải và sửa của mình, staff/admin phân phối và kiểm chứng | M | SRC-1215 | SDD-053 §4, §7 | QG-004/008 | ⏳ thiết kế đã chốt, chưa dựng |
| REQ-MEN-21 | Chứng chỉ, thành tích thi, báo chí của mentor (SRC-1215): mục có cấu trúc (loại, tên, năm, đơn vị cấp hoặc tên báo, link nguồn, ảnh, đã kiểm chứng); chỉ hiện công khai khi đã kiểm chứng và có link nguồn | M | SRC-1215 | SDD-053 §4, §6 | QG-004/008 | ⏳ thiết kế đã chốt, chưa dựng |
| REQ-MEN-22 | Duyệt và sửa nội dung AI Teen trong Dolphin (SRC-1284): cây course > unit > lesson > Activity/Bước/cổng đọc; mọi trang chỉ đọc mặc định, "Sửa" đổi thành "Lưu"/"Huỷ" tại chỗ; D1 là nguồn sự thật (bản nháp, version chỉ chèn, phát hành theo course, rollback bằng con trỏ), learn đọc bản phát hành lúc chạy và giữ bản chụp sinh ra trong repo; một module luật kiểm hợp lệ dùng chung cho API và CI; sửa cần phạm vi editor, phát hành cần staff, rollback cần admin; mọi lượt ghi vào audit_log | M | SRC-1284 | SDD-056 §2-§11 | QG-004/005/008 | ⏳ thiết kế đã chốt, chưa dựng |
| REQ-MEN-04 | Class operations: lớp, lịch, link buổi học, điểm danh | S | FEAT-011..013, Q-045, Q-119 | — | — | ⏳ |
| REQ-MEN-05 | Mentor review & feature bài làm xuất sắc | S | FEAT-020, Q-047 | — | — | ⏳ |
| REQ-MEN-10 | Dolphin có khu rà soát chất lượng từng Experience và từng step: mentor bấm một hai nhãn rồi xác nhận, experience bị đánh dấu nghiêm trọng thì tự rút khỏi luồng learner cho tới khi sửa | S | SRC-415 | SDD-013 | QG-006 | ✔ |
REQ-DOR — Dory: Family Relationship Management (SRC-587)
Philosophy never forget the family. Đặc tả đầy đủ: PRD-003, SDD-024.
| ID | Yêu cầu | Ưu tiên | Nguồn | SDD | QG | Status |
|---|---|---|---|---|---|---|
| REQ-DOR-01 | Family 360: một màn duy nhất gom mọi thứ đã biết về một nhà, thứ tự khối cố định theo thứ tự câu hỏi mentor thật sự hỏi (ai · đang lo gì · đang nợ gì · gần đây có gì · muốn gì) | M | SRC-587 | SDD-024 §3 | QG-007/008 | 🔵 |
| REQ-DOR-02 | Family Timeline: MỘT dòng thời gian gộp mọi loại sự kiện (interaction · milestone · note · case đóng), lọc theo loại; không tách thành nhiều tab | M | SRC-587 | SDD-024 §2 | QG-007 | ⏳ |
| REQ-DOR-03 | Interaction Capture: ghi một lần chạm với gia đình trong dưới 60 giây, đúng ba ô bắt buộc (loại · thời điểm · tóm tắt một dòng); key_points mỗi dòng một ý để trích lại được | M | SRC-587 | SDD-024 §4 | QG-007 | 🔵 |
| REQ-DOR-04 | Family Context = note + tag, MỘT bảng (SRC-588, chưa dựng): dự định đúng một bảng family_notes; mỗi note gắn 0, 1 hoặc nhiều tag từ danh sách đóng mười tag (parent child · pain jtbd event goal · fact opinion hypothesis · key); không có nhóm loại trừ, không cho gõ tag mới ở đợt đầu. Reply đúng một tầng (reply_to_id chỉ trỏ note gốc). Note zero tag chính là hộp vào. Đầu trang có bộ lọc mặc định chọn sẵn vài tag, và một nút gợi ý thêm/bớt tag bằng AI — chỉ đề xuất, kèm lý do từng tag, người bấm duyệt, ghi lại tỉ lệ chấp nhận | M | SRC-587, SRC-588 | SDD-024 §2, family-notes-review §10d-10f | QG-005/008 | 🔵 |
| REQ-DOR-05 | Family Signals: 5 luật phát hiện chạy trong cron (lo lắng lặp lại · tin nhắn chưa trả lời · tương tác giảm · lâu không liên lạc · nhà chưa ai chăm). Cột reason NOT NULL — cảnh báo không nói được vì sao thì người nhận chỉ còn hai lựa chọn: tin mù hoặc tắt đi. Dismiss được và lần dismiss được ghi lại | M | SRC-587 | SDD-024 §5 | QG-005 | ⏳ |
| REQ-DOR-06 | Relationship Summary đọc trong hai phút, sinh từ Family Model theo khung cố định, mỗi câu truy được về một bản ghi. Chưa dùng AI viết tự do ở đợt này | M | SRC-587 | SDD-024 §6 | QG-005/010 | ⏳ |
| REQ-DOR-07 | Family Journey — bảy bước, theo TỪNG NGƯỜI: unknown → met → exploring → tried → engaged → trusting → advocating, gán cho mỗi liên hệ và mỗi learner chứ không cho cả gia đình (các thành viên cùng nhà ở những chỗ rất khác nhau). Không phải phễu bán hàng, không sinh điểm số | M | SRC-589 | SDD-026 §1-2 | QG-005/008 | 🔵 | | REQ-DOR-08 | Hệ suy ra tối đa tới bước 5, luôn kèm câu giải thích vì sao; bước 6 và 7 (trusting, advocating) chỉ lên khi có người bấm xác nhận — máy nhìn được hành vi, không nhìn được niềm tin. Mỗi bước có đúng một điều kiện quan sát được để lên bước kế tiếp, và bước gợi ý luôn là bước liền sau, không nhảy cóc | M | SRC-589 | SDD-026 §3-4 | QG-005 | 🔵 | | REQ-DOR-09 | Chỉ lưu bước đã được người xác nhận (family_journey, 6 cột); bước hệ suy ra tính tại chỗ, không lưu. Lịch sử không có bảng riêng: mỗi lần xác nhận ghi một note gắn event vào family_notes. Lùi bước là bình thường, ghi lại không kèm phán xét, và không bao giờ hiện cho gia đình | M | SRC-589 | SDD-026 §5-7 | QG-004/008 | 🔵 |
REQ-ANC — Anchor: Case & Commitment Management (SRC-587)
Philosophy never lose the commitment. Đặc tả đầy đủ: PRD-003, SDD-025.
| ID | Yêu cầu | Ưu tiên | Nguồn | SDD | QG | Status |
|---|---|---|---|---|---|---|
| REQ-ANC-01 | Case có vòng đời open → in_progress → waiting_family ⇄ in_progress → resolved → closed, mở lại được và đếm số lần mở lại. waiting_family là trạng thái RIÊNG vì đồng hồ SLA dừng ở đó | M | SRC-587 | SDD-025 §2-3 | QG-004/008 | ⏳ |
| REQ-ANC-02 | Commitment: mọi lời hứa có owner_user_id và due_at NOT NULL, lưu nguyên văn điều đã hứa chứ không phải bản tóm tắt; sống độc lập với case (nhiều lời hứa không thuộc vấn đề nào). missed là trạng thái hợp lệ | M | SRC-587 | SDD-025 §4 | QG-004 | ⏳ |
| REQ-ANC-03 | Action: chia case thành việc cụ thể, mỗi việc có người nhận và trạng thái riêng | M | SRC-587 | SDD-025 §2 | QG-004 | ⏳ |
| REQ-ANC-04 | SLA: hạn tính theo category × priority từ config (không rải trong mã); cảnh báo ở mốc 80% thời gian, tức trước khi trễ; đồng hồ dừng khi waiting_family; sửa due_at phải để lại vết | M | SRC-587 | SDD-025 §5 | QG-005 | ⏳ |
| REQ-ANC-05 | Follow-up: mỗi resolution tự đặt một lần kiểm lại (+14 ngày, billing +7); ba kết cục confirmed_ok/reopened/gia hạn một lần, không có nút bỏ qua | M | SRC-587 | SDD-025 §7 | QG-005 | ⏳ |
| REQ-ANC-06 | Escalation tự động theo luật (quá hạn 24h/72h, commitment lỡ hẹn, case urgent chưa ai nhận sau 4h), mỗi lần ghi vết. Dữ liệu này không dùng để xếp hạng Dolphin | M | SRC-587 | SDD-025 §8 | QG-005/008 | ⏳ |
| REQ-ANC-07 | Resolution Evidence: không chuyển sang resolved được nếu thiếu resolution_note và ít nhất một bằng chứng (action done · commitment kept · interaction gắn case). Có đường đóng ngoại lệ [no-evidence], và các case đó hiện thành một mục riêng chứ không lẫn vào phần đã đóng | M | SRC-587 | SDD-025 §6 | QG-004/008 | ⏳ |
| REQ-ANC-08 | Audit Trail: case_events (vết nghiệp vụ, đọc được trên màn hình) tách khỏi audit_log (vết truy cập, AS-07.4); cả hai chỉ nối thêm, không có đường sửa/xoá trong ứng dụng | M | SRC-587 | SDD-025 §9 | QG-008 | ⏳ |
REQ-POR — Student Portrait & Family Future Planning (SRC-040)
Shared future model: Marlin + Nemo cùng tạo/thảo luận chân dung tương lai. Portrait = aspiration input, không phải mệnh lệnh cho Recommendation.
| ID | Yêu cầu | Ưu tiên | Nguồn | SDD | QG | Status |
|---|---|---|---|---|---|---|
| REQ-POR-01 | Portrait entity: tối đa 3 active/parent/learner (3 scenario compare–discuss–refine); sections (academic/capabilities/interests/languages/sports/creative/personal dev/lifestyle/experiences/career); version history; archive không hard-delete | M | SRC-040 | SDD-015 §2 | QG-005/008 | ✔ |
| REQ-POR-02 | Milestones độc lập, link Portrait: kinds exam/academic/capability/language/habit/portfolio/experience/personal; target + date + expected + actual + status + confidence | M | SRC-040 | SDD-015 §3 | QG-005 | ✔ |
| REQ-POR-03 | External activities (guitar, tiếng Trung, chess…): learner_interest và parent_support lưu riêng theo người khai, cấm auto-merge; là một phần learner context | M | SRC-040 | SDD-015 §4 | QG-005/008 | ✔ |
| REQ-POR-04 | Family collaboration: view/vote/react/comment/reply per portrait/goal/milestone/activity qua Interaction System; edit + version history | M | SRC-040 | SDD-015 §5 | QG-007/008 | ✔ |
| REQ-POR-05 | Alignment parent ↔ learner ↔ reality (High/Medium/Low, bảng per-dimension) — chỉ ra chủ đề cần trao đổi, không phán xét, không auto-resolve conflict | M | SRC-040 | SDD-015 §6 | QG-005 | ✔ |
| REQ-POR-07 | Portrait là aspiration input cho Goal Model/Planning/Recommendation — không override; Planning Engine đề xuất milestone, phát hiện phi thực tế, reschedule, tính khoảng cách tới Portrait | M | SRC-040 | SDD-015 §8 | QG-005 | ✔ |
| REQ-POR-08 | Nemo luôn xem được Portrait về mình và phản hồi agree/unsure/disagree từng phần | M | SRC-040 | SDD-015 §1,§5 | QG-008 | ✔ |
| REQ-POR-09 | Hai cột trong mỗi mục lớn: cột bố mẹ viết và cột con tự viết (bản của riêng con), tên mục dùng chung. Chỉ chính Nemo được ghi cột của mình (bố mẹ đọc được, không viết hộ); phản hồi agree/unsure/disagree rút thành icon đặt ngay dưới từng mục | M | SRC-106 | SDD-015 §2,§5 | QG-008 | ✔ |
| REQ-POR-06 | Form Student Portrait hỏi TỪNG trường một kiểu TypeForm, không đổ hết ra cùng lúc; mỗi trường có ví dụ mẫu để trẻ biết viết gì | S | SRC-254 | SDD-015 | QG-007 | ✔ |
| REQ-POR-10 | Portrait có TRACK dài hạn xuyên nhiều năm (kiểu epic), milestone gắn vào track chứ không trôi nổi rời rạc. Chứng chỉ quan trọng như IELTS/SAT có nhịp thi riêng, không nhét chung vào lịch học kỳ | S | SRC-052 | SDD-015 | QG-005 | ✔ |
| REQ-POR-11 | Trang Hồ sơ mặc định chỉ đọc, có nút Edit mới sửa được; dữ liệu validate ngay tại client, chặn năm sinh và tên trường vô nghĩa trước khi gửi đi | S | SRC-326, SRC-327 | SDD-015 | QG-007 | ✔ |