Chic Data · Báo cáo tuần · Vinh (Jason) — team Data, Công nghệ

Lịch PMS chuyển hẳn vào ChicStay, 20 cơ sở mới vào chicdata, và Gohost lật giao diện hai lần một buổi

22/09 – 28/09/2026 · sync lịch native trong chicstay-backend · onboard đợt 24/09 + 28/09 · sự cố Gohost · rà lịch toàn bộ phòng đang bán · sàn thuê game
7 commit chicdata_dashboard (+4 PR gộp) 10 commit chicstay-backend 87 phòng mới vào chicdata 1.264 ảnh lên R2 chicdata: 128 cơ sở · 598 phòng Số đo lúc 28/09

Tổng quan tuần

532/532
khoảng bận khớp prod
sync native trên staging
0/1.485
quyết định đặt phòng lệch
so với chicdata production
18/18
ca đặt phòng thật trên staging
đúng như mong đợi
87
phòng mới vào chicdata
20 cơ sở · 14 chủ nhà
1.264
ảnh lên R2
7,9 GB → 147 MB

Ba việc lớn. Một: bản thiết kế sync phòng tuần trước đã thành code — app pms trong chicstay-backend tự hỏi PMS của chủ nhà, không qua chicdata nữa; đối chiếu với production khớp tới từng khoảng bận, đã merge develop và đang chạy trên staging từ 28/09 (production chưa bật). Hai: hai đợt onboard (24/09: 8 cơ sở · 46 phòng; 28/09: 12 cơ sở · 41 phòng) vào chicdata, bắt được ba lỗi làm mất dữ liệu lặng lẽ — trong đó có mật khẩu PMS suýt lên production. Ba: Gohost đổi giao diện sáng 24/09 làm Bum (52 phòng) và Lela chết lịch hai lần trong một buổi.

Như tuần trước: các commit tính năng khác của chicstay-backend (flash sale theo phòng, lasting sale, combo khung giờ, phụ thu theo số lượng, dashboard User active…) là của đội dev ChicStay. Phần của mình là sync PMS, hai trang admin lịch phòng và bản vá cron — mục A.

A. Đồng bộ lịch PMS ngay trong ChicStay local → staging, production chưa bật

A1. Đã dựng gì (commit f33b1b3, 26/09)

Hạng mụcTrước (production hiện tại)Sau (ChicStay tự đồng bộ)
Đường dữ liệuPMS → room-state → DB chicdata → HTTPS /v1/rooms → cron 5 phút → overlayPMS → run_pms_sync → overlay (cùng DB)
Độ trễ lịch về ChicStaytới ≈6 phút≈60 s
Lúc khách bấm đặtđọc DB chicdata, không hỏi PMShỏi thẳng PMS, 1,7–3,9 s
Hạ tầng2 repo · 2 app Fly · 2 bộ secret1 repo · 1 app + 1 process group

A2. Đối chiếu với production — 6 lỗi chỉ lộ ra trên dữ liệu thật

Chạy local trên Neon branch copy production, so với chicdata production suốt 6,5 giờ ngày 26/09: 890/890 khoảng bận khớp, trạng thái 199 bận / 95 trống / 3 chưa biết khớp, mô phỏng 1.485 quyết định đặt phòng lệch 0 (297 phòng · 19 tài khoản PMS). Lệch còn lại đều truy ra là lệch pha hai vòng 60 s. Cả 6 lỗi đều ở phía ChicStay, mỗi lỗi có test chặn:

#LỗiHậu quả nếu không sửa
1bulk_create ép ::varchar(200) → cắt lặng mã khoảng bận dài (Dayladau 216 ký tự)xoá–chèn lại vô tận mỗi lượt
2PMS trả reason lúc None lúc ""mọi lượt báo “sửa” 25 khoảng của Lela
3Phòng STALE không bận ghi free thay vì unknownbooking gate xử khác production
4Thiếu luật tuổi 15 phút (overlay là cột tĩnh)tiến trình chết → phòng “trống” mãi — hướng sai nguy hiểm nhất
5next_busy_at tính trên mảng thô122 phòng lệch chicdata
6Một lỗi DNS tới Neon (26/09 19:06) giết cả run_pms_sync16 giờ không đồng bộ mà overlay vẫn như dữ liệu tươi

Lỗi 6 sinh ra lớp canh riêng pms_watchdog (cron 5 phút, tiến trình độc lập): hạ phòng quá 15 phút chưa đọc lại được xuống “chưa biết” và báo nguồn đứng im. Chạy thật: hạ 294 phòng, cảnh báo 19 nguồn.

A3. Lên staging 28/09 và thử đặt phòng thật

Hai chuyện hạ tầng staging: GitHub Actions của org hết budget từ 27/09 19:42 — workflow deploy staging không chạy, phải deploy bằng flyctl từ đúng commit develop. Máy cron staging 512 MB bị OOM khi 6–7 job */5 cùng khởi động ở :00 (giết sync_external_room_state, complete_past_checkout_bookings) — đã dời pms_watchdog sang :02 (0a3e1b8), phần còn lại cần người quyết tăng RAM hay dời giờ job.

A4. Hai trang Admin cho vận hành

B. Onboard hai đợt — 20 cơ sở, 87 phòng vào chicdata chỉ thêm, không sửa, không xoá

Bảng chicdata21/0928/09
Merchant5064 (+14)
Cơ sở109128 (+19)
Phòng511598 (+87)
Gói giá2.1602.330 (+170)
Media—7.806

Cơ sở +19 chứ không +20 vì Ora Hotel đã có sẵn vỏ P0107 từ trước, đợt này mới nạp phòng vào.

B1. Đợt 24/09 — 8 cơ sở · 46 phòng · 636 ảnh

22Land Hotel & Spa, Moon Westlake, Classic, 22 Land Residence, Ora Hotel, Ohh Homestay Hồ Tây, KIM Apartment, DEMO Tôn Đức Thắng. 104 gói giá, 170 quy tắc giá, ảnh nén 1,9 GB → 80,1 MB. 21 phòng đủ để mở bán ngay, 25 phòng cần BD điền mô tả/ảnh. Toạ độ chỉ ghi khi hai nguồn khớp đúng số nhà — 4/8 cơ sở để trống có chủ đích.

B2. Đợt 28/09 — 12 cơ sở · 41 phòng · 628 ảnh (c15c29e)

Uni, Lya ×2, 22Land Cloud / Heritage / Cosmo / Lake View Hotel / Lake View Residence, Dodo Home ×4. Ảnh nén 6,0 GB → 66,7 MB, 31/41 phòng đủ 8 ảnh (10 phòng thiếu đều do thư mục của chủ nhà). Lya nối lịch dayladau 4/4. Dừng ở CS0001 Mer — sheet đã đánh số lại, nạp vào là đẻ ra cơ sở Mer thứ hai.

Ba thứ suýt lên production mà lượt chạy vẫn báo xanh:

Chỗ hỏngHậu quảĐã sửa
Ô album là link gắn vào chữ — gviz không trả đíchcả 41 phòng lên web với 0 ảnhsheet-hyperlinks.mjs: tải bản .xlsx vá ngược vào dữ liệu gviz
Ô lịch Dodo ghi tên đăng nhập + mật khẩu PMSchảy vào availability_ref rồi lên productionoLichAnToan() chỉ giữ đường dẫn; dọn 16 dòng đã lỡ ghi
Ảnh Dodo là PNG 24–33 MB/tấm, trần 20 MB9 phòng về 0 ảnhnới trần 48 MB cho riêng tool (vẫn nén về WebP ~100 KB)

Kèm skill dong-bo-phong-len-chicstay ghi lại trọn quy trình 14 bước, luật “chỉ thêm”, và điều kiện dừng rút từ ba lượt nạp. Test: 95 scripts/lib · 18 tests/chicstay · 738 chicstay_room_state.

Chưa phòng nào của hai đợt lên production. Bước nạp vào ChicStay chạy trên máy production mà Claude Code bị guard quyền chặn, nên đã viết runbook cho người chạy tay: reports/runbook-onboard-8-co-so-2026-09-24.md và reports/runbook-onboard-12-co-so-2026-09-28.md (mỗi đợt ~5 phút, nạp ở trạng thái ẩn).

C. Gohost lật giao diện hai lần trong một buổi 24/09 · Bum 52 phòng + Lela 6 phòng

Sáng 24/09 Gohost bỏ widget Livewire; adapter coi “không thấy widget” là lỗi nên Bum và Lela FAILED mọi lượt, 52 phòng của Bum đứng ở STALE. Mở trình duyệt xem giao diện gọi gì → lịch nằm ở GET /pms/app/<tenant>/calendar/events. Vá sang REST (4f48220): Bum xanh lại lúc 11:23, 58 phòng · 144 khoảng bận.

~11:30 Gohost trả widget về, REST ra 404 — chết lần hai. Bản vá thứ hai (d2301cc) thử cả hai đường: widget trước, hỏng thì rơi sang REST; trả về 0 phòng cũng tính là hỏng, vì coi rỗng là thành công thì tầng đồng bộ sẽ đóng sạch lịch cả nhà. Đo lại: 57 phòng, 166 khoảng bận, 4 phòng 33 ĐN khớp từng mã đơn với màn hình Gohost. 738 test pass.

D. Rà lịch toàn bộ phòng đang bán 22/09 → 25/09

E. Việc khác

F. Rủi ro đang mở

F1. 87 phòng onboard đang chờ người chạy runbook

Hai đợt 24/09 và 28/09 mới nằm ở chicdata. Từ máy này không xác minh được runbook 24/09 đã chạy hay chưa.

F2. Mật khẩu PMS của Dodo Home vẫn nằm trong sheet chung

Đã chặn không cho lên catalog, nhưng sheet nhiều người đọc được — cần nhờ chủ nhà đổi mật khẩu.

F3. Sync native mới ở staging

Lên production cần: secret PMS vào app production, process pms, PMS_SOURCE=native, tắt syncer chicdata, và quyết dashboard chicdata + cảnh báo Lark (chưa port) sẽ đọc từ đâu. Cron staging OOM và Actions hết budget cần người quyết.

F4. 25 + 32 phòng mới không có lịch máy

Các nhà khai “đóng mở trực tiếp trên web” — hợp lệ, nhưng phòng trống hay không phụ thuộc chủ nhà nhớ bấm. Dodo (12 phòng) cần bộ đọc mới cho shotel.vn.

F5. Treo từ tuần trước

Đệm dọn đầu giờ (B3 tuần trước) — trong commit tuần này chưa thấy quyết định đổi hướng, staging vẫn chặn 1 giờ hai đầu. SUN HOMESTAY vẫn cần chủ kéo dài bảng lịch. Nhánh feat/onboard-7-home-chuan-hoa còn nhiều file chưa commit.

Việc tuần tới