dylanglenister
REFACTOR: Improve chat pipeline.
47e3582
# src/models/session.py
from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field
from src.models.common import BaseMongoModel, PyObjectId
class Message(BaseModel):
"""A Pydantic sub-model for a single message within a session."""
# This _id is an integer, not an ObjectId, so we don't use PyObjectId here.
id: int = Field(..., alias="_id")
sent_by_user: bool
content: str
timestamp: datetime
# Use a standard config for this sub-model
model_config = ConfigDict(
frozen=True,
from_attributes=True,
populate_by_name=True
)
class Session(BaseMongoModel):
"""A Pydantic model for a chat session, including nested messages."""
account_id: PyObjectId
patient_id: PyObjectId
title: str
created_at: datetime
updated_at: datetime
messages: list[Message] = Field(default_factory=list)
# --- API Request Models ---
class SessionCreateRequest(BaseModel):
account_id: str
patient_id: str
title: str | None = "New Chat"
class ChatRequest(BaseModel):
"""Request model for sending a message to a session."""
account_id: str # For context, though session_id implies this
patient_id: str # For context, though session_id implies this
message: str
# --- API Response Models ---
class ChatResponse(BaseModel):
"""Response model for a chat interaction."""
response: str