admin_stats_schema.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. """
  2. 后台管理系统数据统计模块数据传输对象定义
  3. 定义用户统计、业务统计、模型统计、仪表盘等相关API响应的数据结构
  4. """
  5. from datetime import date
  6. from decimal import Decimal
  7. from typing import List
  8. from pydantic import BaseModel, Field
  9. # ==================== 用户统计相关 Schema ====================
  10. class UserOverviewResponse(BaseModel):
  11. """用户统计概览响应"""
  12. new_users: int = Field(..., description="新增用户数")
  13. total_users: int = Field(..., description="总用户数")
  14. active_users: int = Field(..., description="活跃用户数")
  15. retention_rate: float = Field(..., description="留存率(%)")
  16. class UserGrowthItem(BaseModel):
  17. """用户增长趋势项"""
  18. date: str = Field(..., description="日期")
  19. new_users: int = Field(..., description="新增用户数")
  20. active_users: int = Field(..., description="活跃用户数")
  21. class UserDistributionResponse(BaseModel):
  22. """用户分布统计响应"""
  23. pass
  24. # ==================== 业务统计相关 Schema ====================
  25. class BusinessOverviewResponse(BaseModel):
  26. """业务统计概览响应"""
  27. conversation_count: int = Field(..., description="对话次数")
  28. picture_count: int = Field(..., description="图片生成次数")
  29. audio_count: int = Field(..., description="音频合成次数")
  30. video_count: int = Field(..., description="视频生成次数")
  31. class BusinessTrendItem(BaseModel):
  32. """业务趋势项"""
  33. date: str = Field(..., description="日期")
  34. conversation_count: int = Field(..., description="对话次数")
  35. picture_count: int = Field(..., description="图片次数")
  36. audio_count: int = Field(..., description="音频次数")
  37. video_count: int = Field(..., description="视频次数")
  38. # ==================== 模型统计相关 Schema ====================
  39. class ModelRankingItem(BaseModel):
  40. """模型排行项"""
  41. model_name: str = Field(..., description="模型名称")
  42. usage_count: int = Field(..., description="使用次数")
  43. percentage: float = Field(..., description="占比(%)")
  44. # ==================== 仪表盘相关 Schema ====================
  45. class DashboardMetricsResponse(BaseModel):
  46. """仪表盘核心指标响应"""
  47. today_new_users: int = Field(..., description="今日新增用户")
  48. today_new_users_growth: float = Field(..., description="相比昨日增长率(%)")
  49. total_users: int = Field(..., description="总用户数")
  50. active_users: int = Field(..., description="活跃用户数(近7日)")
  51. today_api_calls: int = Field(..., description="今日API调用量")