| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- """
- 后台管理系统数据统计模块数据传输对象定义
- 定义用户统计、业务统计、模型统计、仪表盘等相关API响应的数据结构
- """
- from datetime import date
- from decimal import Decimal
- from typing import List
- from pydantic import BaseModel, Field
- # ==================== 用户统计相关 Schema ====================
- class UserOverviewResponse(BaseModel):
- """用户统计概览响应"""
- new_users: int = Field(..., description="新增用户数")
- total_users: int = Field(..., description="总用户数")
- active_users: int = Field(..., description="活跃用户数")
- retention_rate: float = Field(..., description="留存率(%)")
- class UserGrowthItem(BaseModel):
- """用户增长趋势项"""
- date: str = Field(..., description="日期")
- new_users: int = Field(..., description="新增用户数")
- active_users: int = Field(..., description="活跃用户数")
- class UserDistributionResponse(BaseModel):
- """用户分布统计响应"""
- pass
- # ==================== 业务统计相关 Schema ====================
- class BusinessOverviewResponse(BaseModel):
- """业务统计概览响应"""
- conversation_count: int = Field(..., description="对话次数")
- picture_count: int = Field(..., description="图片生成次数")
- audio_count: int = Field(..., description="音频合成次数")
- video_count: int = Field(..., description="视频生成次数")
- class BusinessTrendItem(BaseModel):
- """业务趋势项"""
- date: str = Field(..., description="日期")
- conversation_count: int = Field(..., description="对话次数")
- picture_count: int = Field(..., description="图片次数")
- audio_count: int = Field(..., description="音频次数")
- video_count: int = Field(..., description="视频次数")
- # ==================== 模型统计相关 Schema ====================
- class ModelRankingItem(BaseModel):
- """模型排行项"""
- model_name: str = Field(..., description="模型名称")
- usage_count: int = Field(..., description="使用次数")
- percentage: float = Field(..., description="占比(%)")
- # ==================== 仪表盘相关 Schema ====================
- class DashboardMetricsResponse(BaseModel):
- """仪表盘核心指标响应"""
- today_new_users: int = Field(..., description="今日新增用户")
- today_new_users_growth: float = Field(..., description="相比昨日增长率(%)")
- total_users: int = Field(..., description="总用户数")
- active_users: int = Field(..., description="活跃用户数(近7日)")
- today_api_calls: int = Field(..., description="今日API调用量")
|