report.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. """
  2. 智能股票分析助手 — 分析报告数据模型
  3. 存储个股深度分析报告,支持报告持久化与历史查询。
  4. """
  5. from sqlalchemy import Column, Integer, String, Text, DateTime, func
  6. from app.models.database import Base
  7. class AnalysisReport(Base):
  8. """分析报告表"""
  9. __tablename__ = "analysis_reports"
  10. id = Column(Integer, primary_key=True, autoincrement=True, comment="报告ID")
  11. user_id = Column(String(64), nullable=False, default="default", comment="用户标识")
  12. stock_code = Column(String(16), nullable=False, comment="股票代码")
  13. stock_name = Column(String(64), default="", comment="股票名称")
  14. report_type = Column(String(32), default="full", comment="报告类型: full=完整分析, quick=快速概览")
  15. summary = Column(String(1024), default="", comment="报告摘要(投资建议一句话)")
  16. content = Column(Text, default="", comment="报告完整内容(Markdown格式)")
  17. data_snapshot = Column(Text, default="{}", comment="数据快照(JSON格式,存储查询到的原始数据)")
  18. created_at = Column(DateTime, server_default=func.now(), comment="创建时间")
  19. def to_dict(self) -> dict:
  20. """转换为字典"""
  21. return {
  22. "id": self.id,
  23. "user_id": self.user_id,
  24. "stock_code": self.stock_code,
  25. "stock_name": self.stock_name,
  26. "report_type": self.report_type,
  27. "summary": self.summary,
  28. "content": self.content,
  29. "created_at": self.created_at.isoformat() if self.created_at else None,
  30. }