--- created: 2026-03-29 updated: 2026-04-06 type: project status: COMPLETED (2026-03-31) parent: "[[Smart Support]]" phase: 4 timeline: 第 6-7 周 tags: - phase-4 - analytics - replay - dashboard - postgresql - pagination - data-visualization - resolution-rate - cost-tracking --- # Phase 4:分析 + 回放 > Status: COMPLETED (2026-03-31) ## 目标 让客户看到 AI 客服的 ROI。对话回放让客户信任系统,分析仪表盘用数据证明价值。 ## 阶段产出 - 回放数据模型:StepType 枚举、ReplayStep、ReplayPage(冻结数据类) - 检查点转换器:PostgresSaver JSONB -> 结构化 ReplayStep 时间线 - 回放 API:GET /api/conversations(分页列表)、GET /api/replay/{thread_id}(分页时间线) - 分析数据模型:AgentUsage、InterruptStats、AnalyticsResult - 分析事件记录器:Protocol 接口 + PostgresAnalyticsRecorder + NoOpAnalyticsRecorder - 分析查询:resolution_rate、agent_usage、escalation_rate、cost_per_conversation、interrupt_stats - 分析 API:GET /api/analytics?range=Xd - DB 迁移:analytics_events 表 + conversations 列扩展 ## 新增文件 | 文件 | 用途 | |------|------| | `app/replay/models.py` | StepType, ReplayStep, ReplayPage | | `app/replay/transformer.py` | Checkpoint JSONB -> ReplayStep[] | | `app/replay/api.py` | 回放 + 对话列表 API | | `app/analytics/models.py` | AgentUsage, InterruptStats, AnalyticsResult | | `app/analytics/event_recorder.py` | 记录器 Protocol + 实现 | | `app/analytics/queries.py` | SQL 查询 + get_analytics 聚合 | | `app/analytics/api.py` | 分析 API 路由 | ## 分析指标 | 指标 | 计算方式 | |------|---------| | 解决率 | 成功工具调用 + 未升级 / 总对话数 | | Agent 使用率 | 每 Agent 路由次数占比 | | 升级率 | 触发 Webhook 对话占比 | | 每对话成本 | Token 用量 x 价格 | | 中断统计 | approved/rejected/expired 分布 | ## 测试覆盖 - 新增测试:74 个 - 总测试:399 - 覆盖率:92.87% - 所有新模块覆盖率 81-100% ## 与计划的偏差 - 前端页面推迟到 Phase 5 - ws_handler 事件记录推迟(注册 NoOpAnalyticsRecorder) - conversations.agents_used 列未填充 ## Related - [[Smart Support/Phase 3 - OpenAPI 自动发现]] - [[Smart Support/Phase 5 - 打磨 + 演示]] - [[Smart Support]]