Sổ nguồn SRC-0325 tới SRC-0349
Một mảnh của sổ tiếp nhận. 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-325 | 2026-08-18 | Chỉ đạo: tag 'Bắt đầu' cần nảy nảy bên trên icon | Chuyển động là thứ mắt bắt trước cả màu và chữ; biên độ 4px, tắt khi hệ điều hành bật giảm chuyển động | ✅ |
| SRC-326 | 2026-08-18 | Chỉ đạo: trang Hồ sơ mặc định read-only, có nút Edit mới được sửa | Form mở sẵn mời gõ nhầm, mà lớp và ngày sinh là đầu vào bộ chọn bài | ✅ |
| SRC-327 | 2026-08-18 | Chỉ đạo: validate ngay tại client, chặn năm sinh và tên trường vô nghĩa | Ảnh thật: ngày sinh 22/12/1223, trường 'dcsdsc', tỉnh 'dfvfdvvfd' đều lọt vì chỉ có required; thêm profile-validate.ts + 5 test | ✅ |
| SRC-328 | 2026-08-18 | Feedback: 'các icon experience quá gần nhau, ô trên cùng quá sát lề top' | Bong bóng 'Bắt đầu' nảy phía trên ô nên gap-3 là chạm ô trên; nới gap-6 + pt-4 | ✅ |
| SRC-329 | 2026-08-18 | Feedback: 'làm xong Unit Powers and roots rồi không thấy Unit đó ở đâu nữa' | Phần mặc định suy từ LỚP nên learner lớp 8 luôn rơi vào Phần 4 dù đang học dở Phần 1; nay mặc định là Phần chứa unit đang học dở | ✅ |
| SRC-330 | 2026-08-18 | Feedback: 'sao chỉ có 2 phần? cần 5-10 phần chứ, có threshold ở đâu đó' | Đường học lọc theo LỚP nên lớp 8 chỉ còn 21 unit → 2 Phần; nay trải cả môn (125 unit → 10 Phần), lớp chỉ quyết định chỗ bắt đầu; trần Phần 5 → 10 | ✅ |
| SRC-331 | 2026-08-18 | Chỉ đạo: hệ thống cần biết learner đang đứng ở Phần nào, bỏ link 'tới phần đang đứng' | Phần đang đứng ghi 'con đang ở đây', có viền, không còn nút dẫn tới chính nó | ✅ |
| SRC-332 | 2026-08-18 | Chỉ đạo: bỏ tên tiếng Anh cạnh tên Unit khi làm bài; thêm dấu i góc dưới phải mở Package/Module/Unit + mục tiêu + vì sao quan trọng | Xem commit tương ứng trên main | ✅ |
| SRC-333 | 2026-08-18 | Chỉ đạo: mỗi Experience tối đa 2 lần hỏi 'con tự tin tới mức nào' và tối đa 2 lần 'vì sao con chọn đáp án đó' | Hiệu chuẩn hai mẫu là đủ; hỏi mãi thì learner bấm cho xong, dữ liệu bấm-cho-xong tệ hơn không có dữ liệu | ✅ |
| SRC-334 | 2026-08-18 | Chỉ đạo: lịch thi kẻ bảng, cột cuối là 'Mục tiêu' (mấy điểm), cạnh ngày có số tuần/ngày còn lại | Bốn kỳ thi trước đây là bốn cụm chữ trôi nổi, mắt không so được kỳ nào gần hơn; bảng thì mọi ngày thẳng một cột | ✅ |
| SRC-335 | 2026-08-18 | Feedback: 'vừa đổi ngày thi nhưng Goal Model không thấy thay đổi gì; rà soát và fix để các model chạy thật' | HAI lỗi: (1) màn Lịch thi ghi vào learner_goal_dates còn mọi engine chỉ đọc semester_exam_schedule — bảng đời đầu, 2 dòng; (2) PATCH /goal-dates không kích engine. Thêm shared/examDates.ts đọc cả hai bảng cho goal · planning · constraint · retention · knowledge, và gọi updateLearnerModelInBackground sau khi sửa ngày | ✅ |
| SRC-336 | 2026-08-18 | Chỉ đạo: mỗi dòng kèm 'x mins ago / x hours y mins ago / x days ago', cái nào tính bằng phút hoặc giờ thì tô đỏ | since() nay ghi cả giờ lẫn phút; thêm <Since> tô đỏ mốc dưới 24 giờ | ✅ |
| SRC-337 | 2026-08-18 | Feedback: 'đã sửa ngày thi mà Goal Model vẫn chưa update' (sau SRC-335) | Nguyên nhân thứ hai: updateLearnerModelInBackground chỉ chạy Learner Model + Readiness, không chạy goal/context/constraint/planning — nên mọi hot path đều bỏ qua chúng, chỉ 'Run engines now' mới chạy. Đổi ngày thi nay gọi runModelUpdateWorkflow trọn vẹn | ✅ |
| SRC-338 | 2026-08-18 | Chỉ đạo: dọn trang Lịch thi — bỏ thẻ 'Chưa có mục tiêu nào', đổi tên cụm thành 'Lịch thi học kỳ', bỏ hai dòng chú thích và nút 'Quay lại' | Trang chỉ còn một việc: xem và sửa ngày thi | ✅ |
| SRC-339 | 2026-08-18 | Chỉ đạo: Goal/Context/Constraint Model phải TỰ update khi có thông tin liên quan, không phụ thuộc bấm tay | Thêm runAllModelsInBackground; xong một Experience và sửa ngày thi nay chạy cả bảy engine ở nền. Đường mỗi-câu-trả-lời vẫn chỉ Learner + Readiness vì goal/context/constraint không đổi theo một câu | ✅ |
| SRC-340 | 2026-08-18 | Feedback: 'vô lý, sao lại là 11/10?' | Một câu bị gửi hai lần nên đếm hai lần; cửa mở từ SRC-333 (bấm 'Tiếp →' nay gửi bài luôn khi hết hạn mức hỏi) vì answeredOnce chỉ đặt sau khi API trả lời. Chốt bằng sổ id đã gửi (sentIds) | ✅ |
| SRC-341 | 2026-08-18 | Feedback: 'làm xong một Experience rồi mà hệ thống không cập nhật là đã hoàn thành, vẫn bắt làm lại' | Vào bài bằng deep link thì expKey bị bịa theo mẫu practice:<node_id>, còn ô trên đường đi mang khoá của slot — ghi xong không ô nào đọc. Nay tra đúng ô trong unitPath rồi mượn khoá của nó | ✅ |
| SRC-342 | 2026-08-18 | Chỉ đạo: có trang thể hiện Learning Plan, đóng vai phụ huynh đặt 3-5 câu hỏi rồi chỉnh cho cả learner lẫn parent dễ hiểu; bổ sung menu item | Năm câu của phụ huynh: học gì · thứ tự nào · vì sao thứ tự đó · có kịp không · TUẦN NÀY làm gì · kế hoạch đã đổi gì. Model thiếu hai thứ cuối → thêm this_week[] (kèm node_id để bấm thẳng tới bài) và phases[].progress. Trang /{school}/ke-hoach/{môn} + menu 'Kế hoạch'; MỘT trang cho cả hai người đọc, không có bản riêng cho phụ huynh | ✅ |
| SRC-343 | 2026-08-18 | CI đỏ: AS-04.1.1 báo migration trùng số 0046 | 0046_context_event_temporal.sql trùng số với 0046_mentor_profiles_albums.sql; đổi tên sang 0052. Bản 0046 ĐÃ chạy production và migration này có DROP TABLE không chép dữ liệu → ghi thẳng tên mới vào d1_migrations như đã áp dụng, để nó không chạy lại làm mất bảng context | ✅ |
| SRC-344 | 2026-08-18 | Chỉ đạo: chỉnh từng thẻ Phần theo mẫu Duolingo | Mẫu có bốn thứ bản cũ thiếu: thanh tiến độ %, một câu 'con sẽ làm được gì', nút hành động rõ ở phần đang học, ổ khoá + số bài ở phần chưa mở. Giữ SRC-280: KHÔNG có 'nhảy tới phần' — học vượt chỉ ở cấp Unit | ✅ |
| SRC-345 | 2026-08-18 | Chỉ đạo: popover dấu hỏi phải nói pains + hậu quả nếu không học, benefits 'ngay tí nữa' và 'mai ngày kia', kèm ví dụ trẻ hiểu được | Ba cột mới why_pain · why_gain · why_example (migration 0053); viết tay 26 unit lớp 1-3 — đâ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ói. Hiện ở cả popover đường đi lẫn dấu 'i' khi đang làm bài | ✅ |
| SRC-346 | 2026-08-18 | Lấp nốt 50 node lớp 4-9 chưa có bài (nợ từ SRC-322) | 300 câu viết tay chia ba đợt (g4-5: 84 · g6-7: 90 · g8-9: 126). Nay MỌI node b21 môn Toán đều có ≥6 câu — 177 node, 2.577 items | ✅ |
| SRC-347 | 2026-08-19 | Đưa Tiếng Việt lên chuẩn ≥5 module/package và ≥5 unit/module (như Toán, SRC-319) | Trước: 5 pkg · 17 module · 39 unit. Sau: 5 pkg · 25 module · 125 unit (+8 module, +89 unit) — bằng đúng quy mô cây Toán. Pearl đồng bộ bằng scripts/pearl-b21-van-fill.mjs | ✅ |
| SRC-348 | 2026-08-19 | Chỉ đạo: đổi giao diện app học sang kiểu biển sâu (ảnh 1); Learning Experience đại diện bằng bong bóng trong suốt (ảnh 2) | Đè token trong .n12-deep nên mọi component tự đổi — không sửa từng file, đúng cách đã dùng cho .theme-*. Bảng màu theo loại việc (TILE_HUE) và màu-theo-unit của ô đã xong (SRC-294) nghỉ hưu: bong bóng phân biệt nhau bằng ĐỘ SÁNG, không bằng màu tô | ✅ |
| SRC-349 | 2026-08-19 | Chỉ đạo: chỉnh màu theo ảnh — nền xanh sẫm | Nền TRANG về navy rất sẫm gần đen, cột trái tối hơn nữa; dải xanh nước chuyển vào riêng TẤM đường học (.n12-water). Tô cả trang bằng xanh nước như bản trước làm màn sáng đều một mảng, mất chiều sâu và chữ trắng thì chói | ✅ |