From 6f45735adfdcd973a19f638f9ced9629f79cd6de Mon Sep 17 00:00:00 2001
From: shimai <shimai@example.com>
Date: Wed, 15 Apr 2026 16:12:01 +0800
Subject: [PATCH] v2.0: 提交当前所有变更,准备创建v2.0标签
---
web-app/src/services/OutboundBotAPIService.js | 77 +++++++++++++++++++++++++++++++++++++-
1 files changed, 74 insertions(+), 3 deletions(-)
diff --git a/web-app/src/services/OutboundBotAPIService.js b/web-app/src/services/OutboundBotAPIService.js
index daf5fa1..f582ded 100644
--- a/web-app/src/services/OutboundBotAPIService.js
+++ b/web-app/src/services/OutboundBotAPIService.js
@@ -27,8 +27,8 @@
* 获取通话录音接口
* GET /api/v1/outbound-bot/conversation-log
* @param {Object} params - 查询参数
- * @param {string} params.caseRef - 案件引用ID
- * @param {string} params.phoneNumber - 电话号码
+ * @param {string} params.caseId - 案件ID
+ * @param {string} params.personId - 当事人ID
* @param {string} params.jobId - 工作ID
* @returns {Promise} 通话记录
*/
@@ -50,7 +50,33 @@
}
/**
+ * 触发外呼任务(后端驱动,MQ异步处理)
+ * POST /api/v1/outbound-bot/trigger
+ * @param {Object} data - 请求数据
+ * @param {string} data.mediationId - 调解反馈表ID
+ * @param {string} data.caseId - 案件ID
+ * @param {number} data.callAuto - 呼叫模式 (0:自动, 1:手动)
+ * @param {string} data.callPersonId - 手动模式指定当事人ID
+ * @returns {Promise} 触发结果
+ */
+ static triggerOutbound(data = {}) {
+ return request.post('/api/v1/outbound-bot/trigger', data);
+ }
+
+ /**
+ * 获取当前节点活跃外呼记录(后端驱动模式下补充 localStorage)
+ * GET /api/v1/outbound-bot/active-records
+ * @param {Object} params
+ * @param {string} params.mediationId - 调解反馈表ID
+ * @returns {Promise} 活跃外呼记录列表
+ */
+ static getActiveRecords(params = {}) {
+ return request.get('/api/v1/outbound-bot/active-records', params);
+ }
+
+ /**
* 更新呼叫状态
+ * [已废弃] 状态更新现由后端回调驱动,前端不再调用
* POST /api/v1/outbound-bot/update-status
* @param {Object} data - 请求数据
* @param {string} data.jobId - 工作ID
@@ -60,6 +86,51 @@
static updateCallStatus(data) {
return request.post('/api/v1/outbound-bot/update-status', data);
}
+
+ static syncStatusByCase(data) {
+ return request.post('/api/v1/outbound-bot/sync-status-by-case', data);
+ }
+
+ static backfillConversationByCase(data) {
+ return request.post('/api/v1/outbound-bot/backfill-conversation-by-case', data);
+ }
+
+ /**
+ * 查询AI处理状态(摘要生成/情绪识别是否进行中)
+ * GET /api/v1/outbound-bot/ai-processing-status
+ * @param {Object} params
+ * @param {string} params.mediation_id - 调解反馈表ID
+ * @returns {Promise} AI处理状态列表
+ */
+ static getAiProcessingStatus(params = {}) {
+ return request.get('/api/v1/outbound-bot/ai-processing-status', params);
+ }
+
+ /**
+ * 获取通话录音文件
+ * GET /api/v1/outbound-bot/file-play
+ * @param {string} recordUrl - 录音文件相对路径
+ * @returns {Promise} 音频文件Blob
+ */
+ static async getAudioFile(recordUrl) {
+ try {
+ const response = await request.get('/api/v1/outbound-bot/file-play', {
+ recordUrl
+ }, {
+ responseType: 'blob',
+ headers: {
+ 'Content-Type': 'audio/wav',
+ 'Content-Disposition': 'inline'
+ }
+ });
+
+ // axios返回的是response对象,blob在response.data中
+ return response.data;
+ } catch (error) {
+ console.error('获取录音文件失败:', error);
+ throw error;
+ }
+ }
}
-export default OutboundBotAPIService;
\ No newline at end of file
+export default OutboundBotAPIService;
--
Gitblit v1.8.0