"""Order API schemas.""" from datetime import datetime from pydantic import BaseModel from app.api.schemas.asset import AssetRead from app.domain.enums import CustomerLevel, OrderStatus, ReviewTaskStatus, ServiceMode, WorkflowStepName class CreateOrderRequest(BaseModel): """Request payload for creating an order.""" customer_level: CustomerLevel service_mode: ServiceMode model_id: int pose_id: int | None = None garment_asset_id: int scene_ref_asset_id: int | None = None class CreateOrderResponse(BaseModel): """Response returned after an order has been created.""" order_id: int workflow_id: str status: OrderStatus class OrderDetailResponse(BaseModel): """Order detail response.""" order_id: int customer_level: CustomerLevel service_mode: ServiceMode status: OrderStatus model_id: int pose_id: int | None garment_asset_id: int scene_ref_asset_id: int | None final_asset_id: int | None workflow_id: str | None current_step: WorkflowStepName | None current_revision_asset_id: int | None = None current_revision_version: int | None = None latest_revision_asset_id: int | None = None latest_revision_version: int | None = None revision_count: int = 0 review_task_status: ReviewTaskStatus | None = None pending_manual_confirm: bool = False final_asset: AssetRead | None created_at: datetime updated_at: datetime class OrderListItemResponse(BaseModel): """Order list item response for overview screens.""" order_id: int workflow_id: str | None customer_level: CustomerLevel service_mode: ServiceMode status: OrderStatus current_step: WorkflowStepName | None updated_at: datetime final_asset_id: int | None review_task_status: ReviewTaskStatus | None = None latest_revision_asset_id: int | None = None latest_revision_version: int | None = None revision_count: int = 0 pending_manual_confirm: bool = False class OrderListResponse(BaseModel): """Order list response.""" page: int limit: int total: int total_pages: int items: list[OrderListItemResponse]