"""海报计划书上传模型。""" from sqlalchemy import Column, String, Text, BigInteger, TIMESTAMP, func from insurance.db.compat import db class PosterCaseUpload(db.Model): """海报计划书上传记录表。""" __tablename__ = "poster_case_uploads" id = Column(BigInteger, primary_key=True, autoincrement=True) user_id = Column(String(50), nullable=False, comment="用户 ID") product_id = Column(String(50), nullable=False, comment="产品 ID") source_file_url = Column(String(500), nullable=False, comment="源文件地址") parse_status = Column(String(20), default="pending", comment="解析状态: pending/parsed/failed") parsed_data = Column(Text, nullable=True, comment="系统解析结果 JSON") confirmed_data = Column(Text, nullable=True, comment="人工核对后最终结果 JSON") confirmed_by = Column(String(50), nullable=True, comment="核对人") confirmed_at = Column(TIMESTAMP, nullable=True, comment="核对时间") 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, "sourceFileUrl": self.source_file_url, "parseStatus": self.parse_status, "parsedData": json.loads(self.parsed_data) if self.parsed_data else None, "confirmedData": json.loads(self.confirmed_data) if self.confirmed_data else None, "confirmedBy": self.confirmed_by, "confirmedAt": self.confirmed_at.isoformat() if self.confirmed_at else None, "createdAt": self.created_at.isoformat() if self.created_at else None, }