82 lines
2.1 KiB
Python
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]
|