| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- # app/schemas/statistics.py (或者定义在你的 schemas 文件中)
- from pydantic import BaseModel, Field
- from typing import List
- # 1. 核心指标统计
- class StatsData(BaseModel):
- totalOrders: int = Field(..., description="本月订单总数")
- totalOrdersTrend: float = Field(..., description="订单环比增长率,例如 12.5 代表 +12.5%") # 新增字段
-
- totalRevenue: int = Field(..., description="本月总营收 (单位:分)")
- totalRevenueTrend: float = Field(..., description="营收环比增长率,例如 -5.0 代表 -5.0%") # 新增字段
-
- activeUsers: int = Field(..., description="总活跃用户数")
- pendingTickets: int = Field(..., description="待处理工单数")
- successRate: str = Field(..., description="机器人任务成功率")
- # 2. 营收趋势 (最近7天)
- class RevenueTrendItem(BaseModel):
- date: str = Field(..., description="日期,格式 MM-DD")
- amount: float = Field(..., description="营收金额 (单位:元)") # 注意:Service层已除以100
- orders: int = Field(..., description="订单数")
- # 3. 商品销量分布
- class ProductDistItem(BaseModel):
- name: str = Field(..., description="商品名称")
- value: int = Field(..., description="销量")
- # 4. 最新动态
- class ActivityItem(BaseModel):
- id: str = Field(..., description="唯一标识")
- text: str = Field(..., description="显示文本")
- time: str = Field(..., description="相对时间描述,如'10分钟前'")
- type: str = Field(..., description="类型: order, money, ticket, system")
- # === 主响应模型 ===
- class VasStatisticsOverviewOut(BaseModel):
- stats: StatsData
- revenue_trend: List[RevenueTrendItem]
- product_dist: List[ProductDistItem]
- recent_activities: List[ActivityItem]
|