From 367590bb255c154f57eabafa6575e662a218d00c Mon Sep 17 00:00:00 2001 From: ZLI263 Date: Fri, 12 Sep 2025 14:39:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9sonar=E6=89=AB=E5=87=BA?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../analytic/center/job/QiWeiCorpusJob.java | 19 +++++------- .../center/mq/CorpusDccMqConsumer.java | 2 -- .../center/mq/CorpusProcessKafkaProducer.java | 20 ------------- .../impl/CorpusPortraitServiceImpl.java | 29 ++++++++++--------- 4 files changed, 23 insertions(+), 47 deletions(-) diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/job/QiWeiCorpusJob.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/job/QiWeiCorpusJob.java index 2bf8975..cfa392f 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/job/QiWeiCorpusJob.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/job/QiWeiCorpusJob.java @@ -1,6 +1,7 @@ package com.volvo.ai.analytic.center.job; import com.volvo.ai.analytic.center.dto.corpus.AicorpusTelephoneDTO; +import com.volvo.ai.analytic.center.exception.JobTaskException; import com.volvo.ai.analytic.center.mapper.TmTelephoneCorpusMapper; import com.volvo.ai.analytic.center.service.CorpusPortraitService; import com.volvo.ai.analytic.center.service.TmOdsVdqwMessagearchivingService; @@ -61,7 +62,7 @@ public class QiWeiCorpusJob { tmOdsVdqwMessagearchivingService.runQiWeiCorpusDify(param); } catch (Exception e) { log.error(PROCESS_MESSAGE_TASK_ERROR,e.getMessage()); - throw new RuntimeException(e); + throw new JobTaskException(PROCESS_MESSAGE_TASK_ERROR, e); } return ResultMsg.ok(); } @@ -81,15 +82,13 @@ public class QiWeiCorpusJob { // 执行业务逻辑 XxlJobHelper.log("dccCorpusFailRetry任务参数: {}", param); List corpusDtoList = tmTelephoneCorpusMapper.queryTelephoneCorpusBySourceIds( Arrays.asList(param.split(","))); - corpusDtoList.stream().forEach(item-> - { + corpusDtoList.stream().forEach(item-> { tmTelephoneCorpusService.runTelephoneCorpusDify(item); corpusPortraitService.portraitDcc(item); - } - ); + }); } catch (Exception e) { log.error(PROCESS_MESSAGE_TASK_ERROR,e.getMessage()); - throw new RuntimeException(e); + throw new JobTaskException(PROCESS_MESSAGE_TASK_ERROR, e); } return ResultMsg.ok(); } @@ -107,14 +106,12 @@ public class QiWeiCorpusJob { // 执行业务逻辑 XxlJobHelper.log("dccCorpusFailRetry任务参数: {}", param); List corpusDtoList = tmTelephoneCorpusMapper.queryTelephoneCorpusBySourceIds( Arrays.asList(param.split(","))); - corpusDtoList.stream().forEach(item-> - { + corpusDtoList.stream().forEach(item-> { corpusPortraitService.portraitDcc(item); - } - ); + }); } catch (Exception e) { log.error(PROCESS_MESSAGE_TASK_ERROR,e.getMessage()); - throw new RuntimeException(e); + throw new JobTaskException(PROCESS_MESSAGE_TASK_ERROR, e); } return ResultMsg.ok(); } 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 a1ba6ec..12fee6e 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,7 +2,6 @@ package com.volvo.ai.analytic.center.mq; import com.alibaba.fastjson.JSON; -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; @@ -55,7 +54,6 @@ public class CorpusDccMqConsumer implements RocketMQListener { if(Objects.equals(aicorpusTelephone.getCategoryCode(), Constant.CHANNEL_DCC)){ //TODO 这里需要确认客户画像下这个字段值是什么? 已经确认了,和总结需求的dcc场景是一致的 , 所以不需要修改。。 //总结和客户画像都是这一个:Constant.CHANNEL_DCC - JSONObject jsonObject = JSONObject.parseObject( aicorpusTelephone.getDisplay()); log.info(" dcc_mq接收到消息 , 总结和分类业务场景: " + JSON.toJSONString(aicorpusTelephone)); tmTelephoneCorpusService.runTelephoneCorpusDify(aicorpusTelephone); } 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 96c691e..2fff9dd 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 @@ -55,26 +55,6 @@ public class CorpusProcessKafkaProducer { @Resource private RocketMQTemplate rocketMqTemplate; -// @KafkaListener( -// topicPartitions = @TopicPartition( -// topic = "${spring.kafka.topic}", -// partitionOffsets = { -// @PartitionOffset(partition = "0", initialOffset = "2792520"), -// @PartitionOffset(partition = "1", initialOffset = "2596153"), -// @PartitionOffset(partition = "2", initialOffset = "2536889"), -// @PartitionOffset(partition = "3", initialOffset = "2782173"), -// @PartitionOffset(partition = "4", initialOffset = "2616677"), -// @PartitionOffset(partition = "5", initialOffset = "2529585"), -// @PartitionOffset(partition = "6", initialOffset = "2761950"), -// @PartitionOffset(partition = "7", initialOffset = "2581957"), -// @PartitionOffset(partition = "8", initialOffset = "2530225"), -// @PartitionOffset(partition = "9", initialOffset = "2803179"), -// @PartitionOffset(partition = "10", initialOffset = "2599129"), -// @PartitionOffset(partition = "11", initialOffset = "2546277") -// } -// ), -// groupId = "${spring.kafka.group}" -// ) //spring.kafka.topic=topic_voc_covert_text_log spring.kafka.group=topic_group_covert_text_log_voc_ai_ac_uat @KafkaListener(topics = "${spring.kafka.topic}", groupId = "${spring.kafka.group}") public void listen(List> recordMessages) { 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 7c59b35..a5db5ba 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 @@ -46,6 +46,9 @@ import java.util.stream.Collectors; @Service public class CorpusPortraitServiceImpl implements CorpusPortraitService { + private static final String BRAND_KEY = "brand"; + private static final String AI_ANALYSIS_REQUEST_ID_KEY = "aiAnalysisRequestId"; + @Autowired TmTelephoneCorpusService tmTelephoneCorpusService; @@ -112,7 +115,7 @@ public class CorpusPortraitServiceImpl implements CorpusPortraitService { return; } // 遍历 segments - StringBuffer chatList = new StringBuffer(); + StringBuilder chatList = new StringBuilder(); segments.stream() .map(segment -> (JSONObject) segment) .forEach(segment -> { @@ -142,7 +145,7 @@ public class CorpusPortraitServiceImpl implements CorpusPortraitService { inputMap.put("chat", chatList); inputMap.put("recordId", aicorpusTelephone.getSourceId()); inputMap.put("communicateDate", formattedDateStartTime); - inputMap.put("brand",getBrand()); + inputMap.put(BRAND_KEY,getBrand()); inputMap.put("brandSeries",getSeriesByBrandId()); inputMap.put("customerFlowId", aicorpusTelephone.getSourceId()); @@ -157,15 +160,15 @@ public class CorpusPortraitServiceImpl implements CorpusPortraitService { // 获取配置 JSONObject execDifyFlow = diFyService.executeDifyFlow(diFyImageReq, BusinessTypeEnum.CORPUS_PORTRAIT_DCC.getCode(), JSONObject.toJSONString(corpusReportDTO), aicorpusTelephone.getAiAnalysisRequestId()); log.info("runDify execDifyFlow {}", execDifyFlow); - String aiAnalysisRequestId = execDifyFlow.getString("aiAnalysisRequestId"); + String aiAnalysisRequestId = null; if (null != execDifyFlow && execDifyFlow.get("status").equals("succeeded")) { + aiAnalysisRequestId = execDifyFlow.getString(AI_ANALYSIS_REQUEST_ID_KEY); JSONObject text = execDifyFlow.getJSONObject("outputs"); -// huaWeiService.sendEvent(setCloudEvents(aiAnalysisRequestId, text.toJSONString(), "DCC"), ltoChannelId); // 发送MQ log.info("send mq ,DCC语料,画像场景 {}", text); tmTelephoneCorpusService.sendMq( BusinessTypeEnum.CORPUS_PORTRAIT_DCC.getCode(), text.toJSONString()); - aiAnalysisRequestLogsService.saveOrUpdateAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder().aiAnalysisRequestId(execDifyFlow.getString("aiAnalysisRequestId")).businessResponse(text.toJSONString()).build()); + aiAnalysisRequestLogsService.saveOrUpdateAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder().aiAnalysisRequestId(execDifyFlow.getString(AI_ANALYSIS_REQUEST_ID_KEY)).businessResponse(text.toJSONString()).build()); } try { @@ -222,7 +225,7 @@ public class CorpusPortraitServiceImpl implements CorpusPortraitService { List maskingRuleItems = dataMaskingRuleService.getDataMaskingRuleListByApplicationChannel(BusinessTypeEnum.CORPUS_PORTRAIT_QIWEI.getCode()); RunMaskingRuleInput runMaskingRuleInput = new RunMaskingRuleInput(); runMaskingRuleInput.setDataMaskingRules(maskingRuleItems); - StringBuffer chatList = new StringBuffer(); + StringBuilder chatList = new StringBuilder(); AtomicInteger externalcontactCount = new AtomicInteger(); contetnList.forEach(contentItem -> { String title = ""; @@ -249,7 +252,7 @@ public class CorpusPortraitServiceImpl implements CorpusPortraitService { inputMap.put("unionId", unionId); inputMap.put("consultantId", userId); inputMap.put("communicateDate", DateUtil.format(maxMsgTimeItem.getMsgTime(), DatePattern.NORM_DATETIME_PATTERN)); - inputMap.put("brand",getBrand()); + inputMap.put(BRAND_KEY,getBrand()); inputMap.put("brandSeries",getSeriesByBrandId()); diFyImageReq.setInputs(inputMap); @@ -260,15 +263,14 @@ public class CorpusPortraitServiceImpl implements CorpusPortraitService { // 获取配置 JSONObject execDifyFlow = diFyService.executeDifyFlow(diFyImageReq, BusinessTypeEnum.CORPUS_PORTRAIT_QIWEI.getCode(), JSONObject.toJSONString(corpusReportDTO), null); log.info("runDify execDifyFlow 企微语料,画像场景 Dify的返回 : {}", execDifyFlow); - String aiAnalysisRequestId = execDifyFlow.getString("aiAnalysisRequestId"); if (null != execDifyFlow && execDifyFlow.get("status").equals("succeeded")) { + String aiAnalysisRequestId = execDifyFlow.getString(AI_ANALYSIS_REQUEST_ID_KEY); 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( CategoryEnum.ENTERPRISE_WECHAT_PORTRAIT.getCode(), text.toJSONString()); - aiAnalysisRequestLogsService.saveOrUpdateAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder().aiAnalysisRequestId(execDifyFlow.getString("aiAnalysisRequestId")).businessResponse(text.toJSONString()).build()); + aiAnalysisRequestLogsService.saveOrUpdateAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder().aiAnalysisRequestId(execDifyFlow.getString(AI_ANALYSIS_REQUEST_ID_KEY)).businessResponse(text.toJSONString()).build()); } } @@ -300,7 +302,7 @@ public class CorpusPortraitServiceImpl implements CorpusPortraitService { String carModel = tmTelephoneCorpusService.getCarModelList(); inputMap.put("chat", corpusChat); inputMap.put("customerFlowId", item.getCustomerFlowId()); - inputMap.put("brand",getBrand()); + inputMap.put(BRAND_KEY,getBrand()); inputMap.put("brandSeries",getSeriesByBrandId()); diFyImageReq.setInputs(inputMap); @@ -310,15 +312,14 @@ public class CorpusPortraitServiceImpl implements CorpusPortraitService { // 获取配置 JSONObject execDifyFlow = diFyService.executeDifyFlow(diFyImageReq, BusinessTypeEnum.CORPUS_PORTRAIT_NAMEPLATE.getCode(), JSONObject.toJSONString(corpusReportDTO),null); log.info("runDify execDifyFlow {}", execDifyFlow); - String aiAnalysisRequestId = execDifyFlow.getString("aiAnalysisRequestId"); if (null != execDifyFlow && execDifyFlow.get("status").equals("succeeded")) { + String aiAnalysisRequestId = execDifyFlow.getString(AI_ANALYSIS_REQUEST_ID_KEY); JSONObject text = execDifyFlow.getJSONObject("outputs"); -// huaWeiService.sendEvent(setCloudEvents(aiAnalysisRequestId, text.toJSONString(),"NAMEPLATE"),ltoChannelId); log.info("send mq ,铭牌语料,画像场景 {}", text); tmTelephoneCorpusService.sendMq( BusinessTypeEnum.CORPUS_PORTRAIT_NAMEPLATE.getCode(), text.toJSONString()); - aiAnalysisRequestLogsService.saveOrUpdateAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder().aiAnalysisRequestId(execDifyFlow.getString("aiAnalysisRequestId")).businessResponse(text.toJSONString()).build()); + aiAnalysisRequestLogsService.saveOrUpdateAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder().aiAnalysisRequestId(execDifyFlow.getString(AI_ANALYSIS_REQUEST_ID_KEY)).businessResponse(text.toJSONString()).build()); } } catch (Exception e) {