Initial kitchen scaffold — Phase 1 kitchen port (build-verified 2026-07-11)

FastAPI backend (Python 3.11, MSSQL ODBC for SambaPOS, Azure DI OCR),
kitchen_db on central PG. React/TS/Vite frontend with navy sidebar layout.

Backend: auth.py (APP_SLUG=kitchen, SimpleNamespace — archive routes use
.kitchen_id/.is_admin without modification), main.py (51 migrations, scheduler,
internal router for KDS bookings feed), api/internal.py, full archive API
(31 routers: invoices, recipes, menus, sambapos, resos, newbook, disputes,
purchase_orders, etc.), models, migrations, OCR pipeline.
kitchen_id pinned to 1 (B1 — single hotel).

Frontend: AuthGate (app=kitchen, token shim for archive compat — B5b pending),
Layout (navy sidebar, 6 sections, Lucide icons, teal --app-primary),
App.tsx (Outlet pattern, UploadApp outside Layout), index.css (full :root block).
strict: false — archive components have type issues; build clean.

Note: 45 archive components call fetch('/api/...') without /kitchen/ prefix
(B5b). Runtime 404s; deferred until after initial testing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
jtricerolph 2026-07-12 12:15:39 +00:00
commit 8d688b459d
10003 changed files with 1928395 additions and 0 deletions

View file

@ -0,0 +1,44 @@
from .user import User, Kitchen
from .invoice import Invoice
from .supplier import Supplier
from .gp import RevenueEntry, GPPeriod
from .settings import KitchenSettings
from .line_item import LineItem
from .field_mapping import FieldMapping
from .product_definition import ProductDefinition
from .newbook import NewbookGLAccount, NewbookDailyRevenue, NewbookDailyOccupancy, NewbookSyncLog
from .resos import ResosBooking, ResosDailyStats, ResosOpeningHour, ResosSyncLog
from .backup import BackupHistory
from .acknowledged_price import AcknowledgedPrice
from .dispute import (
InvoiceDispute, DisputeLineItem, DisputeAttachment, DisputeActivity, CreditNote,
DisputeType, DisputeStatus, DisputePriority
)
from .purchase_order import PurchaseOrder, PurchaseOrderLineItem
from .ingredient import Ingredient, IngredientCategory, IngredientSource, IngredientFlag
from .food_flag import FoodFlagCategory, FoodFlag, LineItemFlag, RecipeFlag, RecipeFlagOverride
from .recipe import (
Recipe, MenuSection, RecipeIngredient, RecipeSubRecipe,
RecipeStep, RecipeImage, RecipeChangeLog, RecipeCostSnapshot,
RecipeTextFlagDismissal,
)
from .menu import Menu, MenuDivision, MenuItem
from .event_order import EventOrder, EventOrderItem
__all__ = [
"User", "Kitchen", "Invoice", "Supplier", "RevenueEntry", "GPPeriod",
"KitchenSettings", "LineItem", "FieldMapping", "ProductDefinition",
"NewbookGLAccount", "NewbookDailyRevenue", "NewbookDailyOccupancy", "NewbookSyncLog",
"ResosBooking", "ResosDailyStats", "ResosOpeningHour", "ResosSyncLog",
"BackupHistory", "AcknowledgedPrice",
"InvoiceDispute", "DisputeLineItem", "DisputeAttachment", "DisputeActivity", "CreditNote",
"DisputeType", "DisputeStatus", "DisputePriority",
"PurchaseOrder", "PurchaseOrderLineItem",
"Ingredient", "IngredientCategory", "IngredientSource", "IngredientFlag",
"FoodFlagCategory", "FoodFlag", "LineItemFlag", "RecipeFlag", "RecipeFlagOverride",
"Recipe", "MenuSection", "RecipeIngredient", "RecipeSubRecipe",
"RecipeStep", "RecipeImage", "RecipeChangeLog", "RecipeCostSnapshot",
"RecipeTextFlagDismissal",
"Menu", "MenuDivision", "MenuItem",
"EventOrder", "EventOrderItem",
]