"""后台管理 API 请求/响应模型""" from datetime import datetime from typing import Optional from pydantic import BaseModel, EmailStr, Field class EnterpriseResponse(BaseModel): id: int name: str code: Optional[str] = None ai_display_name: str = Field(..., description="AI 助手对外展示名称(系统提示词等)") created_at: Optional[datetime] = None class EnterpriseUpdate(BaseModel): name: str = Field(..., min_length=1, max_length=255) ai_display_name: str = Field( ..., min_length=1, max_length=128, description="AI 助手名称,将进入各模式系统提示词", ) class DepartmentCreate(BaseModel): name: str = Field(..., min_length=1, max_length=255) parent_id: Optional[int] = None class DepartmentUpdate(BaseModel): name: Optional[str] = Field(None, min_length=1, max_length=255) parent_id: Optional[int] = None class DepartmentResponse(BaseModel): id: int enterprise_id: int name: str parent_id: Optional[int] = None created_at: Optional[datetime] = None class AdminUserCreate(BaseModel): username: str = Field(..., max_length=50) email: EmailStr phone: str = Field(..., max_length=255) password: str = Field(..., min_length=6) display_name: Optional[str] = Field(None, max_length=100) department_id: Optional[int] = None role: str = Field("employee", description="admin | leader | employee") class AdminUserUpdate(BaseModel): email: Optional[EmailStr] = None phone: Optional[str] = Field(None, max_length=255) display_name: Optional[str] = Field(None, max_length=100) department_id: Optional[int] = None role: Optional[str] = Field(None, description="admin | leader | employee") is_active: Optional[bool] = None password: Optional[str] = Field(None, min_length=6) class AdminUserListItem(BaseModel): id: int username: str email: str phone: str display_name: Optional[str] = None enterprise_id: int department_id: Optional[int] = None role: str is_active: bool is_first_login: bool = True created_at: Optional[datetime] = None last_login_at: Optional[datetime] = None class AdminUserListResponse(BaseModel): total: int items: list[AdminUserListItem]