From e9f495bdf244d8a941337c0aee5db77908f8d481 Mon Sep 17 00:00:00 2001 From: zren25 Date: Tue, 10 Jun 2025 17:01:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/CorpusPortraitServiceImpl.java | 143 +++++++++--------- 1 file changed, 74 insertions(+), 69 deletions(-) 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 7b92714..9839dfd 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 @@ -125,6 +125,7 @@ public class CorpusPortraitServiceImpl implements CorpusPortraitService { JSONObject text = execDifyFlow.getJSONObject("outputs"); huaWeiService.sendEvent(setCloudEvents(aiAnalysisRequestId, text.toJSONString(), "DCC"), ltoChannelId); + aiAnalysisRequestLogsService.saveAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder().aiAnalysisRequestId(execDifyFlow.getString("aiAnalysisRequestId")).businessResponse(text.toJSONString()).build()); } try { @@ -134,10 +135,8 @@ public class CorpusPortraitServiceImpl implements CorpusPortraitService { aiAnalysisErrors.setAiAnalysisErrorHandlingStatus("1"); aiAnalysisErrorsService.updateAiAnalysisErrors(aiAnalysisErrors); } - aiAnalysisRequestLogsService.saveAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder().aiAnalysisRequestId(execDifyFlow.getString("aiAnalysisRequestId")).businessResponse("").build()); - } catch (Exception e) { - log.info(" 电话语料处理保存报告异常processItem:{} ", e); + log.info(" 画像电话语料处理保存报告异常processItem:{} ", e); } } @@ -161,78 +160,78 @@ public class CorpusPortraitServiceImpl implements CorpusPortraitService { log.info("画像-企微语料内容:FromUserId:{}, AcceptUserId:{}", item.getFromUserId(), item.getAcceptUserId()); // 1,vdqw_workuserinfo 这个表对应是 B端认证中心userId // 2,vdqw_externalcontact 这个表对应是 企微客户unionId - TmOdsVdqwExternalcontact tmOdsVdqwExternalcontact = tmOdsVdqwMessagearchivingService.getUnionId(Arrays.asList(item.getFromUserId(), item.getAcceptUserId())); - TmOdsVdqwWorkuserinfo tmOdsVdqwWorkuserinfo = tmOdsVdqwMessagearchivingService.getUserId(Arrays.asList(item.getFromUserId(), item.getAcceptUserId())); - if (null == tmOdsVdqwExternalcontact || null == tmOdsVdqwWorkuserinfo) { - log.info("企微查询信息为空 "); - return; - } - String unionId = tmOdsVdqwExternalcontact.getUnionId(); - String userId = tmOdsVdqwWorkuserinfo.getMiddleUserId().toString(); - log.info("企微查询信息:unionId:{}, userId:{}", unionId, userId); - if (StringUtils.isNotBlank(item.getFromUserId()) && StringUtils.isNotBlank(item.getAcceptUserId())) { - List contetnList = tmOdsVdqwMessagearchivingMapper.queryOdsVdqwMessageByFromUserIdAndAcceptUserId(statTime, endTime, Arrays.asList(item.getFromUserId(), item.getAcceptUserId())); - OdsVdqwMessageOTD maxMsgTimeItem = contetnList.stream() - .max((o1, o2) -> o1.getMsgTime().compareTo(o2.getMsgTime())) - .orElse(null); - Map inputMap = new HashMap<>(); - DiFyReq diFyImageReq = new DiFyReq(); - diFyImageReq.setUser(ConstantStr.corpus_user); - diFyImageReq.setFlowId(qiweiToken); - List maskingRuleItems = dataMaskingRuleService.getDataMaskingRuleListByApplicationChannel(BusinessTypeEnum.CORPUS_PORTRAIT_QIWEI.getCode()); - RunMaskingRuleInput runMaskingRuleInput = new RunMaskingRuleInput(); - runMaskingRuleInput.setDataMaskingRules(maskingRuleItems); - StringBuffer chatList = new StringBuffer(); - AtomicInteger externalcontactCount = new AtomicInteger(); - contetnList.forEach(contentItem -> { - String title = ""; - if (tmOdsVdqwExternalcontact.getExternalUserId().equals(contentItem.getFromUserId())) { - title = "客户:"; - externalcontactCount.addAndGet(1); - } else { - title = "顾问:"; - } - JSONObject contentJson = JSONObject.parseObject(contentItem.getContent()); - String content = contentJson.getString("content"); - // 拼接 role 和 text - String chat = title.concat(content); - runMaskingRuleInput.setOldStr(chat); - String corpusChat = dataMaskingRuleService.runMaskingRule(runMaskingRuleInput); - chatList.append(corpusChat).append("\n"); - }); - if (externalcontactCount.get() < 1) { - log.info("没有客户回复的语料,无需解析"); + try { + TmOdsVdqwExternalcontact tmOdsVdqwExternalcontact = tmOdsVdqwMessagearchivingService.getUnionId(Arrays.asList(item.getFromUserId(), item.getAcceptUserId())); + TmOdsVdqwWorkuserinfo tmOdsVdqwWorkuserinfo = tmOdsVdqwMessagearchivingService.getUserId(Arrays.asList(item.getFromUserId(), item.getAcceptUserId())); + if (null == tmOdsVdqwExternalcontact || null == tmOdsVdqwWorkuserinfo) { + log.info("企微查询信息为空 "); return; } + String unionId = tmOdsVdqwExternalcontact.getUnionId(); + String userId = tmOdsVdqwWorkuserinfo.getMiddleUserId().toString(); + log.info("企微查询信息:unionId:{}, userId:{}", unionId, userId); + if (StringUtils.isNotBlank(item.getFromUserId()) && StringUtils.isNotBlank(item.getAcceptUserId())) { + List contetnList = tmOdsVdqwMessagearchivingMapper.queryOdsVdqwMessageByFromUserIdAndAcceptUserId(statTime, endTime, Arrays.asList(item.getFromUserId(), item.getAcceptUserId())); + OdsVdqwMessageOTD maxMsgTimeItem = contetnList.stream() + .max((o1, o2) -> o1.getMsgTime().compareTo(o2.getMsgTime())) + .orElse(null); + Map inputMap = new HashMap<>(); + DiFyReq diFyImageReq = new DiFyReq(); + diFyImageReq.setUser(ConstantStr.corpus_user); + diFyImageReq.setFlowId(qiweiToken); + List maskingRuleItems = dataMaskingRuleService.getDataMaskingRuleListByApplicationChannel(BusinessTypeEnum.CORPUS_PORTRAIT_QIWEI.getCode()); + RunMaskingRuleInput runMaskingRuleInput = new RunMaskingRuleInput(); + runMaskingRuleInput.setDataMaskingRules(maskingRuleItems); + StringBuffer chatList = new StringBuffer(); + AtomicInteger externalcontactCount = new AtomicInteger(); + contetnList.forEach(contentItem -> { + String title = ""; + if (tmOdsVdqwExternalcontact.getExternalUserId().equals(contentItem.getFromUserId())) { + title = "客户:"; + externalcontactCount.addAndGet(1); + } else { + title = "顾问:"; + } + JSONObject contentJson = JSONObject.parseObject(contentItem.getContent()); + String content = contentJson.getString("content"); + // 拼接 role 和 text + String chat = title.concat(content); + runMaskingRuleInput.setOldStr(chat); + String corpusChat = dataMaskingRuleService.runMaskingRule(runMaskingRuleInput); + chatList.append(corpusChat).append("\n"); + }); + if (externalcontactCount.get() < 1) { + log.info("没有客户回复的语料,无需解析"); + return; + } - inputMap.put("chat", chatList.toString()); - 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("brandSeries",getSeriesByBrandId()); - diFyImageReq.setInputs(inputMap); + inputMap.put("chat", chatList.toString()); + 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("brandSeries",getSeriesByBrandId()); + diFyImageReq.setInputs(inputMap); - CorpusReportDTO corpusReportDTO = new CorpusReportDTO(); - corpusReportDTO.setCorpusTime(DateUtil.format(maxMsgTimeItem.getMsgTime(), DatePattern.NORM_DATETIME_PATTERN)); - corpusReportDTO.setUnionId(unionId); - corpusReportDTO.setUserId(userId); - corpusReportDTO.setAnalysisScene(1l); - // 获取配置 - JSONObject execDifyFlow = diFyService.executeDifyFlow(diFyImageReq, BusinessTypeEnum.CORPUS_PORTRAIT_QIWEI.getCode(), JSONObject.toJSONString(corpusReportDTO), null); - log.info("runDify execDifyFlow {}", execDifyFlow); - String aiAnalysisRequestId = execDifyFlow.getString("aiAnalysisRequestId"); - if (null != execDifyFlow && execDifyFlow.get("status").equals("succeeded")) { - JSONObject text = execDifyFlow.getJSONObject("outputs"); + CorpusReportDTO corpusReportDTO = new CorpusReportDTO(); + corpusReportDTO.setCorpusTime(DateUtil.format(maxMsgTimeItem.getMsgTime(), DatePattern.NORM_DATETIME_PATTERN)); + corpusReportDTO.setUnionId(unionId); + corpusReportDTO.setUserId(userId); + corpusReportDTO.setAnalysisScene(1l); + // 获取配置 + JSONObject execDifyFlow = diFyService.executeDifyFlow(diFyImageReq, BusinessTypeEnum.CORPUS_PORTRAIT_QIWEI.getCode(), JSONObject.toJSONString(corpusReportDTO), null); + log.info("runDify execDifyFlow {}", execDifyFlow); + String aiAnalysisRequestId = execDifyFlow.getString("aiAnalysisRequestId"); + if (null != execDifyFlow && execDifyFlow.get("status").equals("succeeded")) { + JSONObject text = execDifyFlow.getJSONObject("outputs"); + + huaWeiService.sendEvent(setCloudEvents(aiAnalysisRequestId, text.toJSONString(),"QIWEI"),ltoChannelId); + aiAnalysisRequestLogsService.saveAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder().aiAnalysisRequestId(execDifyFlow.getString("aiAnalysisRequestId")).businessResponse(text.toJSONString()).build()); + } - huaWeiService.sendEvent(setCloudEvents(aiAnalysisRequestId, text.toJSONString(),"QIWEI"),ltoChannelId); - } - - try { - aiAnalysisRequestLogsService.saveAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder().aiAnalysisRequestId(execDifyFlow.getString("aiAnalysisRequestId")).businessResponse("").build()); - } catch (Exception e) { - log.info(" 企业语料处理保存报告异常processItem:{} ", e); } + } catch (Exception e) { + log.info(" 画像企业语料处理保存报告异常:{} ", e); } } @@ -275,6 +274,12 @@ public class CorpusPortraitServiceImpl implements CorpusPortraitService { JSONObject text = execDifyFlow.getJSONObject("outputs"); huaWeiService.sendEvent(setCloudEvents(aiAnalysisRequestId, text.toJSONString(),"NAMEPLATE"),ltoChannelId); + + try { + aiAnalysisRequestLogsService.saveAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder().aiAnalysisRequestId(execDifyFlow.getString("aiAnalysisRequestId")).businessResponse(text.toJSONString()).build()); + } catch (Exception e) { + log.info(" 画像铭牌保存报告异常processItem:{} ", e); + } } } catch (Exception e) { log.error("nameplate processItem error {}", e.getMessage());