"""认证与用户相关 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