from pydantic import BaseModel, Field from typing import Optional from datetime import datetime class TryOnBase(BaseModel): """试穿基础模型""" top_garment_url: Optional[str] = Field(None, description="上衣图片URL", example="https://example.com/top.jpg") bottom_garment_url: Optional[str] = Field(None, description="下衣图片URL", example="https://example.com/bottom.jpg") person_image_url: str = Field(..., description="人物图片URL", example="https://example.com/person.jpg") class TryOnCreate(TryOnBase): """创建试穿记录的请求模型""" pass class TryOnUpdate(BaseModel): """更新试穿记录的请求模型""" task_status: Optional[str] = Field(None, description="任务状态", example="SUCCEEDED") completion_url: Optional[str] = Field(None, description="生成图片URL", example="https://example.com/result.jpg") class TryOnInDB(TryOnBase): """数据库中的试穿记录模型""" id: int request_id: Optional[str] = None task_id: Optional[str] = None task_status: Optional[str] = None completion_url: Optional[str] = None created_at: datetime updated_at: datetime class Config: orm_mode = True class TryOnResponse(TryOnInDB): """试穿记录API响应模型""" pass class AiTryonRequest(BaseModel): """阿里百炼平台试穿请求模型""" model: str = "aitryon" input: TryOnBase parameters: dict = { "resolution": -1, "restore_face": True } class TaskInfo(BaseModel): """任务信息模型""" task_id: str task_status: str class AiTryonResponse(BaseModel): """阿里百炼平台试穿响应模型""" output: TaskInfo request_id: str