Tuần này là tuần thu hoạch: những thứ tuần trước còn ở trạng thái "code xong, chờ deploy" nay đã chạy thật và ra số. Bốn trục chính:
Cần chú ý ngay: luồng enrich đã dừng hẳn 3 ngày (lần chạy cuối 31/07 11:30). Trong khi đó crawl vẫn chạy mạnh, khiến hàng chờ enrich phình lên 32.167 địa điểm. Đây là nút thắt lớn nhất hiện tại — chi tiết ở mục 1.2.
Số liệu lấy trực tiếp từ DB ngày 03/08 (đã lọc địa điểm còn hiệu lực):
Địa điểm BD confirm theo ngày:
Trung bình ~604/ngày, so với ~655/ngày tuần trước — nhịp giữ đều, không còn đỉnh đột biến ~1.200/ngày của tuần trước. Điều này trả lời câu hỏi đặt ra tuần trước: mức ~1.200/ngày là đợt dọn tồn, không phải năng suất nền. Năng suất nền thực tế là ~600/ngày.
Lượt enrich cuối cùng ghi nhận lúc 31/07, 11:30 (giờ VN). Từ 01/08 đến nay không có địa điểm nào được enrich, trong khi crawl vẫn chạy đều ~1.600–2.200 địa điểm/ngày.
| Trạng thái enrich | Số địa điểm | Ghi chú |
|---|---|---|
need_to_enrich | 32.167 | Hàng chờ — đã vượt cả số đã xử lý |
enriched | 23.891 | Trong đó 18.670 do engine nội bộ chic_research |
error | 142 | |
not_eligible | 183 |
Đã loại trừ nguyên nhân "cổng gap chặn": cổng enrich_gap_gate.py chỉ bỏ qua khi khoảng cách confirm − enrich ≥ 3.000; hiện khoảng cách là −10.825 (enrich đang đi trước confirm rất xa), tức cổng đang cho phép chạy. Vậy nguyên nhân nằm ở service enrich không còn chạy — cần kiểm tra service trên Railway/VPS.
Engine nội bộ đã gần như thay thế hoàn toàn Perplexity:
| Nguồn | Số địa điểm đã enrich | Tỷ trọng |
|---|---|---|
| chic_research (engine nội bộ) | 18.670 | 96,0% |
| perplexity | 458 | 2,4% |
| kết hợp cả hai | 316 | 1,6% |
Tuần trước tỷ lệ là 9.094 / 781. Chi phí Perplexity đã gần như về 0.
Rủi ro nêu ở báo cáo tuần trước — "phải redeploy crawler HCM trước, nếu không khoá toàn cục sẽ làm lệch dữ liệu" — đã được xử lý đúng thứ tự. Kết quả sau một tuần chạy song song:
| Tỉnh/Thành | Tổng địa điểm | Crawl thêm trong tuần | Trạng thái |
|---|---|---|---|
| Hà Nội | 21.463 | 3 | Đã bão hoà |
| Hồ Chí Minh | 15.317 | +2.740 | Vẫn đang chạy |
| Đà Nẵng | 5.943 | +3.623 | mới |
| Huế | 3.591 | +2.652 | mới |
| Quảng Ninh | 3.377 | +2.607 | mới |
| Hải Phòng | 3.002 | +2.231 | mới |
Thêm bảng prompts và hàm đọc prompt template từ DB. Trước đây prompt cho enrich/phân loại nằm cứng trong code — muốn chỉnh câu chữ phải sửa code và deploy lại. Nay sửa prompt trong DB là có hiệu lực ngay, không cần deploy.
Cùng đợt còn có: tham số crawl-batch giới hạn số truy vấn từ khoá mỗi tiến trình con (tránh tiến trình chạy quá lâu rồi chết mất việc), sửa lỗi thời điểm khi cào đánh giá làm mất dữ liệu, và bộ công cụ cào bù đánh giá/ảnh còn thiếu cho các địa điểm đã có.
Ghi chú: đợt commit ngày 29/07 của chicgo_data gộp cả phần công việc tuần trước còn ở thư mục làm việc (crawl 4 tỉnh, báo cáo QC bản 3.048, cổng enrich…) — những phần đó đã được báo cáo tuần trước, ở đây không kể lại.
Vấn đề: toàn bộ 1.935 lượt đẩy đã ghi nhận đều trỏ về staging; production có 0 event. Nguyên nhân không phải thiếu cấu hình mà là lỗi logic trong code: việc chọn event để đẩy dựa vào một cột trạng thái toàn cục một chiều — đẩy lên staging xong là event bị đánh dấu "đã đẩy" vĩnh viễn, nên không bao giờ được chọn lại cho production. Chỉ thêm cấu hình production vào lịch chạy sẽ đẩy được đúng 0 event.
Kết quả: production đi từ 0 → 1.940 event ngay trong ngày 03/08. Hiện 1.972 event tổng, 30 bị từ chối, 2 đang chờ, cùng 781 tổ chức.
Khảo sát phát hiện 3 service Railway cùng deploy một commit, cùng crawl một nguồn. DB xác nhận: mỗi lượt có 3 phiên crawl chồng nhau, mỗi phiên ~38 phút cho 1.600 event — tức lãng phí gấp 3 lần. Đáng chú ý hơn, service tên ybox-cron chưa từng crawl ybox — nó không có cấu hình riêng nên rơi về cấu hình mặc định và đi crawl vé; bảng học bổng vì thế đứng im từ 25/06.
Đã tách cấu hình từng service bằng file cấu hình riêng thay vì ghi đè trên dashboard, theo đúng thứ tự an toàn để service chưa tách không nuốt nhầm cấu hình chung.
Học bổng crawl về từ ybox lâu nay chỉ nằm trong bảng tạm của DB crawler, chưa có dòng code nào đẩy lên CheckEvent. Nội dung cũng gần như nguyên văn bản crawl (trung bình 3.799 ký tự). Tuần này dựng trọn luồng: viết lại → kiểm số liệu → đẩy lên.
[USA], [Canada]) — khảo sát phát hiện CheckEvent phân loại quốc gia/trình độ dựa vào tiêu đề, bỏ tiền tố này sẽ làm hỏng phân loại phía CheckEvent.Kết quả lô thử 5 bài:
| Bài | Độ dài gốc | Sau viết lại | Số liệu bị mất |
|---|---|---|---|
| Học bổng Kỹ thuật ĐH Monash | 961 | 15.254 | 1 giá trị |
| Học bổng NFP Hà Lan | 2.088 | 10.897 | 0 |
| Tổng hợp học bổng cho nữ | 6.152 | 10.026 | 11 giá trị |
| Học bổng Thạc sĩ ĐH Leeds | 1.162 | 11.125 | 0 |
| Học bổng KGSP Hàn Quốc | 3.768 | 11.135 | 0 |
Điểm cần quyết định trước khi chạy 264 bài còn lại: bài "Tổng hợp học bổng cho nữ" mất 11 số liệu (các mức tiền $50.000, $18.000… và 3 hạn nộp). Đây là hệ quả trực tiếp của lựa chọn "viết lại tự do hoàn toàn" đã được thống nhất — bài dạng tổng hợp nhiều học bổng bị tóm lược mất chi tiết. Bốn bài dạng một học bổng thì giữ số liệu sạch. Đề xuất: lọc riêng nhóm bài tổng hợp để xử lý theo cách khác, hoặc chấp nhận và chạy tiếp.
Đang bị chặn App key production thiếu quyền học bổng — API trả 403 APP_SCOPE_MISSING — Missing scope: scholarships:write. Staging đủ quyền và chạy được ngay. Cần admin CheckEvent cấp thêm quyền scholarships:read/write/publish cho App key production. Trong lúc chờ, lịch chạy tự động chỉ đẩy lên staging và không bị ảnh hưởng.
Ghi chú kỹ thuật đã kiểm chứng bằng gọi API thật: chuỗi xác thực đã sẵn tiền tố ceapp_live_ trong mã client — ghép thêm lần nữa sẽ trả 401. Đã sửa lại kết luận sai trong tài liệu nội bộ.
Tuần trước ChicStay trong dashboard mới chỉ có lớp API đọc dữ liệu, chưa có màn hình. Tuần này dựng xong toàn bộ giao diện, đọc theo schema master data mới (mục 5).
| Màn hình | Nội dung |
|---|---|
| Danh sách cơ sở | Thẻ cơ sở kèm ảnh bìa & số ảnh, tìm kiếm và lọc theo thương hiệu |
| Thương hiệu | Điều hướng nhiều cấp thương hiệu → cơ sở → phòng, giữ nguyên ngữ cảnh khi quay lại |
| Danh mục | Tra cứu danh mục tham chiếu (tiện ích, thẻ vibe, loại phòng…) |
| Phòng | Tìm kiếm & lọc phòng, thẻ phòng kèm biểu tượng tiện ích và nhãn trạng thái |
| Chi tiết cơ sở / phòng | Thư viện ảnh, chính sách, giá, tiện ích chi tiết |
| Phân tích mới | Tổng quan hệ thống & đo độ đầy đủ dữ liệu — biết cơ sở nào còn thiếu ảnh/giá/tiện ích để đi bổ sung |
Kèm bộ 6 thành phần biểu đồ dùng chung (thanh xếp hạng, cột, bản đồ nhiệt, đồng hồ đo, thanh khoảng, cột chồng) và chuẩn hoá lại bảng màu biểu đồ. Công cụ nhập tài khoản BD/CTV hàng loạt từ Excel (đã báo cáo tuần trước) nay cũng đã được commit đầy đủ kèm bộ kiểm thử.
Tuần trước ChicStay mới có mô hình 3 bảng phục vụ crawl OTA. Tuần này dựng lại toàn bộ theo chuẩn nghiệp vụ ChicStay Master Data v0.8 — mô hình đầy đủ để vận hành đặt phòng thật, không chỉ để chứa dữ liệu crawl.
P0001, phòng R000001, gói giá RP000001… để đội vận hành đọc mã là biết loại đối tượng.reset (có chốt an toàn bắt buộc bật biến môi trường), migrate, seed, import (mặc định chạy thử, phải thêm --commit mới ghi thật), verify kiểm toàn vẹn sau import.Cùng 4 thương hiệu, 339 ảnh/media, 158 thẻ vibe gắn cho đối tượng, 43 cấu hình mở bán, 405 giá trị danh mục tham chiếu, và 878 ánh xạ nguồn (truy vết ngược mỗi dòng về ô nào trong sheet).
scholarships:read/write/publish tại /admin/api-apps. Trước khi có quyền này, học bổng chỉ lên được staging.