import uuid from typing import Literal from pydantic import BaseModel, Field PersonnelNumberModeT = Literal["manual", "auto"] class CompanyOut(BaseModel): model_config = {"from_attributes": True} id: uuid.UUID name: str slug: str plan: str logo_url: str | None country: str state: str | None settings: dict personnel_number_required: bool = False personnel_number_mode: PersonnelNumberModeT = "manual" personnel_number_next: int = 1 mobile_stamping_enabled: bool = True overtime_overdraft_allowed: bool = True overtime_warning_threshold_hours: int = 0 class CompanyUpdate(BaseModel): name: str | None = Field(None, min_length=2, max_length=255) state: str | None = Field(None, max_length=10) settings: dict | None = None personnel_number_required: bool | None = None personnel_number_mode: PersonnelNumberModeT | None = None personnel_number_next: int | None = Field(None, ge=1) mobile_stamping_enabled: bool | None = None overtime_overdraft_allowed: bool | None = None overtime_warning_threshold_hours: int | None = Field(None, ge=0) class DepartmentOut(BaseModel): model_config = {"from_attributes": True} id: uuid.UUID company_id: uuid.UUID name: str manager_id: uuid.UUID | None class DepartmentCreate(BaseModel): name: str = Field(min_length=1, max_length=255) manager_id: uuid.UUID | None = None class DepartmentUpdate(BaseModel): name: str | None = Field(None, min_length=1, max_length=255) manager_id: uuid.UUID | None = None