from datetime import datetime from pydantic import BaseModel from typing import List from app.schemas.company import CompanyProfile from app.schemas.tender import Tender class ChatMessage(BaseModel): role: str content: str agent_name: str | None = None class ChatRequest(BaseModel): tender: Tender company_profile: CompanyProfile message: str agent: str model: str history: List[ChatMessage] amd_settings: dict | None = None class RiskItem(BaseModel): title: str severity: str explanation: str class ActionItem(BaseModel): task: str priority: str owner: str timeline: str class QAResponse(BaseModel): question: str answer: str class AnalysisRequest(BaseModel): tender: Tender company_profile: CompanyProfile document_text: str | None = None models: dict | None = None tender_details: dict | None = None amd_settings: dict | None = None class AnalysisResult(BaseModel): fit_score: int decision: str executive_summary: str key_requirements: List[str] risks: List[RiskItem] compliance_gaps: List[str] action_plan: List[ActionItem] proposal_draft: str report_markdown: str strategic_roadmap: str | None = None requirement_responses: List[QAResponse] = [] audit_log: List[str] = [] raw_responses: dict = {} class AnalysisRecord(BaseModel): tender_code: str tender_name: str analyzed_at: datetime analysis: AnalysisResult class SearchRecord(BaseModel): query: str results_count: int searched_at: datetime is_agile: bool = False