52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
from pydantic import BaseModel
|
|
from datetime import date
|
|
from typing import List
|
|
from analysis.infra.db_models.analysis import AnalysisStatus
|
|
from enum import Enum
|
|
|
|
class AnalystType(str, Enum):
|
|
MARKET = "market"
|
|
SOCIAL = "social"
|
|
NEWS = "news"
|
|
FUNDAMENTALS = "fundamentals"
|
|
|
|
class TradingAnalysisRequest(BaseModel):
|
|
ticker: str
|
|
analysis_date: str
|
|
analysts: List[AnalystType]
|
|
research_depth: int = 3
|
|
llm_provider: str = "openai"
|
|
backend_url: str = "https://api.openai.com/v1"
|
|
shallow_thinker: str = "gpt-4o-mini"
|
|
deep_thinker: str = "gpt-4o"
|
|
|
|
class AnalysisSessionResponse(BaseModel):
|
|
id : str
|
|
ticker : str
|
|
status : AnalysisStatus
|
|
|
|
class AnalysisProgressUpdate(BaseModel):
|
|
analysis_id: str
|
|
current_agent: str
|
|
status: str
|
|
progress_percentage: float
|
|
current_report_section: str | None = None
|
|
message: str | None = None
|
|
|
|
class AnalysisResultResponse(BaseModel):
|
|
id: str
|
|
ticker: str
|
|
analysis_date: str
|
|
status: AnalysisStatus
|
|
market_report: str | None = None
|
|
sentiment_report: str | None = None
|
|
news_report: str | None = None
|
|
fundamentals_report: str | None = None
|
|
investment_debate_state: dict | None = None
|
|
trader_investment_plan: str | None = None
|
|
risk_debate_state: dict | None = None
|
|
final_trade_decision: str | None = None
|
|
final_report: str | None = None
|
|
created_at: str
|
|
completed_at: str | None = None
|
|
error_message: str | None = None |