Giao diện
IELTS27 — Brand thứ tư trong mô hình
IELTS27 là Brand luyện thi IELTS của Conan, dựng trong Compass thành 5 phần cuốn chiếu (0017 → 0021). Trang này ghi lại Brand đó gồm những gì, và vì sao nó có hình dạng như vậy.
Nguồn của định vị
Mô hình không tự nghĩ ra IELTS27. Hồ sơ thương hiệu đã có sẵn ở brands.conan1.com (docs/.vitepress/theme/platforms.ts) và nói ba điều:
| Lời hứa | Biến mục tiêu band điểm thành lộ trình có chẩn đoán và phản hồi. |
| Ba trụ cột | Diagnostic bốn kỹ năng · Feedback bám rubric · Lộ trình theo deadline và điểm nghẽn |
| Không phải là | Luyện đề đại trà và hứa band điểm. |
Dòng cuối là dòng quan trọng nhất và nó đã sửa mô hình một lần: bản dựng đầu có một sản phẩm "cam kết band" và một năng lực quản trị cam kết đó. Cả hai đi ngược đúng thứ Brand tuyên bố mình không làm, nên CAP-24-01 trở thành Cam kết tiến bộ — IELTS27 cam kết thứ nó kiểm soát được (chẩn đoán hằng tháng, trả bài trong 48 giờ, dự báo báo sớm), không cam kết mức band mà giám khảo chấm.
Sáu domain (CAP-20 → CAP-25)
| id | Domain | Ba năng lực |
|---|---|---|
| CAP-20 | Đánh giá đầu vào & Định vị band | Kiểm tra đầu vào · Dự báo band · Thiết kế lộ trình học |
| CAP-21 | Giảng dạy bốn kỹ năng | Dạy Nghe & Đọc · Dạy Viết · Dạy Nói |
| CAP-22 | Chấm chữa & Phản hồi | Chấm bài Viết · Đánh giá bài Nói · Vòng phản hồi |
| CAP-23 | Thi thử & Sẵn sàng phòng thi | Vận hành thi thử · Chiến thuật phòng thi · Hỗ trợ đăng ký thi |
| CAP-24 | Bằng chứng kết quả | Cam kết tiến bộ · Xác minh kết quả · Câu chuyện cựu học viên |
| CAP-25 | Đặt mục tiêu & Tư vấn lộ trình | Tư vấn mục tiêu · Xếp lớp · Tư vấn du học & định cư |
Đây là năng lực của mô hình chuẩn, không phải của riêng một Brand — capabilities không có brand_id, và đó là chủ ý: một Brand luyện thi khác (TOEIC27, SAT27) kích hoạt lại đúng bộ này thay vì định nghĩa bộ thứ hai.
Ba hành trình
| Value stream | Người thụ hưởng | Chặng |
|---|---|---|
ielts-candidate-journey | Thí sinh | 7 — Nghe tới · Kiểm chứng · Được đo · Quyết định học · Luyện tập · Thi thử · Đạt band |
ielts-sponsor-journey | Phụ huynh / người chi trả | 4 — Nghe lời hứa · Kiểm chứng · Theo dõi tiến bộ · Đứng ra giới thiệu |
ielts-teacher-journey | Giáo viên | 3 — Gia nhập · Hiệu chuẩn · Làm nghề |
Hành trình người chi trả tồn tại vì phần lớn học phí IELTS do một người không bao giờ đi thi trả, và họ đang mua một lời hứa mà chính họ không đánh giá được.
Mọi câu phát biểu của chặng đều bắt đầu bằng "I" — trình sinh từ chối câu không đạt, đúng phép thử mà checks.sql áp cho toàn hệ thống. Chặng nào không nói được bằng giọng của người thụ hưởng thì đó là hoạt động nội bộ khoác áo chặng.
Vì sao chia 5 phần theo chiều dọc
scripts/checks.sql đòi mỗi năng lực level > 1 phải có 3 quy trình, 1 ứng dụng, 1 thực thể dữ liệu, 1 sản phẩm và 3 Key Result. Nên không thể đẩy 18 năng lực rỗng rồi lấp dần — một năng lực hoặc ra đời trọn vẹn, hoặc chưa ra đời.
| Phần | Migration | Nội dung |
|---|---|---|
| 1 | 0017 | Brand · 3 sản phẩm · 2 ứng dụng · 2 thực thể dữ liệu · 6 domain · Brand Capability Map |
| 2 | 0018 | 9 năng lực của domain 1–3, mỗi năng lực đủ quy trình, liên kết, KPI, Objective và Key Result |
| 3 | 0019 | 9 năng lực của domain 4–6 |
| 4 | 0020 | 3 value stream, 14 chặng, 14 chỉ số giá trị |
| 5 | 0021 | Chiến lược IELTS27 và 13 mắt nối từ Objective vận hành lên mục tiêu chiến lược |
Hai quyết định về kiến trúc
Ứng dụng thuộc nền tảng, không thuộc Brand. mock-test-engine và band-tracker gắn vào sản phẩm conan1 với brand_id = NULL. Chiến lược 2026 ghi "No bespoke platform per Brand", và Conan School muốn chạy thi thử là dùng được ngay.
Một định nghĩa, hai nơi tiêu thụ. api.conan1.com/scripts/ielts27.mjs là nguồn duy nhất. ielts27Seed.mjs sinh migration cộng dồn cho production; còn model.mjs, execution.mjs, planes.mjs và strategy.mjs splice đúng bộ bản ghi đó vào mảng của mình cho bản dựng lại. Sai lệch giữa hai đường đã xảy ra một lần — ba value stream thiếu trường brand nên bản dựng lại ghi brand_id rỗng và INSERT OR IGNORE của 0020 lặng lẽ không làm gì — và cách bắt được là truy vấn cơ sở dữ liệu sau khi áp migration, không phải tin rằng nó đã chạy.
Sửa dữ liệu
bash
node scripts/ielts27Seed.mjs # sinh lại 0017…0021
npm run verify # áp mọi migration lên D1 local và soi bất biếnTrình sinh thất bại nếu một năng lực trỏ vào domain không tồn tại, một chặng không đạt phép thử "I", hoặc một dòng ưu tiên P5 không có lý do kèm theo.