Nagendravarma
Sync missing orchestrator nodes, model fields, tracing, redis Dockerfile setup, and dev console fixes
5330a03 | """ | |
| Pydantic request/response models for the Health Insurance AI Copilot API. | |
| """ | |
| from pydantic import BaseModel, Field | |
| from typing import List, Optional | |
| from datetime import datetime | |
| # ββ Request Models βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class ChatRequest(BaseModel): | |
| session_id: str = Field(..., description="Unique session identifier (UUID)") | |
| query: str = Field(..., min_length=1, max_length=2000, description="User question") | |
| plan_tier: Optional[str] = Field(None, description="User's selected plan tier") | |
| class ClearSessionRequest(BaseModel): | |
| session_id: str | |
| # ββ Response Models ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class ChatMessage(BaseModel): | |
| role: str # "human" or "ai" | |
| content: str | |
| timestamp: Optional[str] = None | |
| class ChatResponse(BaseModel): | |
| session_id: str | |
| query: str | |
| answer: str | |
| intent: str # SIMPLE_LOOKUP | POLICY_QUESTION | MULTI_HOP | COMPARISON | |
| steps_log: List[str] | |
| memories_used: List[str] = [] # Facts Mem0 extracted and stored from this turn | |
| timestamp: str | |
| run_id: Optional[str] = None # LangSmith trace run ID (None if tracing disabled) | |
| confidence: Optional[str] = None # HIGH | MEDIUM | LOW | BLOCKED (new confidence scorer) | |
| confidence_reason: Optional[str] = None # Human-readable confidence explanation | |
| blocked: bool = False # True if query_guard blocked the query | |
| sub_questions: List[str] = [] # Sub-questions from query_decomposer (MULTI_HOP) | |
| class SessionHistoryResponse(BaseModel): | |
| session_id: str | |
| history: List[ChatMessage] | |
| message_count: int | |
| class ComponentHealth(BaseModel): | |
| status: str # "ok" | "error" | "not_checked" | |
| detail: Optional[str] = None | |
| class HealthResponse(BaseModel): | |
| status: str # "healthy" | "degraded" | "unhealthy" | |
| timestamp: str | |
| version: str = "1.0.0" | |
| components: dict | |
| active_sessions: int | |
| class ErrorResponse(BaseModel): | |
| error: str | |
| detail: Optional[str] = None | |
| session_id: Optional[str] = None | |
| # ββ Workflow / Trace Models ββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class WorkflowStep(BaseModel): | |
| step_id: str | |
| name: str | |
| description: str | |
| status: str = "completed" | |
| output_summary: Optional[str] = None | |
| class WorkflowTraceResponse(BaseModel): | |
| session_id: str | |
| query: str | |
| intent: str | |
| steps: List[WorkflowStep] | |
| full_trace: List[str] | |
| retrieved_context_preview: str | |
| class WorkflowDiagramResponse(BaseModel): | |
| session_id: str | |
| query: str | |
| intent: str | |
| diagram: str | |
| steps_log: List[str] | None = None | |
| # ββ Memory Models βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| class MemoryFact(BaseModel): | |
| id: Optional[str] = None | |
| memory: str | |
| created_at: Optional[str] = None | |
| class MemoryResponse(BaseModel): | |
| session_id: str | |
| memory_count: int | |
| facts: List[MemoryFact] | |
| note: str = "In-memory only β resets on server restart" | |