| | |
| | | 1. 案件数据加载完成后自动发起智能外呼 |
| | | 2. 实时监控并展示外呼状态和进度 |
| | | 3. 支持多人同时外呼的场景 |
| | | 4. 优化失败任务展示体验,提供清晰的状态指示 |
| | | |
| | | ## What Changes |
| | | |
| | | - **CaseDataContext.jsx**: 在 `loadCaseData` 方法返回 `timelineData` 后,调用 `OutboundBotAPIService.makeCallV2` 发起外呼 |
| | | - **OutboundCallWidget.jsx**: 改造现有轮询逻辑,基于 jobId 查询通话状态,支持多任务展示和生命周期管理 |
| | | - **localStorage 管理**: 新增 jobId 状态持久化存储,区分活跃任务(Scheduling/Executing/Paused/Drafted)与终态任务(Succeeded/Failed/Cancelled) |
| | | - **localStorage 管理**: |
| | | - 新增 jobId 状态持久化存储,区分活跃任务(Scheduling/Executing/Paused/Drafted)与终态任务(Succeeded/Failed/Cancelled) |
| | | - 新增失败任务独立存储(`outbound_call_jobs_failed`),支持失败信息展示 |
| | | - 实现失败任务去重机制(按 personId 去重)和自动清理(24小时过期) |
| | | - **轮询策略**: 采用 10 秒轮询间隔,最大轮询时长 2 小时,失败重试 10 次 |
| | | - **错误处理**: `makeCallV2` 失败时展示错误提示并记录日志,`getCallStatus` 失败时支持重试机制 |
| | | - **错误处理**: |
| | | - `makeCallV2` 失败时展示错误提示并记录日志 |
| | | - `getCallStatus` 失败时支持重试机制 |
| | | - 失败任务在气泡中清晰展示,带红色状态指示灯 |
| | | - **UI/UX 优化**: |
| | | - 成功任务:蓝色气泡 + 绿色呼吸灯状态指示 |
| | | - 失败任务:蓝色气泡 + 红色呼吸灯状态指示 |
| | | - 重复任务自动去重,避免信息冗余 |
| | | |
| | | ## 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/contexts/CaseDataContext.jsx` (141行后新增外呼触发逻辑,含失败任务处理) |
| | | - `web-app/src/components/common/OutboundCallWidget.jsx` (重构轮询逻辑,新增失败任务展示和去重) |
| | | - `web-app/src/services/OutboundBotAPIService.js` (已有API方法,无需修改) |
| | | - **Dependencies**: 依赖 API 文档中定义的外呼机器人接口 |
| | | - **Breaking Changes**: 无 |
| | |
| | | |
| | | 1. **用户进入首页** → 页面自动加载案件数据 |
| | | 2. **数据加载完成** → 系统自动发起外呼(无需手动操作) |
| | | 3. **右下角气泡弹出** → 展示"正在与XX电话沟通中..." |
| | | 3. **右下角气泡弹出** → |
| | | - 成功任务:蓝色气泡 + 绿色呼吸灯,展示"正在与XX电话沟通中..." |
| | | - 失败任务:蓝色气泡 + 红色呼吸灯,展示失败原因(如"今日呼叫次数已达上限") |
| | | 4. **实时更新状态** → 每10秒刷新通话状态和时长 |
| | | 5. **通话结束** → 气泡自动消失,jobId 从存储中清除 |
| | | 6. **重复防护** → 相同联系人失败任务自动去重,避免重复显示 |
| | | 7. **自动清理** → 失败任务超过24小时自动清除 |
| | | |
| | | ## Technical Notes |
| | | |
| | |
| | | - 终态状态: `Succeeded`, `Failed`, `Cancelled` |
| | | - **多任务支持**: 单次外呼可能生成多个 jobId(申请人、被申请人),需循环展示 |
| | | - **轮询限制**: 最大轮询时长 2 小时(7200秒),超时后自动停止并清理 |
| | | - **失败任务处理**: |
| | | - 存储字段:`{ personId, message, perClassName, trueName, errorCode, startTime }` |
| | | - 去重策略:按 `personId` 去重,保留最新记录 |
| | | - 清理策略:超过24小时的记录自动清除 |
| | | - **视觉规范**: |
| | | - 所有任务使用统一蓝色气泡背景 |
| | | - 状态指示灯:成功=绿色(#52c41a),失败=红色(#ff4d4f) |
| | | - 呼吸动画:pulse 2s infinite |