Skip to content

Servify 统计口径定义(Metrics Glossary)

最后更新:2026-03-31

本文档定义 Dashboard 和 Analytics 模块中所有统计指标的计算口径,确保前后端理解一致。


1. Dashboard 核心指标

指标名英文标识计算口径数据源
总客户数total_customersCOUNT(*) FROM users WHERE role='customer',受租户/工作空间隔离users
总客服数total_agentsCOUNT(*) FROM agents,受租户/工作空间隔离agents
总工单数total_ticketsCOUNT(*) FROM ticketstickets
总会话数total_sessionsCOUNT(*) FROM sessionssessions
今日工单today_ticketsCOUNT(*) FROM tickets WHERE created_at >= 今日0时tickets
今日会话today_sessionsCOUNT(*) FROM sessions WHERE created_at >= 今日0时sessions
今日消息today_messagesCOUNT(*) FROM messages WHERE created_at >= 今日0时messages
开放工单open_ticketsCOUNT(*) FROM tickets WHERE status='open'tickets
已分配工单assigned_ticketsCOUNT(*) FROM tickets WHERE status='assigned'tickets
已解决工单resolved_ticketsCOUNT(*) FROM tickets WHERE status='resolved'tickets
已关闭工单closed_ticketsCOUNT(*) FROM tickets WHERE status='closed'tickets
在线客服online_agentsCOUNT(*) FROM agents WHERE status='online'agents
忙碌客服busy_agentsCOUNT(*) FROM agents WHERE status='busy'agents
活跃会话active_sessionsCOUNT(*) FROM sessions WHERE status='active'sessions
平均响应时间avg_response_timeAVG(avg_response_time) FROM agents(秒)agents
平均解决时间avg_resolution_timeAVG(EXTRACT(epoch FROM (resolved_at - created_at))) FROM tickets WHERE resolved_at IS NOT NULL(秒)tickets
客户满意度customer_satisfactionCOALESCE(AVG(rating), 0) FROM customer_satisfactions(1~5 分)customer_satisfactions
AI 使用次数(今日)ai_usage_todaydaily_stats.ai_usage_count WHERE date=今日daily_stats

2. 时间范围统计

接口: GET /api/statistics/time-range?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD

每日聚合以下指标:

指标名英文标识计算口径
工单数ticketsCOUNT(*) FROM tickets WHERE created_at >= ? AND created_at < next_day
会话数sessionsCOUNT(*) FROM sessions WHERE created_at >= ? AND created_at < next_day
消息数messagesCOUNT(*) FROM messages WHERE created_at >= ? AND created_at < next_day
已解决工单resolved_ticketsCOUNT(*) FROM tickets WHERE resolved_at >= ? AND resolved_at < next_day
平均响应时间avg_response_timeAVG(avg_response_time) FROM agents(全局平均,非按日)
客户满意度customer_satisfactionCOALESCE(AVG(rating), 0) FROM customer_satisfactions WHERE created_at >= ? AND created_at < next_day

注意avg_response_time 在时间范围统计中使用全局平均值(agents 表),因为目前没有按消息级别的响应时间记录。

3. 客服绩效统计

接口: GET /api/statistics/agent-performance?start_date=...&end_date=...&limit=N

指标名英文标识计算口径
客服 IDagent_idagents.user_id
客服姓名agent_nameusers.name
部门departmentagents.department
总工单数total_ticketsCOUNT(tickets.id) WHERE tickets.agent_id = agents.user_id AND tickets.created_at 在范围内
已解决工单数resolved_ticketsCOUNT(CASE WHEN status IN ('resolved','closed'))
平均响应时间avg_response_timeagents.avg_response_time(全局值,秒)
平均解决时间avg_resolution_timeAVG(EXTRACT(epoch FROM (resolved_at - created_at))) WHERE resolved_at IS NOT NULL(秒)
评分ratingagents.rating

4. 分类统计

工单分类统计

接口: GET /api/statistics/ticket-category?start_date=...&end_date=...

tickets.category 分组 COUNT(*),降序排列。

工单优先级统计

接口: GET /api/statistics/ticket-priority?start_date=...&end_date=...

tickets.priority 分组 COUNT(*),降序排列。

客户来源分布

接口: GET /api/statistics/customer-source

customers.source 分组 COUNT(*),降序排列。

5. 每日统计(Daily Stats)

通过 daily_stats 表存储,由 Worker 定时更新或事件驱动递增。

字段说明递增事件
total_sessions当日会话数IncrementSessions
total_messages当日消息数IncrementMessages
total_tickets当日工单数IncrementTickets
resolved_tickets当日解决工单数IncrementResolved
ai_usage_countAI 使用次数IncrementAIUsage
knowledge_provider_usage_count外部知识库 provider 使用次数IncrementKnowledgeProvider
we_knora_usage_countWeKnora 使用次数IncrementWeKnora
sla_violationsSLA 违规次数IncrementSLA

6. 多租户隔离规则

所有统计查询受 tenant_idworkspace_id 约束:

  • 实体表(tickets, sessions, messages, agents, customer_satisfactions):直接 WHERE tenant_id = ? AND workspace_id = ?
  • 用户表(users + customers):通过 JOIN customers 表获取租户信息
  • 空值表示不限制(管理员视角)

7. 已知限制

  1. 响应时间粒度:当前 avg_response_time 存储在 agents 表,是全局累计值,无法精确到特定时间范围
  2. 满意度评分:基于 customer_satisfactions.rating(1~5 分),无数据时返回 0
  3. Daily Stats 更新:依赖 Worker 或事件总线触发,非实时精确