huoyan-enterprise/backend/admin/schemas.py

82 lines
2.3 KiB
Python

"""后台管理 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]