Fundamental_Analysis/backend/app/models/report.py

38 lines
1.4 KiB
Python

"""
报告数据模型
"""
from sqlalchemy import Column, String, DateTime, Text, Index
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.sql import func
from sqlalchemy.orm import relationship
import uuid
from ..core.database import Base
class Report(Base):
"""报告表模型"""
__tablename__ = "reports"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
symbol = Column(String(20), nullable=False, comment="证券代码")
market = Column(String(20), nullable=False, comment="交易市场")
status = Column(String(20), nullable=False, default="generating", comment="报告状态")
created_at = Column(DateTime(timezone=True), server_default=func.now(), comment="创建时间")
updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), comment="更新时间")
# 关系
analysis_modules = relationship("AnalysisModule", back_populates="report", cascade="all, delete-orphan")
progress_tracking = relationship("ProgressTracking", back_populates="report", cascade="all, delete-orphan")
# 索引
__table_args__ = (
Index('idx_report_symbol_market', 'symbol', 'market'),
Index('idx_report_status', 'status'),
Index('idx_report_created_at', 'created_at'),
)
def __repr__(self):
return f"<Report(id={self.id}, symbol={self.symbol}, market={self.market}, status={self.status})>"