from datetime import datetime, timezone from beanie import Document, PydanticObjectId from pydantic import BaseModel, Field class ChatMessage(BaseModel): role: str # user / assistant content: str timestamp: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) class ChatSession(Document): user_id: PydanticObjectId report_id: PydanticObjectId messages: list[ChatMessage] = Field(default_factory=list) created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) updated_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) class Settings: name = "chat_sessions" indexes = [ [("user_id", 1), ("report_id", 1)], ]