---
url: https://docs.nemo12.com/intake/src-0350-0374.md
description: >-
  Sổ tiếp nhận nguồn yêu cầu SRC-0350 tới SRC-0374: mỗi dòng một nguồn, ngày
  nhận, tài liệu canonical đã ghi và trạng thái.
---

# Sổ nguồn SRC-0350 tới SRC-0374

Một mảnh của [sổ tiếp nhận](../intake.md). Chỉ CHÈN dòng bằng `node scripts/src-new.mjs`, không ghi đè cả file.

| ID | Ngày nhận | Nguồn | Canonical hóa vào | Trạng thái |
| --- | --- | --- | --- | --- |
| SRC-350 | 2026-08-19 | Feedback: 'button, chỗ nghĩ là đúng, thanh progress… nhìn không đồng nhất, xấu quá' | Màn làm bài đang có BA màu nhấn cùng lúc (coral · xanh dương · trắng-kem) nên không màu nào còn là nhấn. Đặt lại luật cho theme biển: coral = một hành động chính duy nhất; trắng/aqua = trạng thái; mọi mặt phẳng còn lại là kính. Màn làm bài cũng mang nền nước thay vì nền đen trơn | ✅ |
| SRC-351 | 2026-08-19 | Chỉ đạo: trang Hồ sơ và các trang còn lại (chọn school, trang school) phải dùng chung Design System | Hồ sơ chuyển thành trang TRONG app học (`/{school}/ho-so/{môn}`), cùng cột trái và theme; Root + SchoolHome mang `n12-deep`; hero thành vùng nước mặt. Sửa `--primary-foreground` về trắng — đặt màu sẫm làm tên trường trên hero tối đen | ✅ |
| SRC-352 | 2026-08-19 | Chỉ đạo: popover chưa có 'I will be able to…' của đúng Unit đó | Thêm cột `can_do` (migration 0054) + viết tay đủ **125/125 unit Toán**. DB chỉ có `objective_vi` — đó là CÂU HỎI cốt lõi kiểu IB, không phải lời hứa 'học xong con làm được gì'. Hiện ở cả popover đường đi lẫn dấu 'i' khi làm bài, đặt TRƯỚC câu hỏi cốt lõi | ✅ |
| SRC-353 | 2026-08-19 | Chỉ đạo: chỉnh màu trục số và nút 'Tiếp' | Hình vẽ dựng cho nền trắng nên mực đen chìm trên nền nước; chuyển ba màu trung tính + hai màu nhấn sang biến CSS để theme quyết định. Nút chính lúc chưa bấm được đổi từ `opacity` (ra vệt nâu đục) sang mặt kính có viền | ✅ |
| SRC-354 | 2026-08-19 | Chỉ đạo: tự động mở ô kế tiếp khi làm xong ô trước | Trước đây ô sau chỉ mở khi ô trước `completed`; hết bong bóng thì ghi `failed` và learner kẹt — làm xong rồi mà đường đi vẫn khoá. Tách hai việc: ĐÃ LÀM mở đường, ĐÃ ĐẠT mới tô màu và tính mức vững. Qua cả Unit vẫn phải Đo cuối/Học vượt đạt | ✅ |
| SRC-355 | 2026-08-19 | Feedback: 'chỉnh màu sắc chung nhé, khó nhìn quá' (ô tô sáng che chữ, hình học ra tấm giấy trắng) | Gốc chung: các màu NỀN NHẠT của theme sáng giữ nguyên giá trị nên trên nền nước thành mảng trắng đục. Đổi ba token `--n12-sun-100` · `--n12-seafoam-200` · `--n12-ocean-100` thành lớp trong suốt cùng sắc — mọi nơi dùng chúng (Tailwind bg-\*, fill trong hình vẽ) tự đúng theo | ✅ |
| SRC-356 | 2026-08-18 | Báo lỗi: **đăng nhập lần 2 thì hệ thống lại bắt tạo learner mới** | Truy ra chuỗi: nút "Tôi là bố mẹ" ở nemo12.com trỏ CỐ ĐỊNH vào `#/bat-dau` → route đó render `StartWizard` **vô điều kiện** → bước 1 của wizard gọi `createInvitation`, tức TẠO LEARNER MỚI. Bố mẹ quay lại bằng đúng cái nút đã dùng lần đầu (hoặc bookmark) là đẻ thêm một đứa con trùng. Sửa bằng **chặn ở marlins** chứ không phải đổi link ở web — bookmark và lịch sử trình duyệt vẫn trỏ vào đó: gia đình đã có con thì `#/bat-dau` hiện màn hỏi một câu, **Vào bảng của con** (mặc định) hoặc **Thêm một con nữa** (mở wizard, cờ `addingChild`). Không đá thẳng về trang chủ vì bố mẹ có con thứ hai thật sự cần lối này (WF-19 §8) | ✅ |
| SRC-357 | 2026-08-19 | Chỉ đạo: màn kết quả bỏ 'Trọn vẹn cả bài.' và 'còn 5/5 bong bóng'; 'Chọn bài khác' → 'Tiếp' và là nút chính; 'Luyện thêm' → 'Làm lại', bỏ style đỏ | Con số 10/10 đã nói thay câu khen dài; bong bóng là luật lúc ĐANG làm, xong rồi thì không nói được gì. Việc mặc định sau một bài xong là ĐI TIẾP, nên luyện thêm và làm lại đều xuống lối phụ | ✅ |
| SRC-358 | 2026-08-19 | Chỉ đạo: ô 'bắt đầu' phải bằng cỡ các ô khác, bấm vào không được làm mất chữ 'BẮT ĐẦU' | Quầng sáng đã nói 'đang ở đây' rồi, không cần to thêm một cỡ | ✅ |
| SRC-359 | 2026-08-19 | Chỉ đạo: cả màn chỉ có duy nhất một chữ 'bắt đầu'; unit còn lối học vượt thì ghi 'học vượt' | Mỗi unit đang mở tự gắn một nhãn nên cuộn xuống gặp ba bốn chữ 'Bắt đầu' — learner hết biết đâu là chỗ mình đứng. Nhãn nay do cha quyết định, chỉ unit đang học mới có | ✅ |
| SRC-360 | 2026-08-19 | Chỉ đạo: popover nền bị đè vào nhau, khó đọc | Popover dùng `--card` (kính 7%) nên chữ chồng lên đường học phía sau; kính hợp cho mảng lớn đứng yên, không hợp cho hộp chữ nhỏ nổi trên nội dung khác. Nay là mặt đặc màu nước sâu, viền sáng, bóng đổ rõ | ✅ |
| SRC-361 | 2026-08-19 | Chỉ đạo: click ra chỗ khác thì popover của ô phải đóng | Popover ô Experience là chỗ duy nhất còn thiếu luật này (popover unit và 'vì sao' đã có từ SRC-310) | ✅ |
| SRC-362 | 2026-08-19 | Câu hỏi: 'học vượt xong thì mọi lesson trong unit có được coi là done không?' | Đúng, và code đã làm vậy từ SRC-102 — nhưng chưa có test nào khoá. Bổ sung e2e: học vượt xong thì không ô nào còn khoá và mọi ô đều đeo dấu tích | ✅ |
| SRC-363 | 2026-08-19 | Chỉ đạo: có Unit vừa mở 'học vượt' vừa cho 'bắt đầu' lesson tiếp theo — không chấp nhận được; với một Unit chỉ có trường hợp duy nhất ô học vượt available. Kèm yêu cầu viết tài liệu mô tả logic hiển thị | Học vượt là CỬA VÀO của unit chưa học, không phải lối tắt luôn mở: unit còn khoá thì nó là ô duy nhất bấm được, unit đã mở thì nó biến mất. Tài liệu: [SDD-010 §9.1](../architecture/sdd-010-lab-platform/unit-path.md) — luật hiển thị và mở khoá bản hiện hành, kèm bảng tra nhanh luật ↔ nguồn ↔ test | ✅ |
| SRC-364 | 2026-08-19 | Feedback: 'vì sao quá trình kiểm tra lại lâu như vậy — tối ưu để gần như xong ngay lập tức' | Một lượt chấm đi SÁU chuyến khứ hồi D1 NỐI ĐUÔI. Nay: hai truy vấn độc lập chạy song song, hai truy vấn trong retention cũng song song, phát sự kiện đẩy ra `waitUntil` — bỏ được 3 nhịp chờ khỏi đường trả lời | ✅ |
| SRC-365 | 2026-08-19 | Chỉ đạo: cuối mỗi câu hỏi có thêm icon phản hồi như Duolingo; bấm 'Báo cáo' mở danh sách lý do | Ba lối: Quá dễ · Quá khó · Báo cáo, dùng endpoint `POST /v1/content/items/{id}/report` có sẵn, thêm hai lý do `too_easy`/`too_hard`. Không có ô nhập chữ — trẻ đang làm bài không nên phải viết luận để báo một câu hỏi hỏng | ✅ |
| SRC-366 | 2026-08-19 | Chỉ đạo: chọn đáp án xong thì nút đổi thành 'KIỂM TRA' | 'Tiếp' nói về việc đi chỗ khác; learner đang muốn biết đúng hay sai | ✅ |
| SRC-367 | 2026-08-19 | Chỉ đạo: trả lời đúng cần hiệu ứng tinh tế và nhanh hơn — bong bóng vỡ, kèm âm thanh nhỏ kiểu Duolingo | Sáu bong bóng nổi 1,2s → MỘT bong bóng phồng rồi vỡ trong 320ms; âm thanh hai nốt C6→E6 sinh bằng WebAudio, không kèm file (giữ luật zero-asset), tắt khi máy bật giảm chuyển động | ✅ |
| SRC-368 | 2026-08-19 | Chỉ đạo: bấm dấu nhân giữa bài thì mở popover hỏi lại | Bỏ dở là mất cả lượt — câu đã trả lời vẫn thành bằng chứng nhưng Experience không được ghi hoàn thành. Chỉ hỏi khi ĐANG DỞ; nút to là 'Học tiếp', 'Thoát' để dạng chữ | ✅ |
| SRC-369 | 2026-08-19 | Chỉ đạo: bổ sung hiệu ứng bong bóng nổi từ đáy biển lên mặt nước | CSS thuần, 8 span rỗng, chu kỳ 18-30s lệch pha nên bong bóng THƯA như bọt thật; opacity tối đa 0.18 để không đọc nhầm thành ô Experience; `pointer-events:none` + `aria-hidden`; tắt khi máy giảm chuyển động | ✅ |
| SRC-370 | 2026-08-19 | Làm nốt: câu 'I will be able to' cho Tiếng Việt | 125/125 unit Tiếng Việt đã có `can_do`, viết tay | ✅ |
| SRC-371 | 2026-08-19 | Làm nốt: items cho Tiếng Việt | 336 câu viết tay cho 56 node lớp 1-6; còn 34 node lớp 7-9 | 🔜 |
| SRC-372 | 2026-08-19 | Chỉ đạo: gọi khu vực này là 'La bàn' (Compass), không gọi 'Đường học'; nhãn 'Trở về đường học' → 'Xem la bàn' | Tên cũ mô tả HÌNH DẠNG (một con đường), tên mới mô tả VIỆC nó làm: chỉ learner đang ở đâu và nên đi hướng nào | ✅ 🗄️ (SRC-384 đảo) |
| SRC-373 | 2026-08-19 | Chỉ đạo: mỗi Unit cần có icon Lab, click vào thì lab mở ra | Lab gắn vào cây CŨ nên chỉ 1/125 unit b21 có lab. `/labs` nay trả kèm `unit`, client khớp theo node HOẶC tên unit, và `scripts/attach-labs-b21.mjs` gắn tay 52 lab vào unit b21 gần nhất về nội dung — 52/125 unit có Lab. Ràng buộc migration 0048 là MỘT lab một unit nên ánh xạ phải một-một | ✅ |
| SRC-374 | 2026-08-19 | Feedback: 'cứ sau một lúc thì một lesson lại bị biến mất' | Vòng bù cho đủ MIN_LEARN ô dùng `break` khi gặp khoá đã có — mà khoá ấy có vì learner vừa xong lượt trước nên vòng phía trên đã mọc `practice2`. Đổi thành `continue` | ✅ |
