---
url: https://docs.nemo12.com/intake/src-0675-0699.md
description: >-
  Sổ tiếp nhận nguồn yêu cầu SRC-0675 tới SRC-0699: 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-0675 tới SRC-0699

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-675 | 2026-09-04 | Chủ dự án 2026-09-04: mọi email phải có nền đẹp như bản inactivity-nudge, mọi email BCC về dac2205@gmail.com, và cần tài liệu mô tả các loại email | docs/reference/emails/rules.md | ✅ |
| SRC-676 | 2026-09-04 | Chỉ đạo 2026-09-04: testimonials hai lớp (trích dẫn + câu chuyện dài kiểu k12.com/day-in-the-life), trang /stories chung, nhúng vào trang IELTS · Toán 6-7 · About; quản trị ở dolphin với hai trục trạng thái (nội dung: lưu tạm/hoàn thành; hiển thị: private/public); nội dung mẫu hư cấu + ảnh placeholder để xem trước | SDD-029 (IA trang công khai) + SDD-019 §8 (showcase/testimonials) | ✅ |
| SRC-677 | 2026-09-04 | Chỉ đạo chủ dự án 2026-09-04 (ảnh chụp màn hình): nút 'Bắt đầu học' ở sidebar trang khoá bố mẹ nhìn xấu; chế độ học của khoá bố mẹ phải theo khung learn.nemo12.com (panel trái tối, mục lục trong bài, viên nút 'Đọc xong cụm này' / 'Tôi đã hoàn thành') | docs/design-system/index.md | ✅ |
| SRC-678 | 2026-09-04 | Chỉ đạo chủ dự án 2026-09-04 — lịch học cho learner, phụ huynh, mentor | PRD-001 REQ-CAL-01..04 / SDD mới | ✅ |
| SRC-679 | 2026-09-05 | Chi dao chu du an 2026-09-05: hoc sinh tu login learn.nemo12.com, moi khoa cho hoc thu mot lesson dau tien, khu Dictation vao luyen thoai mai | [SDD-032](../architecture/sdd-032-curriculum-access.md) + PRD-001 REQ-TRI-01..05 + docs/reference/errors.md | ✅ |
| SRC-680 | 2026-09-05 | Chỉ đạo: gộp quản lý khoá học Nemo + Marlins vào một khu vực trong Coral (cấu trúc Course/Unit/Lesson y hệt nhau); làm lần lượt 3 bước: đưa khoá bố mẹ vào D1, một tab Khoá học duy nhất, cho sửa inline | [SDD-013](../architecture/sdd-013-coral-content-plane.md) §Tab Khoá học; migration 0203; `modules/coral/courses.ts` + 13 behavior test; `apps/coral/src/Courses.tsx`; `gen-parent-courses.mjs` + `pull-parent-courses.mjs` + cổng `check-parent-courses.mjs` | ✅ |
| SRC-682 | 2026-09-07 | Chủ dự án 2026-09-07: cần ~10 email gửi bố mẹ (tự quyết loại/lúc gửi/trigger), UI đồng nhất, mọi email CC dac2205@gmail.com, và tracking được ai mở email vào những thời điểm nào | docs/reference/emails/rules.md | ✅ |
| SRC-683 | 2026-09-07 | Chủ dự án 2026-09-07: nối dây 9 email còn lại — mỗi loại thư phải có trigger thật chạy trong hệ, không chỉ có template | workers/api/src/modules/email/campaigns.ts | ✅ |
| SRC-684 | 2026-09-07 | Chủ dự án 2026-09-07: loại learner 'Doo doo' và 'SOC' ra khỏi danh sách gửi email | migrations/0207_email_suppressions.sql | ✅ |
| SRC-685 | 2026-09-07 | Chủ dự án 2026-09-07: xây nút ngừng nhận thư cho phụ huynh trong mọi email | workers/api/src/modules/email/unsubscribe.ts | ✅ |
| SRC-686 | 2026-09-07 | Chủ dự án 2026-09-07: xây màn quản lý danh sách chặn email trong admin (xem ai đang bị chặn, vì sao, bỏ chặn bằng một nút) | apps/admin/src/pages/Emails.tsx | ✅ |
| SRC-687 | 2026-09-07 | Chủ dự án 2026-09-07: tận dụng mọi cơ hội gửi thư cho member, nhưng TRẦN tối đa 1 thư mỗi member mỗi ngày; thư trả lời hành động vừa xảy ra không bị trần chặn | workers/api/src/modules/email/dispatch.ts | ✅ |
| SRC-688 | 2026-09-07 | Audit toan he: doi chieu tai lieu voi ma nguon, dong bo, ra Audit Report, fix va nang cap | docs/quality/audits/audit-2026-09-08.md | ✅ |
| SRC-689 | 2026-09-08 | Chủ dự án 2026-09-08: sửa màn Email admin — nút Bỏ chặn bị cắt khỏi màn, cột Mở tràn | apps/admin/src/pages/Emails.tsx | ✅ |
| SRC-690 | 2026-09-08 | Chủ dự án 2026-09-08: chạy thử lượt quét 19:00 để xem trần ngày có ăn không — cần đường chạy KHÔ (dry run) xem trước ai nhận gì mà không gửi thật | workers/api/src/modules/email/campaigns.ts | ✅ |
| SRC-691 | 2026-09-08 | Chỉ đạo: cần biết **bố mẹ nào đã gặp trực tiếp**, gặp mấy lần, lần gần nhất cách đây bao lâu, và lần trao đổi qua chat gần nhất là khi nào — *"vì có một hiện tượng, đó là khi ko trao đổi với phụ huynh, thì dần dần phụ huynh và con của họ nghỉ học hết"* | Câu lý do đổi hẳn bản chất việc: từ **một cuốn sổ** thành **một cái cảnh báo**. Sổ trả lời *chuyện gì đã xảy ra* và được mở khi người ta đã nghĩ tới việc mở nó; nhưng gia đình sắp nghỉ đúng là gia đình **không ai còn nghĩ tới**, nên cuốn sổ ấy sẽ không được mở đúng lúc nó có ích nhất. Vì vậy làm hai phần, và phần thứ hai mới trả nợ cho lý do trên. **(1) Ghi:** migration `0208` thêm hai cột vào `family_notes` — `channel` (in_person · video · call · chat · email) và `happened_on` — **không dựng bảng riêng**. Một lần gặp ĐÃ LÀ một ghi chú; tách bảng nghĩa là mentor phải ghi hai chỗ cho một lần gặp, và chỗ thứ hai là chỗ sẽ bị quên — đúng cách phần lớn CRM chết dữ liệu. `channel` cố ý KHÔNG phải một tag dù thêm vào đó rẻ hơn: tag là *nghĩa* của nội dung, kênh là *đường* nội dung đó tới — hai trục vuông góc, một note vừa là `pain` vừa xảy ra khi gặp mặt; nhét vào tag thì danh sách đóng phình gấp đôi và mọi câu đếm phải quét `tags_json LIKE` mà không dùng được chỉ mục (Audit #005 đã gỡ một lần). `happened_on` tách khỏi `created_at` vì hai ngày đó khác nhau trong đời thật — mentor gặp thứ Bảy, tối Thứ Ba mới ngồi viết; đếm theo ngày gõ thì con số sai đúng bằng khoảng mentor còn nợ việc ghi chép, và sai theo hướng LẠC QUAN là kiểu sai tệ nhất ở đây vì nó giấu đúng những nhà cần gọi. **(2) Cảnh báo:** thang `ok → watch (>30 ngày) → alarm (>60)`, `never` đứng riêng vì việc phải làm khác hẳn — `alarm` là nối lại quan hệ đã có, `never` là bắt đầu từ đầu. Ô lọc *lâu rồi không ai trao đổi* chạy **trong SQL** chứ không lọc mảng sau `LIMIT 200`: lọc sau thì nhà im lặng ở vị trí 201 không bao giờ hiện ra, mà đó đúng là nhà cần tìm nhất — im lặng lâu đồng nghĩa `updated_at` cũ nên bị chính `ORDER BY` đẩy xuống cuối. **Một luật nhỏ quyết định màn này có được dùng hay không:** nhà VỪA TẠO chưa tiếp xúc lần nào KHÔNG phải báo động — không phân biệt thì mỗi lần nhập liệu đẻ một báo động giả, và danh sách đầy báo động giả sẽ bị bỏ qua TOÀN BỘ, kể cả dòng đúng. **Hai ngưỡng 30/60 là PHỎNG ĐOÁN**, ghi thẳng trong code: chưa đối chiếu với ca nghỉ thật nào; khi đủ dữ liệu phải đo lại, vì nếu ca nghỉ thường có khoảng im lặng ngắn hơn 60 ngày thì ngưỡng đang báo quá muộn. **Vẽ ở đâu:** danh sách CHỈ hiện phù hiệu khi khác `ok` (luật SRC-649 — dấu hiệu hiện ở mọi dòng thì không phân biệt được gì), màn chi tiết luôn hiện đủ. Phù hiệu dùng CHỮ không dùng icon: "47" là thông tin, không hình vẽ nào nói được một con số. **Chữa kèm một lỗi cùng loại đã sót:** danh sách gia đình vẫn đếm `note_count` từ bảng `interactions` cũ trong khi ghi chú đã chuyển sang `family_notes` — đúng lỗi đã chữa một lần ở màn chi tiết mà sót chỗ này, nên nhà có hàng chục ghi chú vẫn hiện "0". **Giới hạn nói thẳng:** *chat* là số liệu GHI TAY — Nemo12 không có hệ nhắn tin hai chiều, hệ email hiện có là một chiều và một bản tin đã gửi không phải một cuộc trao đổi; nên cột chat chỉ đúng bằng mức mentor chịu ghi, và sẽ đầy đủ kém hơn hẳn cột gặp trực tiếp vốn hiếm và đáng nhớ. Nối Zalo để đếm tự động là việc riêng, chưa làm | ✅ |
| SRC-692 | 2026-09-08 | Chỉ đạo chủ dự án 2026-09-08: tài liệu đọc kiểu Substack trong mỗi lesson, soạn bằng TipTap trong admin, nhúng được ảnh và video | [SDD-033](../architecture/sdd-033-lesson-articles.md) | ✅ |
| SRC-693 | 2026-09-08 | Chỉ đạo 2026-09-08: tab Unit trong Coral đổi tên thành Độ phủ — nó soát độ phủ (skill_nodes/labs/items), khác hẳn tab Khoá học soát chữ nghĩa (curriculum\_\*); không gộp hai tab | nhãn tab trong apps/coral/src/App.tsx + ghi chú phân vai ở Units.tsx và SDD-013 | ✅ |
| SRC-694 | 2026-09-08 | Chỉ đạo chủ dự án 2026-09-08: rà soát UI nemo12.com để làm SEO, điểm SEOQuake và PageSpeed phải rất cao, và mở rộng lên khoảng 1000 trang được lập chỉ mục | SDD-029 §5 (prerender + worker 404 + JSON-LD), §8 mới (họ trang nội dung) | ✅ |
| SRC-695 | 2026-09-09 | Chỉ đạo 2026-09-09: gắn www.nemo12.com vào worker giúp — kiểm ra domain đã gắn sẵn, lỗi thật là worker không chạy khi đường dẫn có sẵn file tĩnh nên chuyển hướng www 301 không bao giờ nổ | run_worker_first trong apps/web/wrangler.jsonc + ghi chú tại worker/index.ts | ✅ |
| SRC-696 | 2026-09-09 | Chỉ đạo chủ dự án 2026-09-09 (chat): vào môn không bắt làm Diagnostic ngay; làm tính năng mục tiêu IELTS có 4 kỹ năng + Overall tự tính + tối đa 5 mốc trung gian; đưa vào Student Portrait | docs/product/prd-001-nemo12.md | ✅ |
| SRC-697 | 2026-09-09 | Chỉ đạo chủ dự án 2026-09-09 (chat): trang lộ trình IELTS riêng — khoảng cách giữa các mốc, điểm tăng giữa hai mốc, và nhận xét chặng nào rủi ro nhất | docs/product/prd-002-learner-ux.md | ✅ |
| SRC-698 | 2026-09-10 | Chỉ đạo chủ dự án 2026-09-10 (chat): lộ trình IELTS trình bày dạng BẢNG — mỗi cột một mốc, cột cuối là ngày thi cuối cùng; bốn dòng là bốn kỹ năng, thêm vài dòng Overall/khoảng cách/nhận xét | docs/product/prd-002-learner-ux.md | ✅ |
| SRC-699 | 2026-09-10 | Chỉ đạo chủ dự án 2026-09-10 (chat): bỏ ELA.8 tới ELA.11 khỏi khung năng lực, ở cả khung nemo lẫn khung English | docs/reference/data-dictionary.md | ✅ |
