from sqlalchemy import Column, String, Integer, Float, Date, DateTime, Text, Boolean, JSON from sqlalchemy.sql import func from .database import Base from datetime import datetime class Topic(Base): __tablename__ = "topics" id = Column(String, primary_key=True, index=True) title = Column(String, nullable=False) field = Column(String, nullable=False) format = Column(String) core_concept = Column(Text) audience_pain = Column(Text) unique_angle = Column(Text) priority = Column(String) # 高/中 priority_score = Column(Integer, default=0) total_score = Column(Float) status = Column(String, default="pending") # pending/draft/ready/published cases = Column(JSON, default=list) source_file = Column(String) created_at = Column(DateTime(timezone=True), server_default=func.now()) updated_at = Column(DateTime(timezone=True), onupdate=func.now()) ready_at = Column(Date) published_at = Column(Date) compliance_score = Column(Integer) platform_urls = Column(JSON, default=dict) # {"zhihu": "...", "wechat": "...", "xiaohongshu": "..."} class Article(Base): __tablename__ = "articles" id = Column(String, primary_key=True) # e.g., A01_zhihu topic_id = Column(String, nullable=False) platform = Column(String, nullable=False) file_path = Column(String, nullable=False) status = Column(String, default="draft") # draft/optimized/published created_at = Column(DateTime(timezone=True), server_default=func.now()) compliance_score = Column(Integer) html_content = Column(Text) # 可缓存HTML内容以便预览