PMFlow/backend/app/schemas/auth.py

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