📊 Chính sách so sánh giá — Nhìn một lượt

Tourpik vs Peaktime · Tripon · cập nhật 2026-07-28 · Sổ tay vận hành: Sổ tay tổng quát →  |  한국어 · English · Tiếng Việt

① Toàn bộ pipeline

Thu thậpBảng giá & snapshot của ta
API PK·TR / extension
Căn chỉnhCùng ngày nhận·số đêm·số khách
gom vào bucket
Giá ẩnGiảm giá điều kiện của đối thủ
→ chỉ là huy hiệu thông báo (không phải giá)
Phán địnhSo đơn giá mỗi đêm
tier & cờ
Điều chỉnhso với giá thấp nhất đối thủ
đề xuất · giới hạn
🎯 Đơn vị so sánh cơ bản = "đơn giá mỗi đêm ở cùng điều kiện (ngày nhận · số đêm · số khách)" — điều kiện không khớp thì tuyệt đối không so giá trực tiếp

② Ba mức giá đến từ đâu

TP Tourpik (ta)

  • Bảng giá: KV API quản trị (net/sale) × tỷ giá
  • Snapshot chính thức: giá KRW xác nhận từ API sản phẩm → giá đại diện
  • Phát hiện stale: snapshot vs bảng giá bằng so sánh nội dung (lệch giá · thiếu khoá)
  • Khi stale, trang chờ thu thập lại và hiển thị giá mới. Nhãn "snapshot cũ" chỉ khi thất bại / quá 45 giây

PK Peaktime

  • API chi tiết (giá thực theo số đêm & ngày)
  • 1/2/3BR lưu bucket riêng theo residual (chống lẫn giá phụ)
  • Phân tích quy tắc giá ẩn từ trang chi tiết (long-stay · early-bird)

TR Tripon

  • API phòng (bản chất là giá thấp nhất cấp khách sạn)
  • Ghi chú "theo phòng rẻ nhất"
  • Xoá cache ngay khi thu thập lại — hiển thị giá trị mới tức thì
Ưu tiên nguồn giá đối thủÝ nghĩa
1️⃣ Khớp điều kiện (bucket)Thu thập với cùng ngày nhận & số đêm — tin cậy nhất
2️⃣ Trực tiếp (live)Giá trị thu thập thời gian thực
3️⃣ Thấp nhất tự độngGiá thấp nhất của ngày nhận khác — có ghi ngày + cảnh báo "lệch điều kiện △"

③ Cây quyết định giá ẩn — Quyết định có hiện huy hiệu thông báo hay không (không tạo ra giá)

1. Khách sạn này có quy tắc giảm giá đã phân tích? (long-stay N+ đêm x% / early-bird N ngày x%)
KHÔNGKhông có giá ẩn — so giá niêm yết như bình thường ↓ tiếp
2. Ngày nhận nằm trong kỳ hạn quy tắc (hợp các mùa) và không dính ngày loại trừ/blackout?
KHÔNGKhông áp dụng ↓ tiếp
3. Đủ điều kiện? (số đêm ≥ minNights / lead đặt phòng ≥ leadDays)
KHÔNGKhông áp dụng ↓ tiếp
4. Đã tính sẵn vào giá niêm yết chưa? — bằng chứng hợp lệ duy nhất là so đơn giá theo số đêm
nếu đơn giá N đêm thấp hơn đơn giá 1 đêm từ 0.5%+ (cùng phòng & ngày nhận) thì đã áp sẵn
ĐÃ ÁPBỏ qua — chống giảm giá kép CHƯA ÁPChỉ hiển thị huy hiệu thông báo — "có thể có giá ẩn −N% (chưa xác minh)". Giá vẫn giữ nguyên giá niêm yết
🚨🚨 CEO xác định 2026-08-15 — cây quyết định này không tạo ra giá: "CHƯA ÁP" ở bước 4 chỉ chứng minh mức giảm chưa được tính vào giá niêm yết, chứ không chứng minh mức giảm đó có tồn tại. Ngày 2026-08-15 đã xảy ra sự cố hiển thị 269.919 KRW cho phòng mà trang niêm yết 317.552 KRW. Vì vậy kết quả của cây này chỉ dùng cho huy hiệu thông báo; giá, giá đề xuất và dữ liệu gửi đi chỉ dùng mức giảm đã đo trên trang thanh toán.
🚨 Quy tắc tuyệt đối: mức giảm từ giá gạch → giá bán (VD ↓10%) là giảm giá marketing thường trực, không phụ thuộc số đêm. Cấm kết luận "đã áp sẵn" chỉ vì tỷ lệ hiển thị trông giống quy tắc — giảm giá điều kiện được cộng thêm ở bước thanh toán (đã kiểm chứng: đơn giá 1/2/3 đêm giống hệt qua API + dòng [ưu đãi ở dài] trong cửa sổ thanh toán).
Nguyên tắc an toàn: quy tắc mơ hồ (cùng điều kiện nhưng mức giảm khác nhau, kỳ hạn không rõ, …) bị cổng rủi ro tạm giữ toàn bộ — không hiển thị giá ẩn an toàn hơn giảm quá tay. Kiểm toán toàn bộ (53 quy tắc): 49 chưa áp · 0 đã áp (2026-07-28).

④ Phán định — Ai rẻ hơn, chênh bao nhiêu

Giá đại diện của ta (mỗi đêm) vs giá niêm yết trên trang của từng đối thủ (thông báo giá ẩn chỉ là huy hiệu, không làm đổi con số này)
diff = ta − thấp nhất đối thủđắt hơn +N₩ / rẻ hơn −N₩ / bằng nhau
Kiểm tra cờ → gán tier ưu tiên
T0
⚠ Nghi dữ liệu

nghi khớp phòng · giá bất thường · lệch bữa sáng · nghi lỗi nhập (≤ nửa giá thấp nhất) · công bố≠thực tế

T1
🔴 Ta đắt hơn

diff > 0 — ưu tiên điều chỉnh số 1

T2
⚪ Không so được

giá chưa rõ · chưa thu thập đối thủ · thiếu sức chứa (chỉ hiển thị)

T3
🟢 Bình thường

ta bằng hoặc rẻ hơn

Khớp phòng: bỏ khớp tự động → so cấp khách sạn + ánh xạ xác nhận thủ công. Chuẩn hoá room-sig tạo ứng viên; lệch (số phòng ngủ, v.v.) chỉ giương cờ nghi vấn.

⑤ Điều chỉnh giá (Workbench) — Đề xuất và giới hạn

Thấp nhất đối thủtheo giá niêm yết trên trang
Chế độ ₩ (mặc định)thấp nhất − khoảng cấu hình
ngẫu nhiên theo phòng (bước ₩10)
Sàn Netkẹp 🟡 khi dưới
sàn Net+₩/%
Gửichỉ LIVE gửi thật
còn lại niêm phong (chỉ ghi)
Ưu tiên markuphàng khuyến mãi > hàng phòng > chung khách sạn  ·  Sale mới = Net × (1+markup%)
Bỏ quaphòng không có giá đối thủ · phòng bỏ chọn (lý do theo hàng: loại trừ / trùng sàn / không có giá đối thủ / đã đạt mục tiêu)
Phòng thủ cuốiguard chính sách phía server kiểm tra lại và chặn ngay trước khi truyền

⑥ Công cụ kiểm định

Công cụMục đích
npm testcú pháp + lịch + khoá + hồi quy khớp phòng (room-sig)
scripts/audit-hidden-applied.jskiểm toán toàn bộ tiền đề giá ẩn (đơn giá 1 đêm vs N đêm)
scripts/refresh-hidden-promos.jsphân tích lại toàn bộ quy tắc giá ẩn (mặc định dry-run · --apply có backup · dọn rủi ro)
scripts/audit-room-matches.js · audit-official-products.js · check-curated-cond.mjskiểm toán khớp phòng · snapshot của ta · nhất quán điều kiện tuyển chọn