From 85f3f863950fa1d807697da437591062868e782c Mon Sep 17 00:00:00 2001
From: chengmw <chengmingwei_1984122@126.com>
Date: Thu, 26 Mar 2026 17:27:54 +0800
Subject: [PATCH] feat: 添加通话记录查看器功能模块

---
 web-app/src/contexts/CaseDataContext.jsx |   47 ++++++++++++++++++++++++++++++-----------------
 1 files changed, 30 insertions(+), 17 deletions(-)

diff --git a/web-app/src/contexts/CaseDataContext.jsx b/web-app/src/contexts/CaseDataContext.jsx
index f676cd0..48e6f11 100644
--- a/web-app/src/contexts/CaseDataContext.jsx
+++ b/web-app/src/contexts/CaseDataContext.jsx
@@ -369,20 +369,6 @@
         return;
       }
 
-      EvidenceAPIService.processCaseFilesOcr(params.caseId).catch((ocrError) => {
-        console.error('触发案件文件OCR失败:', ocrError);
-      });
-
-      try {
-        await OutboundBotAPIService.syncStatusByCase({ caseId: params.caseId });
-      } catch (syncError) {
-        console.error('同步外呼状态失败:', syncError);
-      }
-      try {
-        await OutboundBotAPIService.backfillConversationByCase({ caseId: params.caseId });
-      } catch (backfillError) {
-        console.error('回补通话记录失败:', backfillError);
-      }
 
       // 调用API获取数据
       // 将URL中的auth_token转换为authorization传入API
@@ -397,6 +383,14 @@
 
       // 提取timeline数据
       const timelineData = response.timeline || response.data?.timeline || response;
+      
+      // 调试日志:输出提取的timeline数据
+      console.log('===== API数据提取 =====');
+      console.log('原始response:', response);
+      console.log('提取的timelineData:', timelineData);
+      console.log('timelineData.mediation:', timelineData.mediation);
+      console.log('timelineData.mediation?.state:', timelineData.mediation?.state);
+      console.log('========================');
       
       // 提取nodes数据(确保为数组),兼容 nodeList 和 nodes 两种字段名
       const nodesData = response.data?.nodeList || response.data?.nodes || response.nodes || [];
@@ -422,7 +416,7 @@
       
       // 检查终态状态(调解成功/失败/人工接管),终态不执行外呼和存储
       const mediationState = timelineData.mediation?.state;
-      const isTerminalState = [2, 3, 4].includes(mediationState);
+      const isTerminalState = [2, 3, 4, 5].includes(mediationState);
       
       if (isTerminalState) {
         console.log('案件已处于终态状态:', mediationState, ',跳过外呼和存储');
@@ -439,15 +433,34 @@
       // 加载任务时间数据
       await loadTaskTime(timelineData);
 
+       EvidenceAPIService.processCaseFilesOcr(params.caseId).catch((ocrError) => {
+        console.error('触发案件文件OCR失败:', ocrError);
+      });
+
+      try {
+        await OutboundBotAPIService.syncStatusByCase({ caseId: params.caseId });
+      } catch (syncError) {
+        console.error('同步外呼状态失败:', syncError);
+      }
+      try {
+        await OutboundBotAPIService.backfillConversationByCase({ caseId: params.caseId });
+      } catch (backfillError) {
+        console.error('回补通话记录失败:', backfillError);
+      }
+      
       console.log('Case data loaded successfully:', timelineData);
     } catch (err) {
       console.error('Failed to load case data:', err);
       setError(err.message || '加载案件数据失败');
       
       // 显示错误提示
-      message.error('加载案件数据失败,请稍后重试');
+      message.error('加载案件数据失败,使用模拟数据');
       
-      // 使用Mock数据(缓存数据不包含nodes,所以统一使用Mock)
+      // 使用Mock数据作为降级方案
+      const mockTimeline = mockTimelineData.data?.timeline || mockTimelineData;
+      console.log('使用Mock数据降级:', mockTimeline);
+      setCaseData(mockTimeline);
+      setProcessNodes(mockTimelineData.data?.nodes || []);
       setHasLoaded(true);
       
     } finally {

--
Gitblit v1.8.0