FA3-Datafetch/legacy/models_old.py
2026-01-11 21:33:47 +08:00

62 lines
2.4 KiB
Python

"""
DEPRECATED: This file is deprecated. Use models.py instead.
This module contains the old SQLite-based ORM models.
The new architecture uses PostgreSQL with updated models in models.py.
"""
from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, Enum
from sqlalchemy.orm import relationship, Mapped, mapped_column, DeclarativeBase
from sqlalchemy.sql import func
import enum
import datetime
import warnings
warnings.warn(
"models_old.py is deprecated. Use models.py for the new architecture.",
DeprecationWarning,
stacklevel=2
)
class Base(DeclarativeBase):
pass
class AnalysisStatus(str, enum.Enum):
PENDING = "pending"
IN_PROGRESS = "in_progress"
COMPLETED = "completed"
FAILED = "failed"
class Report(Base):
__tablename__ = "reports"
id: Mapped[int] = mapped_column(primary_key=True, index=True)
market: Mapped[str] = mapped_column(String(10), index=True)
symbol: Mapped[str] = mapped_column(String(20), index=True)
company_name: Mapped[str] = mapped_column(String(200))
status: Mapped[AnalysisStatus] = mapped_column(Enum(AnalysisStatus), default=AnalysisStatus.PENDING)
ai_model: Mapped[str] = mapped_column(String(100), nullable=True, default="gemini-2.0-flash")
created_at: Mapped[datetime.datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
sections: Mapped[list["ReportSection"]] = relationship(back_populates="report", cascade="all, delete-orphan")
class ReportSection(Base):
__tablename__ = "report_sections"
id: Mapped[int] = mapped_column(primary_key=True, index=True)
report_id: Mapped[int] = mapped_column(ForeignKey("reports.id"))
section_name: Mapped[str] = mapped_column(String(50)) # e.g. company_profile, fundamental_analysis
content: Mapped[str] = mapped_column(Text) # Markdown content
total_tokens: Mapped[int] = mapped_column(Integer, nullable=True, default=0)
prompt_tokens: Mapped[int] = mapped_column(Integer, nullable=True, default=0)
completion_tokens: Mapped[int] = mapped_column(Integer, nullable=True, default=0)
created_at: Mapped[datetime.datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
report: Mapped["Report"] = relationship(back_populates="sections")
class Setting(Base):
__tablename__ = "settings"
key: Mapped[str] = mapped_column(String(50), primary_key=True)
value: Mapped[str] = mapped_column(Text)