from datetime import datetime
from pydantic import BaseModel, Field

class VisitorUser(BaseModel):
    id: str | None = Field(default=None, description="Host site user ID")
    name: str | None = Field(default=None, description="Host site user name")
    email: str | None = Field(default=None, description="Host site user email")

class SessionInitRequest(BaseModel):
    siteId: str = Field(..., min_length=1, description="Unique site ID of the tenant")
    user: VisitorUser | None = Field(default=None, description="Optional visitor user object for logged-in visitors")

class SessionInitResponse(BaseModel):
    sessionId: str
    assignedAgentId: str | None = Field(default=None, description="Assigned agent ID")
    assignedAt: datetime | None = Field(default=None, description="Assignment timestamp")

class MessageHistoryItem(BaseModel):
    messageId: str
    role: str
    content: str
    createdAt: str
    agentId: str | None = None

class SessionHistoryResponse(BaseModel):
    sessionId: str
    siteId: str
    status: str
    mode: str
    assignedAgentId: str | None = None
    assignedAt: str | None = None
    endedBy: str | None = None
    ipAddress: str | None = None
    country: str | None = None
    connectedAt: str | None = None
    conversationId: str | None = None
    messages: list[MessageHistoryItem] = []
