TorbatYar/docs/service-snapshots/hospitality.yaml
Mortezakoohjani 5c6a2e78cf feat(platform): seed service registry, deploy all modules, and fix homepage catalog.
Register all active platform services and base features in core DB so admin can manage them, add delivery/hospitality/sports-center backend phases, update apps catalog and production deploy tooling.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 12:39:51 +03:30

240 lines
11 KiB
YAML

# Hospitality Platform service snapshot — regenerated after each Complete phase.
# Spec: docs/ai-framework/service-snapshot-policy.md
schema_version: 1
snapshot_version: 8
service_name: hospitality
commercial_product: Torbat Food
current_version: "0.12.8.0"
current_phase: hospitality-12.8
last_completed_phase: hospitality-12.8
next_phase: hospitality-12.9
completed_phases:
- hospitality-12.0
- hospitality-12.1
- hospitality-12.2
- hospitality-12.3
- hospitality-12.4
- hospitality-12.5
- hospitality-12.6
- hospitality-12.7
- hospitality-12.8
remaining_phases:
- hospitality-12.9
- hospitality-12.10
registered_modules:
- venues
- branches
- dining_areas
- tables
- menus
- menu_categories
- menu_items
- allergens
- modifier_groups
- modifier_options
- availability_windows
- menu_media_refs
- menu_localizations
- qr_codes
- qr_menu_sessions
- qr_ordering_sessions
- carts
- cart_lines
- reservations
- table_assignments
- service_requests
- waitlist_entries
- pos_registers
- pos_shifts
- pos_tickets
- pos_ticket_lines
- pos_payments
- pos_discounts
- pos_tax_lines
- pos_floor_plans
- pos_stations
- kitchen_stations
- kitchen_tickets
- kitchen_ticket_items
- connector_registrations
- connector_dispatches
- analytics_report_definitions
- analytics_snapshots
- bundles
- feature_toggles
- roles
- permissions
- configurations
- settings
- audit
enabled_capabilities:
- foundation
- feature_based_architecture
- bundle_based_licensing
- capability_discovery
- feature_toggle
- digital_menu_shell
- digital_menu_catalog
- table_service_shell
- qr_menu
- qr_ordering
- table_service
- reservation
- pos_lite
- pos_pro
- kitchen
- delivery_integration
- accounting_integration
- crm_integration
- loyalty_integration
- communication_integration
- website_integration
- analytics
enabled_bundles:
- digital_menu
- qr_menu
- qr_ordering
- pos_lite
- pos_pro
- kitchen
- reservation
- table_service
- delivery_connector
- accounting_connector
- crm_connector
- loyalty_connector
- communication_connector
- website_connector
- analytics
- ai_assistant
public_apis:
- { method: GET, path: /health, permission: public }
- { method: GET, path: /capabilities, permission: public }
- { method: POST, path: /api/v1/venues, permission: hospitality.venues.create }
- { method: POST, path: /api/v1/menus, permission: hospitality.menus.create }
- { method: POST, path: /api/v1/allergens, permission: hospitality.allergens.manage }
- { method: POST, path: /api/v1/modifier-groups, permission: hospitality.modifier_groups.manage }
- { method: POST, path: /api/v1/availability-windows, permission: hospitality.availability_windows.manage }
- { method: POST, path: /api/v1/menu-media-refs, permission: hospitality.menu_media.manage }
- { method: POST, path: /api/v1/menu-localizations/upsert, permission: hospitality.menu_localizations.manage }
- { method: POST, path: /api/v1/qr-codes, permission: hospitality.qr_codes.manage }
- { method: GET, path: "/api/v1/qr-codes/by-token/{token}", permission: hospitality.qr_codes.view }
- { method: POST, path: /api/v1/qr-menu-sessions, permission: hospitality.qr_menu_sessions.manage }
- { method: POST, path: /api/v1/qr-ordering-sessions, permission: hospitality.qr_ordering_sessions.manage }
- { method: POST, path: "/api/v1/qr-ordering-sessions/{id}/submit", permission: hospitality.qr_ordering_sessions.manage }
- { method: POST, path: /api/v1/carts, permission: hospitality.carts.manage }
- { method: POST, path: /api/v1/cart-lines, permission: hospitality.carts.manage }
- { method: POST, path: /api/v1/reservations, permission: hospitality.reservations.manage }
- { method: POST, path: "/api/v1/reservations/{id}/status", permission: hospitality.reservations.manage }
- { method: POST, path: /api/v1/table-assignments, permission: hospitality.table_assignments.manage }
- { method: POST, path: "/api/v1/table-assignments/{id}/release", permission: hospitality.table_assignments.manage }
- { method: POST, path: /api/v1/service-requests, permission: hospitality.service_requests.manage }
- { method: POST, path: "/api/v1/service-requests/{id}/status", permission: hospitality.service_requests.manage }
- { method: POST, path: /api/v1/waitlist, permission: hospitality.waitlist.manage }
- { method: POST, path: "/api/v1/waitlist/{id}/status", permission: hospitality.waitlist.manage }
- { method: POST, path: /api/v1/pos-registers, permission: hospitality.pos_registers.manage }
- { method: POST, path: /api/v1/pos-shifts, permission: hospitality.pos_shifts.manage }
- { method: POST, path: "/api/v1/pos-shifts/{id}/close", permission: hospitality.pos_shifts.manage }
- { method: POST, path: /api/v1/pos-tickets, permission: hospitality.pos_tickets.manage }
- { method: POST, path: "/api/v1/pos-tickets/{id}/void", permission: hospitality.pos_tickets.manage }
- { method: POST, path: /api/v1/pos-ticket-lines, permission: hospitality.pos_tickets.manage }
- { method: POST, path: /api/v1/pos-payments, permission: hospitality.pos_payments.manage }
- { method: POST, path: /api/v1/pos-discounts, permission: hospitality.pos_discounts.manage }
- { method: POST, path: /api/v1/pos-tax-lines, permission: hospitality.pos_tax_lines.manage }
- { method: POST, path: /api/v1/pos-floor-plans, permission: hospitality.pos_floor_plans.manage }
- { method: POST, path: /api/v1/pos-stations, permission: hospitality.pos_stations.manage }
- { method: POST, path: /api/v1/kitchen-stations, permission: hospitality.kitchen_stations.manage }
- { method: POST, path: /api/v1/kitchen-tickets, permission: hospitality.kitchen_tickets.manage }
- { method: POST, path: "/api/v1/kitchen-tickets/{id}/status", permission: hospitality.kitchen_tickets.manage }
- { method: POST, path: /api/v1/kitchen-ticket-items, permission: hospitality.kitchen_tickets.manage }
- { method: POST, path: "/api/v1/kitchen-ticket-items/{id}/status", permission: hospitality.kitchen_tickets.manage }
- { method: POST, path: /api/v1/connector-registrations, permission: hospitality.connector_registrations.manage }
- { method: POST, path: /api/v1/connector-dispatches, permission: hospitality.connector_dispatches.manage }
- { method: POST, path: /api/v1/analytics-reports, permission: hospitality.analytics_reports.manage }
- { method: POST, path: /api/v1/analytics-snapshots/refresh, permission: hospitality.analytics_snapshots.manage }
- { method: POST, path: /api/v1/bundle-definitions, permission: hospitality.bundles.manage }
- { method: POST, path: /api/v1/tenant-bundles/activate, permission: hospitality.tenant_bundles.manage }
- { method: POST, path: /api/v1/feature-toggles/upsert, permission: hospitality.feature_toggles.manage }
published_events:
- { event_type: hospitality.venue.created, version: "1" }
- { event_type: hospitality.menu.created, version: "1" }
- { event_type: hospitality.allergen.created, version: "1" }
- { event_type: hospitality.modifier_group.created, version: "1" }
- { event_type: hospitality.availability_window.created, version: "1" }
- { event_type: hospitality.menu_media_ref.created, version: "1" }
- { event_type: hospitality.menu_localization.upserted, version: "1" }
- { event_type: hospitality.qr_code.created, version: "1" }
- { event_type: hospitality.qr_menu_session.created, version: "1" }
- { event_type: hospitality.qr_ordering_session.created, version: "1" }
- { event_type: hospitality.qr_ordering_session.submitted, version: "1" }
- { event_type: hospitality.cart.created, version: "1" }
- { event_type: hospitality.cart_line.added, version: "1" }
- { event_type: hospitality.reservation.created, version: "1" }
- { event_type: hospitality.reservation.status_changed, version: "1" }
- { event_type: hospitality.table_assignment.created, version: "1" }
- { event_type: hospitality.service_request.created, version: "1" }
- { event_type: hospitality.waitlist_entry.created, version: "1" }
- { event_type: hospitality.pos_register.created, version: "1" }
- { event_type: hospitality.pos_shift.opened, version: "1" }
- { event_type: hospitality.pos_shift.closed, version: "1" }
- { event_type: hospitality.pos_ticket.created, version: "1" }
- { event_type: hospitality.pos_ticket.voided, version: "1" }
- { event_type: hospitality.pos_ticket_line.added, version: "1" }
- { event_type: hospitality.pos_payment.recorded, version: "1" }
- { event_type: hospitality.pos_discount.applied, version: "1" }
- { event_type: hospitality.pos_tax_line.added, version: "1" }
- { event_type: hospitality.pos_floor_plan.created, version: "1" }
- { event_type: hospitality.pos_station.created, version: "1" }
- { event_type: hospitality.kitchen_station.created, version: "1" }
- { event_type: hospitality.kitchen_ticket.created, version: "1" }
- { event_type: hospitality.kitchen_ticket.status_changed, version: "1" }
- { event_type: hospitality.kitchen_ticket_item.added, version: "1" }
- { event_type: hospitality.connector_registration.created, version: "1" }
- { event_type: hospitality.connector_dispatch.created, version: "1" }
- { event_type: hospitality.analytics_report_definition.created, version: "1" }
- { event_type: hospitality.analytics_snapshot.refreshed, version: "1" }
- { event_type: hospitality.tenant_bundle.activated, version: "1" }
- { event_type: hospitality.feature_toggle.upserted, version: "1" }
permission_prefix: hospitality.*
active_adrs:
- ADR-001
- ADR-003
- ADR-006
- ADR-017
integration_contracts:
- AccountingProvider (mock implementation for local dispatch simulation)
- CRMProvider (mock implementation for local dispatch simulation)
- LoyaltyProvider (mock implementation for local dispatch simulation)
- CommunicationProvider (mock implementation for local dispatch simulation)
- DeliveryProvider (mock implementation for local dispatch simulation)
- WebsiteBuilderProvider (mock implementation for local dispatch simulation)
- StorageProvider (contract only)
- AIProvider (contract only)
known_limitations:
- No accounting journal posting engines
- No real payment gateway integration (local records only)
- No real KDS vendor integration; no automatic POS/QR-to-kitchen routing engine
- No automatic table-to-reservation matching engine
- Media is Storage file_ref only
- Bundle gating of catalog/QR/table-service/POS/kitchen APIs not enforced at middleware yet
- POS Lite one-open-shift-per-register rule enforced at service layer only
- Connector dispatch is simulated locally via no-op mocks; no real connector SDKs, retries, or webhook acks yet
- Analytics limited to simple local COUNT(*) metrics; no scheduled refresh or cross-service warehouse joins
open_todos: []
last_handover_reference: docs/phase-handover/phase-12-8.md
last_updated: "2026-07-26"