当查询通话状态返回的状态发生变化时,调用通话状态更新API更新后端状态,并刷新页面数据、切换到AI调解实时看板页签。
当前 OutboundCallWidget 组件会轮询查询通话状态,但状态变化时只更新本地 localStorage,未同步到后端。需要:
1. 调用 OutboundBotAPIService.updateCallStatus 更新后端状态
2. 刷新AI调解进度数据
3. 切换到"AI调解实时看板"Tab页签
状态变化判断:newStatus !== job.callStatus
排除条件:job.callStatus === 'Scheduling'(调度中状态变化不触发更新)
触发条件:状态变化且原状态不为 Scheduling
方案 B:事件回调方式
App.js
├── TabContainer (接收 switchTab 方法)
│ └── 内部 activeTab 状态管理
└── OutboundCallWidget (接收 onSwitchTab, onRefreshData 回调)
└── 状态变化时调用回调
graph TD
A[轮询查询通话状态] --> B{状态变化?}
B -->|否| Z[继续轮询]
B -->|是| C{原状态是Scheduling?}
C -->|是| D[仅更新localStorage]
D --> Z
C -->|否| E[调用updateCallStatus API]
E --> F{API调用成功?}
F -->|是| G[调用refreshData刷新数据]
G --> H[调用onSwitchTab切换Tab]
H --> I[更新localStorage]
F -->|否| J[记录错误日志]
J --> I
当多个任务状态同时变化时:
- 使用 Promise.all 并行调用所有任务的 updateCallStatus
- 等待所有调用完成后再执行刷新和Tab切换
- 任一调用失败只记录日志,不影响其他任务
OutboundCallWidget 新增 props:
| Prop | 类型 | 必填 | 描述 |
|---|---|---|---|
onSwitchTab |
(tabKey: string) => void |
否 | Tab切换回调 |
onRefreshData |
() => void |
否 | 数据刷新回调 |
web-app/src/components/common/OutboundCallWidget.jsx - 核心逻辑实现web-app/src/components/dashboard/TabContainer.jsx - 暴露 switchTab 方法web-app/src/App.js - 传递回调 propsweb-app/src/services/OutboundBotAPIService.js - API服务(已存在)web-app/src/contexts/CaseDataContext.jsx - refreshData 方法(已存在)OutboundBotAPIService.updateCallStatus)refreshData 方法updateCallStatus APIupdateCallStatus APIrefreshData() 刷新案件数据见 tasks.md