statistics.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. """
  2. Statistics schemas for request/response validation.
  3. Defines Pydantic models for project and user statistics.
  4. """
  5. from pydantic import BaseModel, Field
  6. from typing import List, Optional
  7. from datetime import datetime
  8. class UserTaskStats(BaseModel):
  9. """用户任务统计"""
  10. user_id: str = Field(..., description="用户ID")
  11. username: str = Field(..., description="用户名")
  12. assigned_tasks: int = Field(default=0, description="已分配任务数")
  13. completed_tasks: int = Field(default=0, description="已完成任务数")
  14. in_progress_tasks: int = Field(default=0, description="进行中任务数")
  15. pending_tasks: int = Field(default=0, description="待处理任务数")
  16. annotation_count: int = Field(default=0, description="标注数据条数")
  17. completion_rate: float = Field(default=0.0, description="完成率 (%)")
  18. class ProjectStatisticsResponse(BaseModel):
  19. """项目统计响应"""
  20. project_id: str = Field(..., description="项目ID")
  21. project_name: str = Field(..., description="项目名称")
  22. # 任务统计
  23. total_tasks: int = Field(default=0, description="总任务数")
  24. completed_tasks: int = Field(default=0, description="已完成任务数")
  25. in_progress_tasks: int = Field(default=0, description="进行中任务数")
  26. pending_tasks: int = Field(default=0, description="待处理任务数")
  27. # 数据统计
  28. total_items: int = Field(default=0, description="总数据条数")
  29. annotated_items: int = Field(default=0, description="已标注数据条数")
  30. # 进度
  31. task_completion_rate: float = Field(default=0.0, description="任务完成率 (%)")
  32. data_completion_rate: float = Field(default=0.0, description="数据标注完成率 (%)")
  33. # 人员统计
  34. user_stats: List[UserTaskStats] = Field(default_factory=list, description="人员统计列表")
  35. class OverviewStatisticsResponse(BaseModel):
  36. """平台总览统计响应"""
  37. # 项目统计
  38. total_projects: int = Field(default=0, description="总项目数")
  39. # 任务统计
  40. total_tasks: int = Field(default=0, description="总任务数")
  41. completed_tasks: int = Field(default=0, description="已完成任务数")
  42. in_progress_tasks: int = Field(default=0, description="进行中任务数")
  43. pending_tasks: int = Field(default=0, description="待处理任务数")
  44. # 用户统计
  45. total_users: int = Field(default=0, description="总用户数")
  46. admin_count: int = Field(default=0, description="管理员数")
  47. annotator_count: int = Field(default=0, description="标注人员数")
  48. # 标注统计
  49. total_annotations: int = Field(default=0, description="总标注数")
  50. # 进度
  51. overall_completion_rate: float = Field(default=0.0, description="整体完成率 (%)")