82 lines
2.3 KiB
Python
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]
|