| 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] |
|
|
|
|
| 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 |
|
|
|
|
| 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 |
|
|