Enterprise
Sales Kit — Tài liệu 12/14. Cho khách hàng lớn / kỹ thuật muốn ra mắt nền tảng OTA Đa Dịch Vụ (vanlangtoi.com = Nền tảng OTA Đa Dịch Vụ của Việt Nam) mang thương hiệu riêng: kiến trúc, khả năng mở rộng, bảo mật, API, SSO, analytics, đa đối tác, đa thương hiệu. Trung thực về cái đã có vs cái đang triển khai.
Chú giải trạng thái (chỉ 3): ✅ Production Ready (code đã xây + kiểm thử) · 🟡 In Implementation (đã được Founder duyệt, chương trình đã bắt đầu — discovery/design/architecture/dev/integration/testing; có thể chưa viết code; chưa hoàn thiện) · ❌ Deprecated (không có mục nào).
Cảnh báo bán hàng: enterprise thường có đội IT sẽ kiểm chứng. Đừng phóng đại. Cái đang triển khai (SSO, RLS-production, analytics nâng cao) phải gắn nhãn 🟡 In Implementation và không được nói là "đã hỗ trợ / có sẵn". Sự chính xác kỹ thuật = uy tín.
Kiến trúc tổng thể
vanlangtoi.com (Nền tảng OTA Đa Dịch Vụ của Việt Nam) được xây theo Domain-Driven Design + kiến trúc sạch (clean architecture), tách 3 lớp:
Nguyên tắc cốt lõi: trừu tượng Listing / Inventory / Reservation — reservable-agnostic, không khoá vào "Hotel/Room". Frontend nối backend qua seam (ports → mock/real), đổi implementation không đụng UI.
| Lớp | Vai trò | Trạng thái |
|---|---|---|
platform-domain |
Logic nghiệp vụ thuần (không phụ thuộc hạ tầng) | ✅ 42 test |
platform-infrastructure |
Adapters DB, API, auth, outbox, ops | ✅ ~100+ test |
| Frontend | 5 portal + Web App vận hành | 🟡 UI đầy đủ; Guest/Partner nối live |
Định vị lớn hơn: Booking là Module #1 của Travel OS — một nền tảng multi-tenant, event-driven mà các module mới (Catalog, Pricing, Payment, Partner, CRM, Notification, Analytics) và vertical (Medical Tourism) sẽ "cắm vào", copy khuôn Booking. (Chi tiết: 13 — Roadmap.)
1. Scalability (khả năng mở rộng)
| Khía cạnh | Cơ chế | Trạng thái |
|---|---|---|
| Chống overbooking | Khoá DB FOR UPDATE khi tạo đơn |
✅ |
| Danh sách lớn | Phân trang keyset/cursor (không offset chậm) | ✅ |
| Xử lý sự kiện | Outbox at-least-once + dead-letter + replay + advisory lock | ✅ |
| Tách service tương lai | Modular monolith → tách theo ranh giới context khi cần | 🟡 In Implementation (thiết kế sẵn) |
| Event bus thật (Kafka/NATS) | Thay outbox-console khi quy mô lớn | 🟡 In Implementation |
| Benchmark tải chính thức | Chưa công bố; cần load test theo quy mô khách | 🟡 In Implementation |
Nói thật: kiến trúc thiết kế để mở rộng, nhưng chưa có benchmark tải công bố. Với khách enterprise, đề xuất load test theo quy mô của họ trong pilot.
2. Security (bảo mật)
| Kiểm soát | Cơ chế | Trạng thái |
|---|---|---|
| Cách ly đa đối tác | Repo tenant-scoped + guard app-layer | ✅ |
| Row-Level Security (RLS) | Policy SQL + withTenant + test |
✅ staging · 🟡 In Implementation: bật ở production (chờ DR drill) |
| Chống IDOR | Cross-tenant → 404, không lộ tồn tại | ✅ |
| Bảo vệ API key | Key hash lưu server; 0 lần lộ ra bundle browser | ✅ |
| Audit trail | State + audit nguyên tử trong cùng transaction | ✅ |
| Log redaction | Che dữ liệu nhạy cảm trong log | ✅ |
| Không lưu dữ liệu thẻ | Thanh toán off-platform | ✅ |
| Auth người dùng cuối | Session/JWT/RBAC | 🟡 In Implementation (điều kiện tiên quyết để public) |
| Rate-limit gateway production | Hiện chỉ guard demo (in-memory) | 🟡 In Implementation |
| Backup tự động | Hiện pg_dump thủ công |
🟡 In Implementation |
Tài liệu bảo mật chi tiết: docs/backend/SECURITY-CHECKLIST.md, RLS-*.md. Với enterprise, chia sẻ được các tài liệu này để đội IT của họ thẩm định.
3. API
| Năng lực | Chi tiết | Trạng thái |
|---|---|---|
| Booking API v1 (v1.1) | availability · create (idempotency) · confirm/cancel/check-in/out/no-show · list (keyset) | ✅ |
| Xác thực | x-bng-api-key (hash) + basic-auth gate; tenant từ key |
✅ |
| Idempotency | Idempotency-Key khi tạo đơn; eventId cho outbox | ✅ |
| DTO validation | Zod; error→HTTP mapping; không lộ stack | ✅ |
| Bộ tích hợp | OpenAPI · Postman · ví dụ curl/JS/Python · error catalog | ✅ |
| Webhook cho đối tác | Có hạ tầng outbox; provider webhook thật | 🟡 In Implementation |
| Public API / MCP | Sau auth + production | 🟡 In Implementation |
Bằng chứng mạnh cho enterprise: đối tác pilot đã đi hết luồng chỉ bằng bộ tài liệu tích hợp (Gamma-1: chạy examples/*/flow exit 0). Nói: "API của tụi em tự-phục-vụ được bằng tài liệu, không cần cầm tay."
4. SSO (đăng nhập một lần)
Trạng thái: 🟡 In Implementation (đã được Founder duyệt, chương trình đã bắt đầu; chưa hoàn thiện, chưa có SSO chạy thật).
- Hiện tại: xác thực là API key server-to-server; auth người dùng cuối và SSO (SAML/OIDC) đang triển khai, chưa có tính năng chạy thật.
- SSO gắn với việc xây auth người dùng cuối — điều kiện tiên quyết cho enterprise identity.
Nói thẳng với khách enterprise: "SSO — 🟡 In Implementation (đã được duyệt, gắn với lớp auth người dùng cuối đang triển khai); chưa có trong bản chạy hôm nay. Nếu SSO là bắt buộc, mình đưa vào phạm vi triển khai như một hạng mục có kế hoạch." Không khẳng định "hỗ trợ SSO" hay "SSO có sẵn".
5. Analytics
| Năng lực | Chi tiết | Trạng thái |
|---|---|---|
| Metrics vận hành | Health report (multi-check), metrics snapshot (gồm gmvVnd, liveProvisioning), outbox stats — qua Ops CLI + /app/health |
✅ |
| GMV toàn sàn (marketplace) | Platform Admin hiển thị | 🟡 UI demo (mock) |
| Báo cáo cơ bản | Web App /app/report |
✅ (cơ bản) |
| BI / analytics nâng cao / đối soát tự động | Dashboard phân tích sâu | 🟡 In Implementation |
| Metrics exporter (Prometheus) / alerting | Giám sát production | 🟡 In Implementation |
North Star nội bộ: Activated Tenant GMV — nền tảng đã có nền đo (ops:metrics). Nhưng analytics khách-hàng-facing nâng cao đang ở trạng thái 🟡 In Implementation, đừng bán như BI đầy đủ hay đã có sẵn.
6. Multi-tenant (đa đối tác)
Trạng thái: ✅ ĐÃ CHỨNG MINH (năng lực lõi mạnh nhất cho enterprise).
- Mỗi đối tác một không gian dữ liệu cách ly; truy vấn tenant-scoped.
- 4 lớp isolation + RLS-readiness (bật ở staging).
- Vòng đời Partner (pending/active/suspended/revoked) + Tenant (provisioned/active/suspended/archived) + cổng booking — có test (
ops-partner.test.ts,ops-tenant.test.ts,tenant-provisioning-e2e.test.ts). - Cross-tenant access → 404.
7. Multi-brand (đa thương hiệu)
| Năng lực | Chi tiết | Trạng thái |
|---|---|---|
| Brand theme registry | 5 theme (default, minimal, family, luxury, beach) + brand-switcher | ✅ (frontend) |
| Theme-per-tenant | Mỗi tenant một bộ nhận diện | 🟡 "Tenant/Theme (5 brand)" — status partial (mock) |
| Custom domain per brand | Tên miền riêng mỗi thương hiệu | 🟡 In Implementation (DNS+SSL tự động) |
| Sáng/tối | Theme toggle | ✅ |
Multi-brand ở tầng giao diện đã có (theme registry); theme-per-tenant runtime + tự động hoá custom domain đang ở trạng thái 🟡 In Implementation.
Bảng tóm cho đội IT của khách (một trang)
| Hạng mục | Trạng thái | Ghi chú |
|---|---|---|
| DDD + clean architecture | ✅ | 3 lớp tách bạch, ~150+ test |
| Booking API v1 + idempotency | ✅ | Bộ tích hợp tự-phục-vụ |
| Multi-tenant + cách ly | ✅ | RLS staging; bật production = 🟡 In Implementation |
| Outbox (at-least-once, DLQ, replay) | ✅ | Advisory lock |
| Observability (health/metrics/log) | ✅ | Ops CLI |
| Chống overbooking + audit | ✅ | Test-covered |
| Auth người dùng cuối | 🟡 | In Implementation · tiên quyết cho public/SSO |
| SSO | 🟡 | In Implementation · gắn với auth |
| Thanh toán tự động | 🟡 | In Implementation · hiện off-platform |
| Notification production | 🟡 | In Implementation · hiện console-only |
| Analytics/BI nâng cao | 🟡 | In Implementation · metrics vận hành đã có |
| Production public / RLS-on | 🟡 | In Implementation · chờ hardening + DR drill |
| Benchmark tải | 🟡 | In Implementation · cần load test theo quy mô |
Thông điệp enterprise: "Phần lõi giao dịch — engine, đa đối tác, audit, outbox, API — đã kiểm chứng bằng test và staging. Các lớp production-grade (auth end-user, SSO, thanh toán, analytics nâng cao) đang ở trạng thái 🟡 In Implementation (đã được duyệt, chương trình đã bắt đầu — chưa hoàn thiện); nếu là bắt buộc, mình đưa vào phạm vi có kế hoạch. Tụi em nói đúng trạng thái để đội anh/chị thẩm định được."
Tiếp theo: 13 — Product Roadmap.