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>
95 lines
2.1 KiB
Python
95 lines
2.1 KiB
Python
"""Kitchen DTOs — Phase 12.6."""
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from uuid import UUID
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from app.models.types import (
|
|
KitchenItemStatus,
|
|
KitchenTicketSource,
|
|
KitchenTicketStatus,
|
|
LifecycleStatus,
|
|
)
|
|
from app.schemas.common import ORMBase
|
|
|
|
|
|
class KitchenStationCreate(BaseModel):
|
|
venue_id: UUID
|
|
code: str = Field(max_length=50)
|
|
name: str = Field(max_length=255)
|
|
status: LifecycleStatus = LifecycleStatus.ACTIVE
|
|
|
|
|
|
class KitchenStationRead(ORMBase):
|
|
id: UUID
|
|
tenant_id: UUID
|
|
venue_id: UUID
|
|
code: str
|
|
name: str
|
|
status: LifecycleStatus
|
|
is_deleted: bool
|
|
created_by: str | None
|
|
updated_by: str | None
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class KitchenTicketCreate(BaseModel):
|
|
venue_id: UUID
|
|
station_id: UUID | None = None
|
|
source_type: KitchenTicketSource = KitchenTicketSource.POS_TICKET
|
|
source_id: UUID
|
|
code: str = Field(max_length=50)
|
|
notes: str | None = None
|
|
|
|
|
|
class KitchenTicketStatusUpdate(BaseModel):
|
|
status: KitchenTicketStatus
|
|
|
|
|
|
class KitchenTicketRead(ORMBase):
|
|
id: UUID
|
|
tenant_id: UUID
|
|
venue_id: UUID
|
|
station_id: UUID | None
|
|
source_type: KitchenTicketSource
|
|
source_id: UUID
|
|
code: str
|
|
status: KitchenTicketStatus
|
|
notes: str | None
|
|
is_deleted: bool
|
|
created_by: str | None
|
|
updated_by: str | None
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class KitchenTicketItemCreate(BaseModel):
|
|
venue_id: UUID
|
|
kitchen_ticket_id: UUID
|
|
menu_item_id: UUID
|
|
quantity: int = 1
|
|
sort_order: int | None = None
|
|
|
|
|
|
class KitchenTicketItemStatusUpdate(BaseModel):
|
|
status: KitchenItemStatus
|
|
|
|
|
|
class KitchenTicketItemRead(ORMBase):
|
|
id: UUID
|
|
tenant_id: UUID
|
|
venue_id: UUID
|
|
kitchen_ticket_id: UUID
|
|
menu_item_id: UUID
|
|
quantity: int
|
|
status: KitchenItemStatus
|
|
sort_order: int
|
|
is_deleted: bool
|
|
created_by: str | None
|
|
updated_by: str | None
|
|
created_at: datetime
|
|
updated_at: datetime
|