From 6f344a5292739e21d0c8f06c346be44c31c38552 Mon Sep 17 00:00:00 2001 From: tony.cheng <chengmingwei_1984122@126.com> Date: Wed, 11 Feb 2026 10:54:23 +0800 Subject: [PATCH] 修复智能外呼气泡组件变量初始化错误和时间格式问题 --- openspec/changes/integrate-auto-outbound-call/proposal.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 43 insertions(+), 0 deletions(-) diff --git a/openspec/changes/integrate-auto-outbound-call/proposal.md b/openspec/changes/integrate-auto-outbound-call/proposal.md new file mode 100644 index 0000000..56ae0bc --- /dev/null +++ b/openspec/changes/integrate-auto-outbound-call/proposal.md @@ -0,0 +1,43 @@ +# Change: 智能外呼自动触发与状态监控 + +## Why + +当前首页加载案件数据后,无法自动触发AI智能外呼功能,调解员需要手动操作才能启动外呼流程。为提升调解效率和自动化水平,需要实现: +1. 案件数据加载完成后自动发起智能外呼 +2. 实时监控并展示外呼状态和进度 +3. 支持多人同时外呼的场景 + +## What Changes + +- **CaseDataContext.jsx**: 在 `loadCaseData` 方法返回 `timelineData` 后,调用 `OutboundBotAPIService.makeCallV2` 发起外呼 +- **OutboundCallWidget.jsx**: 改造现有轮询逻辑,基于 jobId 查询通话状态,支持多任务展示和生命周期管理 +- **localStorage 管理**: 新增 jobId 状态持久化存储,区分活跃任务(Scheduling/Executing/Paused/Drafted)与终态任务(Succeeded/Failed/Cancelled) +- **轮询策略**: 采用 10 秒轮询间隔,最大轮询时长 2 小时,失败重试 10 次 +- **错误处理**: `makeCallV2` 失败时展示错误提示并记录日志,`getCallStatus` 失败时支持重试机制 + +## Impact + +- **Affected specs**: outbound-call-auto-trigger(新建) +- **Affected code**: + - `web-app/src/contexts/CaseDataContext.jsx` (141行后新增外呼触发逻辑) + - `web-app/src/components/common/OutboundCallWidget.jsx` (重构轮询逻辑) + - `web-app/src/services/OutboundBotAPIService.js` (已有API方法,无需修改) +- **Dependencies**: 依赖 API 文档中定义的外呼机器人接口 +- **Breaking Changes**: 无 + +## User Experience + +1. **用户进入首页** → 页面自动加载案件数据 +2. **数据加载完成** → 系统自动发起外呼(无需手动操作) +3. **右下角气泡弹出** → 展示"正在与XX电话沟通中..." +4. **实时更新状态** → 每10秒刷新通话状态和时长 +5. **通话结束** → 气泡自动消失,jobId 从存储中清除 + +## Technical Notes + +- **jobId 来源**: 从 `timelineData` 中提取 `id`(mediationId)和 `case_id`(caseId)作为外呼请求参数,响应返回 jobId 数组 +- **状态映射**: + - 活跃状态: `Scheduling`, `Executing`, `Paused`, `Drafted` + - 终态状态: `Succeeded`, `Failed`, `Cancelled` +- **多任务支持**: 单次外呼可能生成多个 jobId(申请人、被申请人),需循环展示 +- **轮询限制**: 最大轮询时长 2 小时(7200秒),超时后自动停止并清理 -- Gitblit v1.8.0