Trạng thái bất đồng bộ (building → live)
Cách CPP mô hình hoá site tĩnh — nhận bài, build, rồi mới hiển thị.
Site động (db) publish xong là live ngay. Site tĩnh (fs-build) thì bản chất bất
đồng bộ: nhận bài → ghi file → CI/build (30–90s) → mới hiển thị. CPP mô hình hoá điều này
bằng một field status + một flag async, không phân mảnh.
Ba trạng thái, một mô hình
db adapter POST → 200 { status: "live" } (xong, hiển thị ngay)
fs-build POST → 202 { status: "building" } (đã nhận, đang build)
│
└─ Citely POLL `url` (HEAD) tới khi 200 → tự chuyển "live".
Site KHÔNG cần làm gì thêm.Mặc định — Citely poll (site không làm gì)
- Receiver ghi bài → trả
202 { id, url, status: "building" }. - Citely lưu một delivery record (permalink + trạng thái
building). - Citely định kỳ
GET url(HEAD/GET). Khi trả200→ chuyển record sanglive. - UI Citely hiện "Đang build → Đã xuất bản".
Đây là đường khuyến nghị: site tĩnh tối thiểu chỉ cần trả 202 rồi mặc kệ. Poll là cách
DUY NHẤT đang khả dụng hôm nay — receiver không cần expose thêm endpoint nào.
Vì sao không dùng trạng thái đồng bộ "giả"
Có thể trả 200 {url} ngay và coi như xong. Nhưng URL đó có thể 404 vài chục giây tới khi
build xong → user bấm vào thấy lỗi, và Citely index sớm một URL chưa tồn tại. 202 building
- theo dõi là trung thực hơn: Citely chỉ báo "đã xuất bản" khi bài thật sự sống, và chỉ ping
Google index khi
live.
Callback tức thì (site gọi Citely khi build xong) là kế hoạch tương lai, chưa triển khai — endpoint POST /api/connect/live chưa tồn tại. Hiện tại chỉ dùng đường poll ở trên.