Skip to content

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ứaBiế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ộtDiagnostic 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) ​

idDomainBa năng lực
CAP-20Đánh giá đầu vào & Định vị bandKiểm tra đầu vào · Dự báo band · Thiết kế lộ trình học
CAP-21Giảng dạy bốn kỹ năngDạy Nghe & Đọc · Dạy Viết · Dạy Nói
CAP-22Chấm chữa & Phản hồiChấm bài Viết · Đánh giá bài Nói · Vòng phản hồi
CAP-23Thi thử & Sẵn sàng phòng thiVận hành thi thử · Chiến thuật phòng thi · Hỗ trợ đăng ký thi
CAP-24Bằ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ìnhTư 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 streamNgười thụ hưởngChặng
ielts-candidate-journeyThí sinh7 — Nghe tới · Kiểm chứng · Được đo · Quyết định học · Luyện tập · Thi thử · Đạt band
ielts-sponsor-journeyPhụ 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-journeyGiáo viên3 — 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ầnMigrationNội dung
10017Brand · 3 sản phẩm · 2 ứng dụng · 2 thực thể dữ liệu · 6 domain · Brand Capability Map
200189 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
300199 năng lực của domain 4–6
400203 value stream, 14 chặng, 14 chỉ số giá trị
50021Chiế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ến

Trì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.