from pydantic import BaseModel, Field from typing import Optional, List, Dict, Any from enum import Enum from datetime import datetime class MessageType(str, Enum): TEXT = "text" AUDIO = "audio" class UserMessage(BaseModel): message_id: str = Field(..., description="Unique message ID") content: str = Field(..., description="Text content or audio base64") message_type: MessageType = Field(..., description="Message type") session_id: str = Field(..., description="User session ID") timestamp: datetime = Field(default_factory=datetime.now) class ChatbotResponse(BaseModel): response_id: str = Field(..., description="Unique response ID") text_response: str = Field(..., description="Chatbot text response") audio_response: Optional[str] = Field(None, description="Audio response in base64") audio_url: Optional[str] = Field(None, description="Generated audio URL") session_id: str = Field(..., description="User session ID") timestamp: datetime = Field(default_factory=datetime.now) class ChatSession(BaseModel): session_id: str = Field(..., description="Session ID") user_id: Optional[str] = Field(None, description="User ID") created_at: datetime = Field(default_factory=datetime.now) last_activity: datetime = Field(default_factory=datetime.now) conversation_history: List[Dict[str, Any]] = Field(default_factory=list)