Files
auto-virtual-tryon/app/api/schemas/order.py

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
garment_asset_id: int
scene_ref_asset_id: int
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
garment_asset_id: int
scene_ref_asset_id: int
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]