Skip to content

Ba repo: conanplatform, conan-web, conan-content (16-17.10.2026) ​

Trạng thái (16.10.2026): đã quyết, chưa cắt. PR "Tách repo: gỡ www.conan.school khỏi conanplatform (chờ ngày cắt)" là bản nháp, chỉ gộp đúng ngày cắt theo thứ tự ở dưới. Cho tới lúc đó www vẫn build và deploy từ repo này.

Ngày 16.10.2026 chủ repo quyết định tách monorepo. Đây không phải kế hoạch tách repo cách 3 (tách vệ tinh, giữ lõi): ở đây www, site công khai, rời lõi để đi cùng bộ CMS mới của nó.

Cái gì ở đâu ​

RepoChứa
dac2205/conanplatformapi.conan.school, tokyo (com.conan.school/), docs.conan.school, admin.conan.school, admin-router, mam, video, video2, play, studio, media, content, webai, aimaster, kudo, conan-tool-plane, packages/
dac2205/conan-webwww.conan.school/ (React Router 7 SSR, Pages ww3-conan-school), edge worker conan-www-stale-asset-bridge (www.conan.school/edge-hotfix/), cms.conan.school, api-cms.conan.school, cms-docs.conan.school
dac2205/conan-content (từ 17.10.2026)nguồn nội dung soạn tay content/{books,courses,jtbd,playbooks,playbook-plan,forum,library,brands,personas}, bộ biên dịch compilers/, bản lưu mọi migration đã áp migrations-archive/. Không deploy gì: migration mới vẫn vào conanplatform/api.conan.school/migrations/ và CI của conanplatform áp. Chi tiết: repo-slim bước 2

Lịch sử của www được mang sang bằng git filter-repo. Luật của www (bề ngang, SEO, song ngữ, đo lường phía www) và hai skill seo-www, i18n-www bản đầy đủ nằm ở conan-web; ở repo này còn bản rút gọn trỏ sang đó.

Thư mục ở máy ​

~/ConanCode/conan-school/
├── conan-content/      repo conan-content (nội dung + bản lưu migration)
├── conan-web/          repo conan-web
└── conanplatform       bản clone thật (từ 17.10.2026, sau khi viết lại lịch sử)

Gác và test của các bên tìm nhau qua đường dẫn anh em này: conan-web đọc ../conanplatform (API_REPO_DIR), conan-content đọc ../conanplatform (CONANPLATFORM_DIR), conanplatform đọc conan-content qua scripts/lib/archived-migrations.mjs (contentRepoDir()) và api.conan.school/scripts/content_repo.py (CONAN_CONTENT_REPO; thử ../conan-content, ../conan-school/conan-content, ../../conan-content cho worktree ở conan-school/.worktrees/). Ở CI không có repo kia, nên những phép so chéo đó chỉ chạy ở máy: chạy gác ở máy có đủ các repo trước khi gộp một PR chạm ranh giới.

Hai repo nói chuyện chỉ qua HTTP ​

www gọi api.conan.school/api/public/* như mọi khách khác, và api-cms.conan.school/public/* cho nội dung CMS. Không import mã chéo repo, không đọc D1 của nhau. api.conan.school không đổi gì vì cuộc tách này.

Ràng buộc chéo phải tự nhớ ​

Mỗi dòng dưới đây là một chỗ hai repo phải khớp nhau mà CI của một bên không thấy bên kia.

Ràng buộcNguồnBản chép / bên dùngGác
Migration đã lưu trữconanplatform/api.conan.school/migrations/ARCHIVED.tsvconan-content/migrations-archive/archived-migrations ở conanplatform so sha256 từng dòng khi thấy conan-content; CI bỏ qua thành tiếng
Nội dung soạn tay ra migrationconan-content/content/ + compilers/migration mới ở conanplatform/api.conan.school/migrations/Hai PR, nguồn gộp trước. check:jtbd bên kia so Set với migration của cả hai repo ở máy
Bộ vẽ đọc nội dungconan-content/content/{books,courses}book_art.py, book_illustrations.ts, course_art_to_sql.py... ở conanplatformDừng rõ ràng khi không thấy repo kia (content_repo.py)
Token màu, chữconanplatform/packages/design-system/theme.cssconan-web/packages/design-system/theme.csscheck:design-system-sync ở conan-web, so qua thư mục anh em. Đổi token thì chép trong cùng ngày.
Hợp đồng API (packages/api-contract)conanplatformloader www (fetchContract)Chưa có. CI ở đây không còn build www, nên sửa một schema www đọc thì PR hai bên cùng ngày.
Đường dẫn /api/public/* mà www gọirouter api ở conanplatformcheck-seo.mjs ở conan-webChỉ chạy ở máy có cả hai repo (API_REPO_DIR); CI bên kia bỏ qua kèm cảnh báo.
Danh sách trang wwwconan-web/www.conan.school/app/routes.ts (mảng PAGES)api.conan.school/tests/fixtures/www-pages.json (test email kiểm link www trong thư)npm run test:orchestrator so bản chép với router thật khi thấy repo anh em (CONAN_WEB_DIR).
Số Hero Bannerscripts/hero_banner_svg.py (sang conan-web)HERO_BANNER_COUNT ở api.conan.school/src/shared/heroBanners.tsChưa có.
What's New hằng tuầnPR của cả hai reposcripts/whats-new-draft.mjs ở đâyScript đọc lịch sử conan-web khi thấy nó, khoá web-pr-<số>; không thấy thì cảnh báo "THIẾU mọi PR của www".
Sổ lỗi Cloudflarescripts/error-ledger.mjs cloudflare quét cả zone conan.schoollỗi của host wwwLỗi runtime của www vẫn mở issue ở repo này cho tới khi conan-web có sổ riêng.

Thứ tự cắt ​

  1. CI của conan-web xanh, và các deploy riêng của nó (cms, api-cms, cms-docs) đã kiểm trên production.
  2. Nhập lại lịch sử www mới nhất từ conanplatform vào conan-web (filter-repo lần nữa, hoặc chép các commit từ lần nhập trước). Bản trong conan-web ngày 16.10.2026 cũ hơn main: thiếu ít nhất /fast-courses, và www trên main đã import packages/observability (Sentry) và packages/api-contract, hai gói conan-web chưa có bản chép. Build www bên đó phải xanh với bản mới.
  3. Gộp PR gỡ www ở repo này, và trong cùng mấy phút đặt biến repo WWW_DEPLOY_FROM_THIS_REPO=true ở conan-web. Không sớm hơn: hai repo cùng deploy một Pages project là hai bản đua nhau lên production.
  4. Kiểm www deploy từ conan-web: lượt deploy-www bên đó xanh, production phục vụ đúng bộ asset của bản vừa deploy, header X-Conan-Release của bridge bằng SHA của lượt deploy bridge.

Repo này đổi gì khi gộp PR cắt ​

  • Gỡ www.conan.school/, .github/workflows/deploy-www.yml, deploy-edge-bridge.yml.
  • CI: gỡ job www khỏi ci-checks.yml và luật của nó khỏi scripts/ci/select-jobs.mjs (mẫu tự kiểm đổi sang job com); gỡ hai workflow khỏi error-ledger.yml.
  • Gác: gỡ check-seo.mjs (sang conan-web) khỏi run-guards.mjs và package.json; check-analytics chỉ còn soi tokyo và đỏ khi một thư mục trong danh sách không tồn tại; check-sentry đếm bốn app; gỡ khoá www.conan.school khỏi mốc color-token-baseline.json, emoji-icon-baseline.json, qc-metrics-baseline.json (chỉ hạ, không nâng).
  • smoke-production.mjs: gỡ mục tiêu www và edge bridge cùng các hàm chỉ chúng dùng.
  • Script gỡ vì thuộc www (phải có mặt ở conan-web trước khi cắt): check-seo.mjs, check-seoquake.mjs, audit-www-pages.mjs, audit-www-mobile.mjs, hero_banner_svg.py.
  • Test email đọc danh sách trang www từ tests/fixtures/www-pages.json thay vì router của www.

Chưa có ở conan-web lúc soạn PR cắt ​

Những thứ repo này từng gác cho www mà conan-web chưa có bản tương ứng (16.10.2026): gác đo lường (check-analytics, khai trùng container, PII trong dataLayer), gác Sentry, bước kiểm production sau deploy cho www và bridge (trang có ruột, sitemap, robots, khoá i18n lộ, X-Conan-Release), bốn script ở mục trên trừ check-seo.mjs, và bản chép packages/observability, packages/api-contract. Thiếu chúng thì www vẫn deploy xanh, chỉ là không còn gì nhìn vào nó.

Xem thêm: Giảm dung lượng repo (cùng ngày, ba bước), known-risks, CI và gác, SEO của www (lịch sử), Song ngữ ở www (lịch sử).

Tài liệu nội bộ nền tảng Conan School.