import json from datetime import datetime from pydantic import BaseModel, Field class EmployeeCreate(BaseModel): tenant_id: str name: str = Field(..., max_length=200) role: str = Field(..., max_length=100) system_prompt: str greeting: str | None = None avatar_url: str | None = Field(None, max_length=500) temperature: float = 0.7 max_context_messages: int = 20 knowledge_base_ids: list[str] = [] class EmployeeUpdate(BaseModel): name: str | None = Field(None, max_length=200) role: str | None = Field(None, max_length=100) system_prompt: str | None = None greeting: str | None = None avatar_url: str | None = Field(None, max_length=500) temperature: float | None = None max_context_messages: int | None = None knowledge_base_ids: list[str] | None = None status: str | None = None class EmployeeResponse(BaseModel): id: str tenant_id: str name: str role: str system_prompt: str greeting: str | None avatar_url: str | None temperature: float max_context_messages: int knowledge_base_ids: list[str] status: str created_at: datetime updated_at: datetime @classmethod def from_model(cls, employee) -> "EmployeeResponse": kb_ids = json.loads(employee.knowledge_base_ids) if employee.knowledge_base_ids else [] return cls( id=employee.id, tenant_id=employee.tenant_id, name=employee.name, role=employee.role, system_prompt=employee.system_prompt, greeting=employee.greeting, avatar_url=employee.avatar_url, temperature=employee.temperature, max_context_messages=employee.max_context_messages, knowledge_base_ids=kb_ids, status=employee.status.value, created_at=employee.created_at, updated_at=employee.updated_at, )