Files
YuShiSheJiShi/backend/app/models/design_image.py
8f5a86418e feat(design): 添加360视频和3D模型生成功能支持
- 在Design模型中新增video_url字段用于存储360度展示视频URL
- 在DesignImage模型中新增model_3d_url字段用于存储3D模型URL
- 设计路由新增生成视频接口,调用火山引擎即梦3.0 Pro API生成展示视频
- 设计路由新增生成3D模型接口,调用腾讯混元3D服务生成.glb格式3D模型
- 新增本地文件删除工具,支持强制重新生成时清理旧文件
- 设计响应Schema中添加video_url和model_3d_url字段支持前后端数据传递
- 前端设计详情页新增360度旋转3D模型展示区,支持生成、重新生成和下载3D模型
- 实现录制3D模型展示视频功能,支持捕获model-viewer旋转画面逐帧合成WebM文件下载
- 引入@google/model-viewer库作为3D模型Web组件展示支持
- 管理后台新增即梦视频生成和腾讯混元3D模型生成配置界面,方便服务密钥管理
- 前端API增加生成视频和生成3D模型接口请求方法,超时设置为10分钟以支持长时间处理
- 优化UI交互提示,新增生成中状态显示和错误提示,提升用户体验和操作反馈
2026-03-27 23:26:56 +08:00

31 lines
1.3 KiB
Python

"""
设计图片模型
存储每个设计的多视角图片
"""
from sqlalchemy import Column, BigInteger, Integer, String, Text, DateTime, ForeignKey
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
from ..database import Base
class DesignImage(Base):
"""设计图片表 - 存储多视角设计图"""
__tablename__ = "design_images"
id = Column(BigInteger, primary_key=True, autoincrement=True, comment="图片ID")
design_id = Column(BigInteger, ForeignKey("designs.id", ondelete="CASCADE"), nullable=False, comment="关联设计ID")
view_name = Column(String(20), nullable=False, comment="视角名称: 效果图/正面图/侧面图/背面图")
image_url = Column(Text, nullable=True, comment="图片URL路径")
model_used = Column(String(50), nullable=True, comment="使用的AI模型: flux-dev/seedream-4.5")
prompt_used = Column(Text, nullable=True, comment="实际使用的英文prompt")
sort_order = Column(Integer, default=0, comment="排序")
model_3d_url = Column(Text, nullable=True, comment="3D模型URL(.glb)")
created_at = Column(DateTime, server_default=func.now(), comment="创建时间")
# 关联关系
design = relationship("Design", back_populates="images")
def __repr__(self):
return f"<DesignImage(id={self.id}, view='{self.view_name}')>"