From 4652417920cf18bde542a6c3f0ecd237584ecc02 Mon Sep 17 00:00:00 2001 From: ZLI263 Date: Wed, 10 Sep 2025 17:01:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=8F=91=E7=94=BB=E5=83=8F=E4=BC=81?= =?UTF-8?q?=E5=BE=AE=E5=9C=BA=E6=99=AF=EF=BC=8C=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E5=A4=9A=E7=BA=BF=E7=A8=8B=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../center/mq/CorpusDccMqConsumer.java | 5 ++ .../center/mq/CorpusProcessKafkaProducer.java | 11 +++ .../impl/CorpusPortraitServiceImpl.java | 4 +- .../impl/TmNameplateCorpusServiceImpl.java | 2 + .../TmOdsVdqwMessagearchivingServiceImpl.java | 7 +- .../impl/TmTelephoneCorpusServiceImpl.java | 74 +++++++++++++------ 6 files changed, 79 insertions(+), 24 deletions(-) diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/mq/CorpusDccMqConsumer.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/mq/CorpusDccMqConsumer.java index b409080..a96770c 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/mq/CorpusDccMqConsumer.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/mq/CorpusDccMqConsumer.java @@ -2,6 +2,8 @@ package com.volvo.ai.analytic.center.mq; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.volvo.ai.analytic.center.constant.Constant; @@ -52,6 +54,9 @@ public class CorpusDccMqConsumer implements RocketMQListener { AicorpusTelephoneDTO aicorpusTelephone = objectMapper.readValue(message, AicorpusTelephoneDTO.class); //DCC场景 if(Objects.equals(aicorpusTelephone.getCategoryCode(), Constant.CHANNEL_DCC)){ + //TODO 这里需要确认客户画像下这个字段值是什么? + JSONObject jsonObject = JSONObject.parseObject( aicorpusTelephone.getDisplay()); + log.info(" message: " + JSON.toJSONString(aicorpusTelephone)); tmTelephoneCorpusService.runTelephoneCorpusDify(aicorpusTelephone); } //channel_4in1场景 diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/mq/CorpusProcessKafkaProducer.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/mq/CorpusProcessKafkaProducer.java index fb2eeb9..23084bb 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/mq/CorpusProcessKafkaProducer.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/mq/CorpusProcessKafkaProducer.java @@ -1,6 +1,8 @@ package com.volvo.ai.analytic.center.mq; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.databind.ObjectMapper; import com.volvo.ai.analytic.center.constant.Constant; import com.volvo.ai.analytic.center.dto.corpus.AicorpusTelephoneDTO; @@ -92,6 +94,15 @@ public class CorpusProcessKafkaProducer { try { String message = (String) record.value(); AicorpusTelephoneDTO aicorpusTelephone = objectMapper.readValue(message, AicorpusTelephoneDTO.class); + JSONObject jsonObject = JSONObject.parseObject( aicorpusTelephone.getDisplay()); + + Long audioDuration = jsonObject.getLong("audio_duration"); // 毫秒 + if(audioDuration/1000 <=10){ + log.info("电话语料时长小于10秒,不进行dify处理"); + return; + } + + log.info("aicorpusTelephone categoryCode:{}, display: {}", aicorpusTelephone.getCategoryCode(), aicorpusTelephone.getDisplay()); DisplayDTO display = objectMapper.readValue(aicorpusTelephone.getDisplay(), DisplayDTO.class); log.info("aicorpusTelephone display getSegments: {}", display.getSegments()); diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/CorpusPortraitServiceImpl.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/CorpusPortraitServiceImpl.java index 3aa46d3..c12a4b1 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/CorpusPortraitServiceImpl.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/CorpusPortraitServiceImpl.java @@ -259,11 +259,11 @@ public class CorpusPortraitServiceImpl implements CorpusPortraitService { corpusReportDTO.setUserId(userId); // 获取配置 JSONObject execDifyFlow = diFyService.executeDifyFlow(diFyImageReq, BusinessTypeEnum.CORPUS_PORTRAIT_QIWEI.getCode(), JSONObject.toJSONString(corpusReportDTO), null); - log.info("runDify execDifyFlow {}", execDifyFlow); + log.info("runDify execDifyFlow 企微语料,画像场景 Dify的返回 : {}", execDifyFlow); String aiAnalysisRequestId = execDifyFlow.getString("aiAnalysisRequestId"); if (null != execDifyFlow && execDifyFlow.get("status").equals("succeeded")) { JSONObject text = execDifyFlow.getJSONObject("outputs"); - + // TODO 检查是否发了 unionid , 画像场景 "businessId": "业务ID", // 根据分析不同传不同的值 1、unionId 2、通话ID 3、客流ID 4、试驾ID // huaWeiService.sendEvent(setCloudEvents(aiAnalysisRequestId, text.toJSONString(),"QIWEI"),ltoChannelId); log.info("send mq ,企微语料,画像场景 {}", text); tmTelephoneCorpusService.sendMq( BusinessTypeEnum.CORPUS_PORTRAIT_QIWEI.getCode(), text.toJSONString()); diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/TmNameplateCorpusServiceImpl.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/TmNameplateCorpusServiceImpl.java index 36dd015..2f20450 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/TmNameplateCorpusServiceImpl.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/TmNameplateCorpusServiceImpl.java @@ -155,6 +155,8 @@ public class TmNameplateCorpusServiceImpl extends ServiceImpl[] futures = messageList.stream() .map(item -> CompletableFuture.runAsync(() -> { + long startTime2 = System.currentTimeMillis(); + log.info("处理企微语料开始 FromUserId={}, AcceptUserId={}", + item.getFromUserId(), item.getAcceptUserId()); try { processItem(item, finalStatTime, finalEndTime); } catch (Exception e) { @@ -141,8 +144,10 @@ public class TmOdsVdqwMessagearchivingServiceImpl extends ServiceImpl summaryFuture = CompletableFuture.runAsync(() -> { + JSONObject execDifyFlow = diFyService.executeDifyFlow(diFyImageReq, BusinessTypeEnum.SMART_ASSISTANT.getCode(), + JSONObject.toJSONString(corpusReportDTO), aicorpusTelephone.getAiAnalysisRequestId()); + log.info("runDify execDifyFlow 返回 ,总结场景 : {}", execDifyFlow); + parseDfiyResult(execDifyFlow, aicorpusTelephone.getSourceId(), formattedDateStartTime, aicorpusTelephone.getAiAnalysisRequestId(), + BusinessTypeEnum.SMART_ASSISTANT.getCode()); + }, executorService); + long endTime = System.currentTimeMillis(); + log.info("第一个业务场景(总结和分类)执行时间: {} ms", (endTime - startTime)); + //第一个业务场景, 结束 + + //TODO 是否传给LOT 穿行改成并行 + //第二个业务场景: 用户画像业务场景。 开始 +// diFyImageReq.setFlowId(telephoneTokenPortrait); +// JSONObject execDifyFlowForPortrait = diFyService.executeDifyFlow(diFyImageReq, BusinessTypeEnum.CORPUS_PORTRAIT_DCC.getCode(), +// JSONObject.toJSONString(corpusReportDTO), aicorpusTelephone.getAiAnalysisRequestId()); //调用dify平台。 +// log.info("runDify execDifyFlow 返回 ,客户画像场景: {}",execDifyFlowForPortrait); +// parseDfiyResult(execDifyFlowForPortrait, aicorpusTelephone.getSourceId(), formattedDateStartTime, +// aicorpusTelephone.getAiAnalysisRequestId(), BusinessTypeEnum.CORPUS_PORTRAIT_DCC.getCode()); // 发送mq消息。 + + + long startTime2 = System.currentTimeMillis(); + CompletableFuture portraitFuture = CompletableFuture.runAsync(() -> { + + // 创建新的DiFyReq对象以避免线程安全问题 + diFyImageReq.setFlowId(oneTokenPortrait); + JSONObject execDifyFlowForPortrait = diFyService.executeDifyFlow(diFyImageReq, BusinessTypeEnum.CORPUS_PORTRAIT_DCC.getCode(), + JSONObject.toJSONString(corpusReportDTO), aicorpusTelephone.getAiAnalysisRequestId()); + + log.info("runDify execDifyFlow 返回 ,客户画像场景: {}", execDifyFlowForPortrait); + + parseDfiyResult(execDifyFlowForPortrait, aicorpusTelephone.getSourceId(), formattedDateStartTime, + aicorpusTelephone.getAiAnalysisRequestId(), BusinessTypeEnum.CORPUS_PORTRAIT_DCC.getCode()); + }, executorService); + long endTime2 = System.currentTimeMillis(); + log.info("第二个业务场景(用户画像)执行时间: {} ms", (endTime2 - startTime2)); + //第二个业务场景, 结束 + } }