backend / app /models /session.py
bastienp's picture
feat(security): add an API-Key Mechanism
d60934b
raw
history blame
1.47 kB
from pydantic import BaseModel, Field
from typing import Dict, List, Literal
from datetime import datetime
import uuid
class Message(BaseModel):
role: Literal["system", "user", "assistant"]
content: str
timestamp: datetime = Field(default_factory=datetime.utcnow)
class Conversation(BaseModel):
uid: str
messages: List[Message] = Field(default_factory=list)
last_interaction: datetime = Field(default_factory=datetime.utcnow)
class GuessingProgress(BaseModel):
indications: list[Message] = Field(default_factory=list)
guesses: list[str] = Field(default_factory=list)
class WagonProgress(BaseModel):
wagon_id: int = 0
conversations: Dict[str, Conversation] = Field(default_factory=dict)
theme: str = "Tutorial (Start)"
password: str = "start"
class UserSession(BaseModel):
session_id: str = Field(default_factory=lambda: str(uuid.uuid4()))
current_wagon: WagonProgress = Field(default_factory=WagonProgress)
guessing_progress: GuessingProgress = Field(default_factory=GuessingProgress)
created_at: datetime = Field(default_factory=datetime.utcnow)
last_active: datetime = Field(default_factory=datetime.utcnow)
default_game: bool = Field(default=True)
class Config:
json_schema_extra = {
"example": {
"session_id": "550e8400-e29b-41d4-a716-446655440000",
"current_wagon": {"wagon_id": 0, "conversations": {}},
}
}