| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- """
- User schemas for request/response validation.
- Defines Pydantic models for user management and statistics.
- """
- from pydantic import BaseModel, Field
- from typing import Optional, List
- from datetime import datetime
- class TaskStats(BaseModel):
- """用户任务统计信息"""
- assigned_count: int = Field(default=0, description="已分配任务数")
- completed_count: int = Field(default=0, description="已完成任务数")
- in_progress_count: int = Field(default=0, description="进行中任务数")
- pending_count: int = Field(default=0, description="待处理任务数")
- annotation_count: int = Field(default=0, description="标注数据条数")
- completion_rate: float = Field(default=0.0, description="完成率")
- class UserResponse(BaseModel):
- """用户基本信息响应"""
- id: str = Field(..., description="用户ID")
- username: str = Field(..., description="用户名")
- email: str = Field(..., description="邮箱")
- role: str = Field(..., description="用户角色")
- created_at: datetime = Field(..., description="创建时间")
-
- class Config:
- from_attributes = True
- class UserWithStatsResponse(UserResponse):
- """带统计信息的用户响应"""
- task_stats: TaskStats = Field(default_factory=TaskStats, description="任务统计")
- class AssignableUserResponse(BaseModel):
- """可分配用户响应(用于任务分配)"""
- id: str = Field(..., description="用户ID")
- username: str = Field(..., description="用户名")
- email: str = Field(..., description="邮箱")
- current_task_count: int = Field(default=0, description="当前任务数")
- completed_task_count: int = Field(default=0, description="已完成任务数")
- class UserListResponse(BaseModel):
- """用户列表响应"""
- users: List[UserWithStatsResponse] = Field(..., description="用户列表")
- total: int = Field(..., description="总数")
- class UserStatsResponse(BaseModel):
- """用户详细统计响应"""
- user: UserResponse = Field(..., description="用户信息")
- task_stats: TaskStats = Field(..., description="任务统计")
- recent_tasks: List[dict] = Field(default_factory=list, description="最近任务")
|