Files

82 lines
2.1 KiB
Python

"""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]