From b1e3660a30b75f51a0e7b41c06d58c8b50033542 Mon Sep 17 00:00:00 2001
From: tony.cheng <chengmingwei_1984122@126.com>
Date: Thu, 12 Feb 2026 13:39:03 +0800
Subject: [PATCH] docs: 更新智能外呼相关文档 - 优化失败任务展示和去重机制
---
openspec/changes/integrate-auto-outbound-call/design.md | 33 ++++++++++++++++++++++++++++++++-
1 files changed, 32 insertions(+), 1 deletions(-)
diff --git a/openspec/changes/integrate-auto-outbound-call/design.md b/openspec/changes/integrate-auto-outbound-call/design.md
index ff4da5f..8123189 100644
--- a/openspec/changes/integrate-auto-outbound-call/design.md
+++ b/openspec/changes/integrate-auto-outbound-call/design.md
@@ -26,12 +26,16 @@
4. **幂等性保证**:页面刷新时不重复发起外呼,继续监听现有任务
5. **自动清理**:通话结束后自动移除气泡和存储数据
6. **错误容错**:API 失败时提供友好提示,不阻塞主流程
+7. **失败任务可视化**:失败任务在气泡中清晰展示,带红色状态指示灯
+8. **重复防护**:相同联系人失败任务自动去重,避免信息冗余
+9. **自动过期清理**:失败任务超过24小时自动清除
### Non-Goals
- 不涉及后端外呼接口实现
- 不涉及通话录音播放功能
- 不涉及外呼任务的手动取消或重试操作
- 不涉及复杂的权限控制(当前仅前端功能)
+- 不涉及失败任务的自动重试机制
## Decisions
@@ -53,6 +57,8 @@
### Decision 2: jobId 状态管理 - localStorage + 活跃状态过滤
**数据结构设计**:
+
+**成功任务存储**:
```javascript
// localStorage key: 'outbound_call_jobs'
[
@@ -61,9 +67,27 @@
callStatus: "Scheduling", // 或 Executing, Paused, Drafted, Succeeded, Failed, Cancelled
personId: "2303191513081131",
mediationId: 20,
+ caseId: "CASE_001", // 用于轮询查询的 caseRef 参数
+ perClassName: "申请人", // 人员类型名称
+ trueName: "张三", // 真实姓名
startTime: 1738228800000, // 触发时间戳
retryCount: 0, // 重试次数
pollStartTime: 1738228800000 // 轮询开始时间(用于2小时超时检测)
+ }
+]
+```
+
+**失败任务存储**:
+```javascript
+// localStorage key: 'outbound_call_jobs_failed'
+[
+ {
+ personId: "2303191513081131",
+ message: "今日呼叫次数已达上限(3次)",
+ perClassName: "申请人", // 人员类型名称
+ trueName: "张三", // 真实姓名
+ errorCode: 1001, // 错误码
+ startTime: 1738228800000 // 失败时间戳(用于24小时过期清理)
}
]
```
@@ -216,7 +240,14 @@
3. 实现 localStorage 状态管理
4. 完成错误处理和重试机制
-### Phase 2: 优化与扩展(后续迭代)
+### Phase 2: 用户体验优化(当前完成)
+1. 失败任务独立存储和展示
+2. 失败任务去重机制(按 personId 去重)
+3. 失败任务自动清理(24小时过期)
+4. 视觉优化:成功任务绿色指示灯,失败任务红色指示灯
+5. 重复气泡防护,避免信息冗余
+
+### Phase 3: 优化与扩展(后续迭代)
1. 支持手动取消外呼任务
2. 外呼结果通知(成功/失败弹窗)
3. 外呼历史记录查询
--
Gitblit v1.8.0