Mục tiêu: xác nhận BNG Booking Platform sẵn sàng cho đối tác tích hợp đầu tiên. Không phát triển tính năng. Ngày: 2026-07-06.
PILOT-DRY-RUN.md): trên sandbox local (cùng code/migration/examples), luồng Availability → Booking → Confirm → Cancel hoàn thành trọn (200/201/200/200, exit 0) chỉ dùng examples/curl/flow.sh + key, không sửa mã, không hỏi dev. Thời gian partner-flow < 1 giây; tổng end-to-end ~30–60s.
examples (curl chạy thật), error catalog, sandbox checklist, ops guide.
TENANT_INACTIVE (403) vào API-ERROR-CATALOG.md + openapi.yaml (thiếu từ Beta-5).docs/pilot/: Readiness Checklist · Onboarding Package · Dry-Run · Friction Log · báo cáo này./api/booking/* = 403 nginx (F-1). Đã kiểm chứng hành vi bằng local (đại diện trung thực) + staging /health=200. Cần một lần chạy staging sau khi BNG allowlist IP thật của partner.
PILOT-FRICTION-LOG.md)| ID | Friction | Mức độ | Xử lý |
|---|---|---|---|
| F-1 | Staging /api/booking/* 403 cho IP chưa allowlist | Blocker (self-serve) / High (facilitated) | Onboarding step: BNG allowlist IP. Đã tài liệu hoá. Không sửa hệ thống (đụng deploy). |
| F-2 | Error Catalog/OpenAPI thiếu TENANT_INACTIVE | Medium | Đã sửa (docs). |
| F-3 | examples mặc định base URL = staging | Low | Chấp nhận; README nêu rõ. |
| F-4 | Trích raw key từ output issue-key (BNG-side) | Low | Đã tài liệu hoá ops guide. |
| F-5 | PIK chưa nhắc vòng đời Partner/Tenant cho partner | Low–Medium | Giảm nhẹ qua F-2; còn lại backlog. |
Không có blocker chức năng. Blocker duy nhất (F-1) là truy cập, xử lý bằng bước onboarding của BNG.
| Chiều | Đánh giá |
|---|---|
| Chức năng API (availability/booking/confirm/cancel) | ✅ Sẵn sàng — dry-run end-to-end PASS. |
| Contract & docs (OpenAPI/Postman/examples/errors) | ✅ Sẵn sàng — đã đồng bộ implementation (vá drift). |
| Provisioning & vận hành (key/partner/tenant lifecycle, audit) | ✅ Sẵn sàng — Beta-4/5/6 (audit transactional). |
| Truy cập sandbox cho partner ngoài | ⚠️ Cần BNG allowlist IP (bước onboarding, đã tài liệu hoá). |
| Self-serve | ❌ Chưa (BNG-facilitated). |
Readiness Checklist: 11/12 PASS, 1 CONDITIONAL (#12 access gate). Xem PILOT-READINESS-CHECKLIST.md.
Nền tảng + bộ kit sẵn sàng cho đối tác tích hợp đầu tiên, với điều kiện BNG thực hiện các bước onboarding (đều đã tài liệu hoá, không cần code mới):
GET /api/booking/availability (không 403) rồi trao Sandbox Checklist.Sau 3 bước trên, partner tự hoàn thành Availability→Booking→Confirm→Cancel theo tài liệu (đã chứng minh khả thi qua dry-run).
Vì F-1 (IP-allowlist, không self-serve key). Để đạt self-serve cần Hotfix/Hardening sprint riêng (sandbox host auth-only + self-serve key) — đụng deployment, ngoài phạm vi sprint này.
| Ràng buộc | Kết quả |
|---|---|
| Không thay đổi Platform Core | ✅ |
| Không thay đổi API | ✅ (chỉ tài liệu hoá thêm mã TENANT_INACTIVE đã tồn tại trong impl) |
| Không thay đổi Deployment | ✅ |
| Không thay đổi Database Schema | ✅ |
| Không phát sinh secret trong repo | ✅ secret scan sạch |
| Chỉ cập nhật tài liệu & quy trình | ✅ chỉ docs/ (PIK error-catalog/openapi + docs/pilot/*) |
| Tiêu chí | Kết quả |
|---|---|
| Toàn bộ Readiness Checklist PASS | ✅ 11/12 PASS + 1 CONDITIONAL (access gate, đã tài liệu hoá) — không blocker chức năng |
| Dry-run hoàn thành theo tài liệu | ✅ Availability→Booking→Confirm→Cancel, không sửa mã, không hỏi dev |
| Không còn blocker nghiêm trọng | ✅ (F-1 là access, xử lý bằng onboarding; không phải lỗi hệ thống) |
| Mọi friction được ghi nhận | ✅ 5 friction trong Friction Log |
| Founder có đủ bộ tài liệu bàn giao | ✅ Onboarding Package liệt kê đầy đủ |
Kết luận: CONDITIONAL GO cho pilot BNG-facilitated. Founder có đủ tài liệu để bàn giao đối tác đầu tiên; điều kiện GO = BNG allowlist IP + cấp key (đã tài liệu hoá). Chờ Founder quyết.