aidress/app/schemas/tryon.py
2025-03-21 17:06:54 +08:00

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