# Phase Handover — 12.1 Digital Menu Catalog ## Metadata | Field | Value | | --- | --- | | Phase ID | hospitality-12.1 | | Title | Digital Menu Catalog | | Status | Complete | | Service(s) | hospitality | | Version | 0.12.1.0 | | Date | 2026-07-25 | | ADR(s) | ADR-017 (no new ADR — catalog depth within Hospitality boundary) | ## Summary Phase 12.1 deepened the **Torbat Food** digital menu catalog on `hospitality-service` / `hospitality_db` (port **8009**, version **0.12.1.0**). Additive migration `0002_phase_121_digital_menu_catalog` added catalog tables and MenuItem enrichment fields. **No POS / kitchen / QR ordering / reservation engines.** ## What Changed | Area | Change | | --- | --- | | Models | `app/models/catalog.py` + MenuItem additive columns | | Migration | Alembic `0002_phase_121_digital_menu_catalog` | | APIs | Allergens, modifiers, availability, media refs, localizations | | Events / Permissions | Catalog `hospitality.*` types and trees | | Capabilities | `phase: 12.1`, `digital_menu_catalog: true` | | Tests | `test_catalog.py` + updated architecture/migration/docs/API | ## Public APIs | Method | Path | Notes | | --- | --- | --- | | POST/GET | `/api/v1/allergens` | Venue-scoped allergen catalog | | POST/GET | `/api/v1/modifier-groups` | Selection rules only | | POST/GET | `/api/v1/modifier-options` | Price deltas | | POST | `/api/v1/menu-item-modifiers/link` | Link item → group | | POST | `/api/v1/menu-item-allergens/link` | Link item → allergen | | POST/GET | `/api/v1/availability-windows` | Time windows by scope | | POST/GET | `/api/v1/menu-media-refs` | Storage file_ref only | | POST | `/api/v1/menu-localizations/upsert` | Multi-language shells | Plus existing 12.0 foundation surfaces unchanged (additive MenuItem fields). ## Events | Event type | Aggregate | | --- | --- | | `hospitality.allergen.created` | allergen | | `hospitality.modifier_group.created` | modifier_group | | `hospitality.modifier_option.created` | modifier_option | | `hospitality.menu_item_modifier.linked` | menu_item_modifier | | `hospitality.menu_item_allergen.linked` | menu_item_allergen | | `hospitality.availability_window.created` | availability_window | | `hospitality.menu_media_ref.created` | menu_media_ref | | `hospitality.menu_localization.upserted` | menu_localization | ## Extension Points | Extension point | How to extend | Forbidden uses | | --- | --- | --- | | Media `file_ref` | Resolve via Storage API/Events | Do not store blobs in hospitality_db | | Availability windows | Consume in QR Menu / Ordering later | Do not embed ordering engine here | | Modifier selection rules | Drive cart/POS later | Do not implement cart/checkout in 12.1 | ## Known Limitations - No QR Menu public rendering or ordering cart - No kitchen ticket mapping from modifiers - Media is reference-only (no binary upload API in Hospitality) - Bundle gating of catalog APIs not enforced at middleware yet (permission keys registered) ## Migration Notes | Item | Detail | | --- | --- | | Alembic revision(s) | `0002_phase_121_digital_menu_catalog` (down_revision `0001_initial`) | | Upgrade steps | Run alembic upgrade head on `hospitality_db` | | Downgrade support | Drops catalog tables; removes additive MenuItem columns | | Data backfill | N/A (new nullable / defaulted columns) | | Breaking changes | None — additive only | ## Quality Gates | Gate | Result | | --- | --- | | Architecture | Pass | | Dependency | Pass | | Backward Compatibility | Pass (additive) | | Health / Capability | Pass | | Permission | Pass | | API | Pass | | Repository / Service | Pass | | Migration | Pass | | Tenant Isolation | Pass | | Security | Pass | | Performance | Pass | | Documentation | Pass | | Integration (contracts only) | Pass | | Self Audit | Pass | ## Next Phase Entry 1. This handover + [hospitality-phase-12-1.md](../hospitality-phase-12-1.md) 2. Updated module registry / manifests (version `0.12.1.0`) 3. Phase **12.2 — QR Menu & QR Ordering** (do not skip; no POS yet) ## Related Documents - [hospitality-phase-12-1.md](../hospitality-phase-12-1.md) - [hospitality-roadmap.md](../hospitality-roadmap.md) - [phase-handover/phase-12-0.md](phase-12-0.md) - [ADR-017](../architecture/adr/ADR-017.md) - [module-registry.md](../module-registry.md#hospitality)