54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
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 |