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