diff --git a/ai-analytic-center-api/src/main/java/com/volvo/ai/analytic/center/enums/CategoryEnum.java b/ai-analytic-center-api/src/main/java/com/volvo/ai/analytic/center/enums/CategoryEnum.java index d584474..d8a1767 100644 --- a/ai-analytic-center-api/src/main/java/com/volvo/ai/analytic/center/enums/CategoryEnum.java +++ b/ai-analytic-center-api/src/main/java/com/volvo/ai/analytic/center/enums/CategoryEnum.java @@ -6,6 +6,8 @@ public enum CategoryEnum { PHONE_VOICE("phone_voice", "语音电话"), PORTRAIT_ALLIN("portrait_allin", "语音电话,用户画像"), NAMEPLATE_VOICE("nameplate_voice", "铭牌"), + NAMEPLATE_VOICE_PORTRAIT("nameplate_voice_portrait", "铭牌客户画像"), + OTHER("未知", "未知记录"), ; private String code; diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/job/AiAnalysisDifyJob.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/job/AiAnalysisDifyJob.java index dad7e3e..040dbe6 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/job/AiAnalysisDifyJob.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/job/AiAnalysisDifyJob.java @@ -56,7 +56,7 @@ public class AiAnalysisDifyJob { aiAnalysisRequestLogsList.stream().forEach(aiAnalysisRequestLogs -> { JSONObject jsonResult = diFyFeign.queryWorkFlowById("Bearer "+aiAnalysisRequestLogs.getDifyAgentKey(),aiAnalysisRequestLogs.getWorkflowRunId()); String outputs = jsonResult.getString("outputs"); - aiAnalysisRequestLogsService.saveAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder() + aiAnalysisRequestLogsService.saveOrUpdateAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder() .aiAnalysisRequestId(aiAnalysisRequestLogs.getAiAnalysisRequestId()) .difyResponse(outputs) .build()); diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/job/CorpusFailJob.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/job/CorpusFailJob.java index 638f9f0..eab2952 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/job/CorpusFailJob.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/job/CorpusFailJob.java @@ -139,7 +139,7 @@ public class CorpusFailJob { List nameplateCorpusList = tmNameplateCorpusService.queryTelephoneCorpusByCustomerFlowId( Arrays.asList(corpusReportDTO.getCustomerFlowId())); if(CollectionUtils.isNotEmpty(nameplateCorpusList)) { TmNameplateCorpus nameplateCorpus = nameplateCorpusList.get(0); - tmNameplateCorpusService.sendNameplateLto(execDifyFlow,oldAiAnalysisRequestLogs.getAiAnalysisRequestId(), nameplateCorpus); + tmNameplateCorpusService.sendNameplateLto(execDifyFlow,oldAiAnalysisRequestLogs.getAiAnalysisRequestId(), nameplateCorpus, BusinessTypeEnum.SMART_ASSISTANT_NAMEPLATE.getCode()); } }else { List dccDtoList = tmTelephoneCorpusMapper.queryTelephoneCorpusBySourceIds( Arrays.asList(corpusReportDTO.getRecordId())); @@ -300,7 +300,7 @@ public class CorpusFailJob { aiAnalysisErrors1.setAiAnalysisRequestId(aiAnalysisRequestId); aiAnalysisErrors1.setAiAnalysisErrorHandlingStatus("1"); aiAnalysisErrorsService.updateAiAnalysisErrors(aiAnalysisErrors1); - aiAnalysisRequestLogsService.saveAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder() + aiAnalysisRequestLogsService.saveOrUpdateAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder() .aiAnalysisRequestId(data.getString("aiAnalysisRequestId")) .businessResponse(message) .difyResponse(data.toJSONString()) diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/mq/AnalysisDifyCallbackMqConsumer.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/mq/AnalysisDifyCallbackMqConsumer.java index 5f7ab81..9d108ef 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/mq/AnalysisDifyCallbackMqConsumer.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/mq/AnalysisDifyCallbackMqConsumer.java @@ -2,18 +2,15 @@ package com.volvo.ai.analytic.center.mq; import com.alibaba.fastjson.JSONObject; -import com.fasterxml.jackson.databind.ObjectMapper; import com.volvo.ai.analytic.center.dto.resp.AnalysisDifyResultDTO; import com.volvo.ai.analytic.center.dto.resp.AnalysisResp; import com.volvo.ai.analytic.center.entity.AiAnalysisRequestLogs; import com.volvo.ai.analytic.center.service.AiAnalysisRequestLogsService; -import com.volvo.ai.analytic.center.service.DiFyService; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -72,7 +69,7 @@ public class AnalysisDifyCallbackMqConsumer implements RocketMQListener { AicorpusTelephoneDTO aicorpusTelephone = objectMapper.readValue(message, AicorpusTelephoneDTO.class); //DCC场景 if(Objects.equals(aicorpusTelephone.getCategoryCode(), Constant.CHANNEL_DCC)){ - //TODO 这里需要确认客户画像下这个字段值是什么? + //TODO 这里需要确认客户画像下这个字段值是什么? 已经确认了,和总结需求的dcc场景是一致的 , 所以不需要修改。。 + //总结和客户画像都是这一个:Constant.CHANNEL_DCC JSONObject jsonObject = JSONObject.parseObject( aicorpusTelephone.getDisplay()); log.info(" message: " + JSON.toJSONString(aicorpusTelephone)); tmTelephoneCorpusService.runTelephoneCorpusDify(aicorpusTelephone); diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/AiAnalysisRequestLogsService.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/AiAnalysisRequestLogsService.java index 348739c..3360ed7 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/AiAnalysisRequestLogsService.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/AiAnalysisRequestLogsService.java @@ -5,7 +5,7 @@ import com.volvo.ai.analytic.center.entity.AiAnalysisRequestLogs; public interface AiAnalysisRequestLogsService extends IService { - boolean saveAiAnalysisRequestLogs(AiAnalysisRequestLogs aiAnalysisRequestLogs); + boolean saveOrUpdateAiAnalysisRequestLogs(AiAnalysisRequestLogs aiAnalysisRequestLogs); AiAnalysisRequestLogs queryByAiAnalysisRequestId(String aiAnalysisRequestId); AiAnalysisRequestLogs queryAiAnalysisRequestLogsByBusinessReponse(String sourceId); } diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/TmNameplateCorpusService.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/TmNameplateCorpusService.java index 2bd98cb..513aa32 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/TmNameplateCorpusService.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/TmNameplateCorpusService.java @@ -17,7 +17,7 @@ public interface TmNameplateCorpusService extends IService { void processItem(TmNameplateCorpus item); - void sendNameplateLto(JSONObject execDifyFlow,String aiAnalysisRequestId, TmNameplateCorpus tmNameplateCorpus); + void sendNameplateLto(JSONObject execDifyFlow,String aiAnalysisRequestId, TmNameplateCorpus tmNameplateCorpus,String businessType); ResultMsg updateNameplate(String message); diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/AiAnalysisDifyServiceImpl.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/AiAnalysisDifyServiceImpl.java index b9e01d0..3c90db9 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/AiAnalysisDifyServiceImpl.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/AiAnalysisDifyServiceImpl.java @@ -86,7 +86,7 @@ public class AiAnalysisDifyServiceImpl implements AiAnalysisDifyService { JSONObject difyJson = JSONObject.parseObject(analysisResp.getDifyResponse()); aiAnalysisRequestLogs.setBusinessResponse(difyJson.getString("outputs")); - aiAnalysisRequestLogsService.saveAiAnalysisRequestLogs(aiAnalysisRequestLogs); + aiAnalysisRequestLogsService.saveOrUpdateAiAnalysisRequestLogs(aiAnalysisRequestLogs); if(StringUtils.isNotEmpty(oldAiAnalysisRequestLogs.getCallbackUrl())){ // 发送 mq @@ -134,7 +134,7 @@ public class AiAnalysisDifyServiceImpl implements AiAnalysisDifyService { } private void saveAiAnalysisRequestLogs(AnalysisReq analysisReq, DiFyReq diFyReq, String aiAnalysisRequestId) { - aiAnalysisRequestLogsService.saveAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder() + aiAnalysisRequestLogsService.saveOrUpdateAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder() .aiAnalysisRequestId(aiAnalysisRequestId) .businessRequest(JSONObject.toJSONString(analysisReq.getData())) .difyAgentKey(diFyReq.getFlowId()) diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/AiAnalysisRequestLogsServiceImpl.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/AiAnalysisRequestLogsServiceImpl.java index 9fae0d3..d5f35a9 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/AiAnalysisRequestLogsServiceImpl.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/AiAnalysisRequestLogsServiceImpl.java @@ -18,7 +18,7 @@ public class AiAnalysisRequestLogsServiceImpl extends ServiceImpl summaryFuture = CompletableFuture.runAsync(() -> { + //第一个业务场景 开始: 总结和分类业务场景 + JSONObject execDifyFlow = diFyService.executeDifyFlow(diFyImageReq, BusinessTypeEnum.SMART_ASSISTANT_NAMEPLATE.getCode(), + JSONObject.toJSONString(corpusReportDTO),null); + log.info("runDify execDifyFlow ,铭牌语料 ,总结和分类业务,返回: {}", execDifyFlow); + }, executorService); + long endTime = System.currentTimeMillis(); + log.info("第一个业务场景(总结和分类)执行时间: {} ms", (endTime - startTime)); + //第一个业务场景, 结束 + + long startTime2 = System.currentTimeMillis(); + CompletableFuture portraitFuture = CompletableFuture.runAsync(() -> { + + // 创建新的DiFyReq对象以避免线程安全问题 + diFyImageReq.setFlowId(oneTokenPortrait); + JSONObject execDifyFlowForPortrait = diFyService.executeDifyFlow(diFyImageReq, BusinessTypeEnum.CORPUS_PORTRAIT_NAMEPLATE.getCode(), + JSONObject.toJSONString(corpusReportDTO), null); + + log.info("runDify execDifyFlow ,铭牌语料 ,客户画像场景,返回: {}", execDifyFlowForPortrait); + + }, executorService); + long endTime2 = System.currentTimeMillis(); + log.info("第二个业务场景(用户画像)执行时间: {} ms", (endTime2 - startTime2)); + } catch (Exception e) { log.error("nameplate processItem error {}", e.getMessage()); } @@ -168,17 +196,22 @@ public class TmNameplateCorpusServiceImpl extends ServiceImpl new IllegalArgumentException("AiAnalysisRequestId查询对象为空!")); @@ -201,12 +235,15 @@ public class TmNameplateCorpusServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(TmNameplateCorpus::getCustomerFlowId, customerFlowId); List tmNameplateCorpusList = tmNameplateCorpusMapper.selectList(queryWrapper); - if (CollectionUtils.isNotEmpty(tmNameplateCorpusList)){ - sendNameplateLto(difyJson,aiAnalysisRequestId, tmNameplateCorpusList.get(0)); + if (CollectionUtils.isNotEmpty(tmNameplateCorpusList)){ //这是补偿机制 + sendNameplateLto(difyJson,aiAnalysisRequestId, tmNameplateCorpusList.get(0),businessType); LambdaQueryWrapper errorQueryWrapper = new LambdaQueryWrapper<>(); errorQueryWrapper.eq(AiAnalysisErrors::getAiAnalysisRequestId, aiAnalysisRequestId); errorQueryWrapper.eq(AiAnalysisErrors::getAiAnalysisErrorHandlingStatus, "0"); @@ -215,6 +252,10 @@ public class TmNameplateCorpusServiceImpl extends ServiceImpl