Spaces:
Sleeping
Sleeping
| """ | |
| Pydantic models for API request/response schemas. | |
| """ | |
| from pydantic import BaseModel | |
| class AnalysisRequest(BaseModel): | |
| """Request model for starting a SWOT analysis.""" | |
| name: str | |
| ticker: str = "" | |
| strategy_focus: str = "Competitive Position" | |
| skip_cache: bool = False # If True, ignore cache and run fresh analysis | |
| user_api_keys: dict = {} # Optional: {"groq": "key", "gemini": "key", "openrouter": "key"} | |
| class StockSearchResult(BaseModel): | |
| """Single stock search result.""" | |
| symbol: str | |
| name: str | |
| exchange: str | |
| match_type: str | |
| class WorkflowStartResponse(BaseModel): | |
| """Response model for workflow start.""" | |
| workflow_id: str | |
| class WorkflowStatus(BaseModel): | |
| """Workflow status model.""" | |
| status: str # 'running', 'completed', 'error' | |
| current_step: str # 'starting', 'Researcher', 'Analyzer', 'Critic' | |
| revision_count: int | |
| score: int | |
| class SwotData(BaseModel): | |
| """SWOT analysis data structure.""" | |
| strengths: list[str] | |
| weaknesses: list[str] | |
| opportunities: list[str] | |
| threats: list[str] | |
| class AnalysisResult(BaseModel): | |
| """Final analysis result model.""" | |
| company_name: str | |
| score: int | |
| revision_count: int | |
| report_length: int | |
| critique: str | |
| swot_data: SwotData | |