72 lines
1.5 KiB
Python
72 lines
1.5 KiB
Python
"""认证与用户相关 Pydantic 模型"""
|
|
|
|
from typing import List, Optional, Union
|
|
from pydantic import BaseModel
|
|
|
|
# 从 models 导入枚举以保持一致性
|
|
from ..models import UserRole, UserStatus
|
|
|
|
|
|
class UserLoginResponse(BaseModel):
|
|
"""登录响应"""
|
|
|
|
access_token: str
|
|
token_type: str
|
|
user: dict
|
|
|
|
|
|
class UserCreate(BaseModel):
|
|
"""创建用户请求"""
|
|
|
|
username: str
|
|
password: str
|
|
name: str
|
|
email: Optional[str] = None
|
|
role: Union[UserRole, List[UserRole], str]
|
|
assigned_domains: Optional[List[str]] = []
|
|
project_ids: Optional[List[int]] = []
|
|
|
|
|
|
class UserUpdate(BaseModel):
|
|
"""更新用户请求"""
|
|
|
|
name: Optional[str] = None
|
|
email: Optional[str] = None
|
|
role: Optional[Union[UserRole, List[UserRole], str]] = None
|
|
assigned_domains: Optional[List[str]] = None
|
|
workload: Optional[int] = None
|
|
status: Optional[UserStatus] = None
|
|
is_active: Optional[bool] = None
|
|
project_ids: Optional[List[int]] = None
|
|
|
|
|
|
class UserResetPasswordRequest(BaseModel):
|
|
"""重置密码请求"""
|
|
|
|
new_password: str
|
|
|
|
|
|
class UserStatusPatchRequest(BaseModel):
|
|
"""启用/禁用状态切换请求"""
|
|
|
|
is_active: bool
|
|
|
|
|
|
class UserResponse(BaseModel):
|
|
"""用户响应"""
|
|
|
|
id: str
|
|
username: str
|
|
name: str
|
|
email: Optional[str] = None
|
|
role: str
|
|
assigned_domains: List[str]
|
|
workload: int
|
|
status: str
|
|
is_active: bool = True
|
|
workload_ratio: Optional[float] = None
|
|
top_skills: List[str] = []
|
|
project_ids: List[int] = []
|
|
created_at: str
|
|
updated_at: str
|