35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
from datetime import datetime,date
|
|
from sqlmodel import SQLModel, Field, JSON
|
|
import uuid
|
|
import enum
|
|
from sqlalchemy import Column
|
|
from sqlalchemy.dialects import oracle
|
|
from utils.auth import Role
|
|
import uuid
|
|
|
|
class AnalysisStatus(str, enum.Enum):
|
|
PENDING = "pending"
|
|
RUNNING = "running"
|
|
COMPLETED = "completed"
|
|
FAILED = "failed"
|
|
CANCELLED = "cancelled"
|
|
|
|
|
|
class AnalysisSession(SQLModel, table=True):
|
|
__tablename__ = "analysis_sessions"
|
|
id: str = Field(default=None, max_length=36, primary_key=True)
|
|
member_id: str = Field(foreign_key="members.id")
|
|
ticker: str
|
|
analysis_date: date
|
|
analysts_selected: list[str] = Field(sa_column=Column(JSON))
|
|
research_depth: int
|
|
llm_provider: str
|
|
backend_url: str
|
|
shallow_thinker: str
|
|
deep_thinker: str
|
|
status: AnalysisStatus = Field(default=AnalysisStatus.PENDING)
|
|
final_report: str | None = None
|
|
error_message: str | None = None
|
|
completed_at: datetime | None = None
|
|
created_at : datetime = Field(nullable=False)
|
|
updated_at : datetime = Field(nullable=False) |