api/app/models/tryon.py
2025-04-09 23:00:06 +08:00

37 lines
2.0 KiB
Python

from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Enum
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
from app.db.database import Base
import enum
class TryonStatus(enum.Enum):
"""试穿状态枚举"""
GENERATING = "生成中"
COMPLETED = "已生成"
FAILED = "失败"
class TryonHistory(Base):
"""试穿记录数据模型"""
__tablename__ = "tryon_history"
id = Column(Integer, primary_key=True, autoincrement=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False, index=True, comment="用户ID")
person_image_id = Column(Integer, ForeignKey("person_images.id"), nullable=False, index=True, comment="人物形象ID")
top_clothing_id = Column(Integer, ForeignKey("clothing.id"), nullable=True, comment="上衣ID")
bottom_clothing_id = Column(Integer, ForeignKey("clothing.id"), nullable=True, comment="下装ID")
top_clothing_url = Column(String(500), nullable=True, comment="上衣图片URL")
bottom_clothing_url = Column(String(500), nullable=True, comment="下装图片URL")
task_id = Column(String(100), nullable=True, index=True, comment="任务ID")
completion_url = Column(String(500), nullable=True, comment="生成结果URL")
status = Column(Enum(TryonStatus), default=TryonStatus.GENERATING, comment="状态")
create_time = Column(DateTime, default=func.now(), comment="创建时间")
update_time = Column(DateTime, default=func.now(), onupdate=func.now(), comment="更新时间")
# 关系
user = relationship("User", backref="tryon_histories")
person_image = relationship("PersonImage", backref="tryon_histories")
top_clothing = relationship("Clothing", foreign_keys=[top_clothing_id], backref="top_tryon_histories")
bottom_clothing = relationship("Clothing", foreign_keys=[bottom_clothing_id], backref="bottom_tryon_histories")
def __repr__(self):
return f"<TryonHistory(id={self.id}, status={self.status.name})>"