From 4ada1149e734e8e8ba22b9801b26e49a6921911e Mon Sep 17 00:00:00 2001
From: tony.cheng <chengmingwei_1984122@126.com>
Date: Tue, 17 Mar 2026 10:54:27 +0800
Subject: [PATCH] feat: 实现AI调解状态控制功能(终止/恢复)OpenSpec提案及API完善
---
web-app/src/services/ProcessAPIService.js | 77 +++++++++++++++++++++++++++++++++-----
1 files changed, 66 insertions(+), 11 deletions(-)
diff --git a/web-app/src/services/ProcessAPIService.js b/web-app/src/services/ProcessAPIService.js
index c239a26..bad9165 100644
--- a/web-app/src/services/ProcessAPIService.js
+++ b/web-app/src/services/ProcessAPIService.js
@@ -21,13 +21,15 @@
/**
* 获取流程任务进行时长
* GET /api/v1/process/record/task-time
- * @param {Object} params - 查询参数
- * @param {string} params.mediation_id - AI调解反馈ID
- * @param {string} params.node_id - 节点ID
+ * @param {string} mediation_id - AI调解反馈ID
+ * @param {string} node_id - 节点ID
* @returns {Promise} 任务进行时长
+ * @returns {Promise<Object>} 返回对象包含startTime和duration
+ * @returns {Promise<Object>.data.startTime} 任务开始时间字符串
+ * @returns {Promise<Object>.data.duration} 持续时间字符串
*/
- static getTaskTime(params = {}) {
- return request.get('/api/v1/process/record/task-time', params);
+ static getTaskTime(mediation_id, node_id) {
+ return request.get('/api/v1/process/record/task-time', { mediation_id, node_id });
}
/**
@@ -37,10 +39,14 @@
* @param {Object} params - 查询参数
* @param {string} params.caseTypeFirst - 案件一级分类
* @param {string} params.platform_code - 外部平台编号
+ * @param {string} params.authorization - 授权token
* @returns {Promise} 调解时间线数据
*/
static getMediationTimeline(caseId, params = {}) {
- return request.get(`/api/v1/mediation-timeline/v2/case/${caseId}`, params);
+ const { authorization, ...queryParams } = params;
+ queryParams.authorization = authorization;
+ const config = authorization ? { headers: { Authorization: authorization } } : {};
+ return request.get(`/api/v1/mediation-timeline/v2/case/${caseId}`, queryParams, config);
}
/**
@@ -50,10 +56,13 @@
* @param {string} params.caseTypeFirst - 案件一级分类
* @param {string} params.platformCode - 外部平台编号
* @param {string} params.caseId - 案件ID
+ * @param {string} params.authorization - 授权token
* @returns {Promise} 流程节点列表
*/
static getProcessNodes(params = {}) {
- return request.get('/api/v1/process/node', params);
+ const { authorization, ...queryParams } = params;
+ const config = authorization ? { headers: { Authorization: authorization } } : {};
+ return request.get('/api/v1/process/node', queryParams, config);
}
@@ -63,28 +72,42 @@
* @param {Object} params - 查询参数
* @param {string} params.caseTypeFirst - 案件一级分类
* @param {string} params.platform_code - 外部平台编号
+ * @param {string} params.authorization - 授权token(来自URL的auth_token)
* @returns {Promise} 完整流程信息
*/
static async getCaseProcessInfo(caseId, params = {}) {
try {
+ console.log('Getting case process info...', caseId, params);
// 参数名转换:platform_code -> platformCode
const nodeParams = {
caseTypeFirst: params.caseTypeFirst,
platformCode: params.platform_code,
- caseId
+ caseId,
+ authorization: params.authorization
};
+ // 提取authorization用于子请求
+ const { authorization, ...timelineParams } = params;
+ console.log('Timeline params:', timelineParams);
+ timelineParams.authorization = authorization;
// 并行获取时间线和流程节点
const promises = [
- this.getMediationTimeline(caseId, params),
- this.getProcessNodes(nodeParams)
+ this.getMediationTimeline(caseId, { ...timelineParams, authorization }),
+ this.getProcessNodes({ ...nodeParams, authorization })
];
const results = await Promise.all(promises);
+ console.log('Timeline result:', results[0]);
+ console.log('Nodes result:', results[1]);
+
+ // nodes接口返回 { nodeList: [...] },需提取 nodeList 数组
+ const nodesRaw = results[1].data;
+ const nodes = nodesRaw?.nodeList || (Array.isArray(nodesRaw) ? nodesRaw : []);
+
return {
timeline: results[0].data || {},
- nodes: results[1].data || {}
+ nodes
};
} catch (error) {
return Promise.reject(error);
@@ -108,6 +131,38 @@
}
}
+ /**
+ * 人工接管API
+ * PUT /api/v1/mediation-timeline/v2/case/{caseId}/takeover
+ * @param {string} caseId - 案件ID
+ * @param {Object} data - 请求数据
+ * @param {string} data.userName - 当前用户名
+ * @returns {Promise} 接管结果
+ */
+ static takeover(caseId, data) {
+ return request.put(`/api/v1/mediation-timeline/v2/case/${caseId}/takeover`, data);
+ }
+
+ /**
+ * AI调解状态控制API(终止/恢复)
+ * PUT /api/v1/mediation-timeline/v2/case/{caseId}/state
+ * @param {string} caseId - 案件ID
+ * @param {Object} data - 请求数据
+ * @param {number} data.action - 操作类型:0-终止,1-恢复
+ * @param {string} data.userName - 操作人姓名(可选)
+ * @returns {Promise} 状态更新结果
+ *
+ * @example
+ * // 终止调解
+ * ProcessAPIService.updateMediationState('1001', { action: 0, userName: '张三' });
+ *
+ * // 恢复调解
+ * ProcessAPIService.updateMediationState('1001', { action: 1, userName: '李四' });
+ */
+ static updateMediationState(caseId, data) {
+ return request.put(`/api/v1/mediation-timeline/v2/case/${caseId}/state`, data);
+ }
+
}
export default ProcessAPIService;
\ No newline at end of file
--
Gitblit v1.8.0