|
from pydantic import BaseModel, Field, ConfigDict |
|
from typing import Optional, List, Dict, Any |
|
from datetime import datetime |
|
import uuid |
|
|
|
class SessionBase(BaseModel): |
|
"""Base model for session data""" |
|
session_id: str = Field(default_factory=lambda: str(uuid.uuid4())) |
|
factor: str |
|
action: str |
|
first_name: str |
|
last_name: Optional[str] = None |
|
message: Optional[str] = None |
|
user_id: str |
|
username: Optional[str] = None |
|
|
|
class SessionCreate(SessionBase): |
|
"""Model for creating new session""" |
|
response: Optional[str] = None |
|
|
|
class SessionResponse(SessionBase): |
|
"""Response model for session data""" |
|
created_at: str |
|
response: Optional[str] = None |
|
|
|
model_config = ConfigDict( |
|
json_schema_extra={ |
|
"example": { |
|
"session_id": "123e4567-e89b-12d3-a456-426614174000", |
|
"factor": "user", |
|
"action": "asking_freely", |
|
"created_at": "2023-06-01 14:30:45", |
|
"first_name": "John", |
|
"last_name": "Doe", |
|
"message": "How can I find emergency contacts?", |
|
"user_id": "12345678", |
|
"username": "johndoe", |
|
"response": "You can find emergency contacts in the Emergency section..." |
|
} |
|
} |
|
) |
|
|
|
class HistoryRequest(BaseModel): |
|
"""Request model for history""" |
|
user_id: str |
|
n: int = 3 |
|
|
|
class QuestionAnswer(BaseModel): |
|
"""Model for question-answer pair""" |
|
question: str |
|
answer: str |
|
|
|
class HistoryResponse(BaseModel): |
|
"""Response model for history""" |
|
history: List[QuestionAnswer] |