25 lines
747 B
Python
25 lines
747 B
Python
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)],
|
|
]
|