35 lines
1.7 KiB
Python
35 lines
1.7 KiB
Python
"""海报模板模型(AI 生图方案)。"""
|
||
from sqlalchemy import Column, String, Text, SmallInteger, BigInteger, TIMESTAMP, func
|
||
from insurance.db.compat import db
|
||
|
||
|
||
class PosterTemplate(db.Model):
|
||
"""海报模板表(AI 生图方案)。"""
|
||
__tablename__ = "poster_templates"
|
||
|
||
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
||
name = Column(String(100), nullable=False, comment="模板名称")
|
||
scenario_tag = Column(String(50), nullable=True, comment="场景标签")
|
||
style_description = Column(Text, nullable=False, comment="AI 生图风格描述 prompt 片段")
|
||
color_scheme = Column(Text, nullable=True, comment="配色方案 JSON")
|
||
reference_image = Column(String(500), nullable=True, comment="参考图地址")
|
||
preview_image = Column(String(500), nullable=True, comment="预览图地址")
|
||
status = Column(SmallInteger, default=1, comment="1=启用, 0=停用")
|
||
created_at = Column(TIMESTAMP, server_default=func.now())
|
||
updated_at = Column(TIMESTAMP, server_default=func.now(), onupdate=func.now())
|
||
|
||
def to_dict(self):
|
||
import json
|
||
return {
|
||
"id": self.id,
|
||
"name": self.name,
|
||
"scenarioTag": self.scenario_tag,
|
||
"styleDescription": self.style_description,
|
||
"colorScheme": json.loads(self.color_scheme) if self.color_scheme else None,
|
||
"referenceImage": self.reference_image,
|
||
"previewImage": self.preview_image,
|
||
"status": self.status,
|
||
"createdAt": self.created_at.isoformat() if self.created_at else None,
|
||
"updatedAt": self.updated_at.isoformat() if self.updated_at else None,
|
||
}
|