"""海报生成记录模型。""" from sqlalchemy import Column, String, Text, BigInteger, TIMESTAMP, func from insurance.db.compat import db class PosterRecord(db.Model): """海报生成记录表。""" __tablename__ = "poster_records" id = Column(BigInteger, primary_key=True, autoincrement=True) user_id = Column(String(50), nullable=False, comment="用户 ID") product_id = Column(String(50), nullable=True, comment="产品 ID") case_upload_id = Column(BigInteger, nullable=True, comment="关联计划书上传 ID") template_id = Column(BigInteger, nullable=True, comment="海报模板 ID") copy_mode = Column(String(20), nullable=True, comment="文案模式: template/ai") copy_content = Column(Text, nullable=True, comment="最终文案 JSON") ai_raw_content = Column(Text, nullable=True, comment="AI 原始文案 JSON(合规留痕)") export_url = Column(String(500), nullable=True, comment="导出文件地址") export_format = Column(String(10), nullable=True, comment="导出格式: png/jpg") export_size = Column(String(20), nullable=True, comment="导出尺寸") reference_image_used = Column(String(500), nullable=True, comment="使用的参考图(合规留痕)") prompt_used = Column(Text, nullable=True, comment="完整 prompt(合规留痕)") created_at = Column(TIMESTAMP, server_default=func.now()) def to_dict(self): import json return { "id": self.id, "userId": self.user_id, "productId": self.product_id, "caseUploadId": self.case_upload_id, "templateId": self.template_id, "copyMode": self.copy_mode, "copyContent": json.loads(self.copy_content) if self.copy_content else None, "aiRawContent": json.loads(self.ai_raw_content) if self.ai_raw_content else None, "exportUrl": self.export_url, "exportFormat": self.export_format, "exportSize": self.export_size, "referenceImageUsed": self.reference_image_used, "promptUsed": self.prompt_used, "createdAt": self.created_at.isoformat() if self.created_at else None, }