# 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="销量") class ActiveTaskGroupItem(BaseModel): routing_key: str = Field(..., description="任务队列/Routing Key") count: 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] active_tasks_dist: List[ActiveTaskGroupItem]