From ee9fadd622519e336ed09adee474d3758179bd5d Mon Sep 17 00:00:00 2001 From: zren25 Date: Thu, 12 Jun 2025 18:10:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=BB=E5=83=8F=E5=A2=9E=E5=8A=A0=E8=A1=A5?= =?UTF-8?q?=E5=81=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/analytic/center/job/CorpusFailJob.java | 71 +++++++++++++++++++ .../analytic/center/job/QiWeiCorpusJob.java | 18 ++++- .../center/service/CorpusPortraitService.java | 2 + .../impl/TmNameplateCorpusServiceImpl.java | 5 ++ 4 files changed, 94 insertions(+), 2 deletions(-) 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 979e305..93ec693 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 @@ -3,6 +3,7 @@ package com.volvo.ai.analytic.center.job; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.huaweicloud.sdk.eg.v1.model.CloudEvents; import com.volvo.ai.analytic.center.dto.PageDto; import com.volvo.ai.analytic.center.dto.corpus.AicorpusTelephoneDTO; import com.volvo.ai.analytic.center.dto.corpus.CorpusReportDTO; @@ -72,6 +73,16 @@ public class CorpusFailJob { @Autowired private TmNameplateCorpusService tmNameplateCorpusService; + @Autowired + private CorpusPortraitService corpusPortraitService; + + @Resource + HuaWeiEGService huaWeiService; + @Value("${huawei.cloud.EG.channel.ltoChannelId}") + private String ltoChannelId; + + @Value("${huawei.cloud.EG.channel.ltoSourceId}") + private String sourceId; /** * 企微语料处理 @@ -247,4 +258,64 @@ public class CorpusFailJob { } } } + + + + /** + * 画像error补偿 + */ + @XxlJob("corpusPortraitFailTask") + public void corpusPortraitFailTask() { + + log.info(" corpusPortraitFailTask画像解析失败重试处理"); + Integer total = aiAnalysisErrorsService.queryCountAnalysisErrorList(Arrays.asList(BusinessTypeEnum.CORPUS_PORTRAIT_DCC.getCode(),BusinessTypeEnum.CORPUS_PORTRAIT_QIWEI.getCode(),BusinessTypeEnum.CORPUS_PORTRAIT_QIWEI.getCode())); + log.info("corpusPortraitFailTask画像语料解析失败重试处理数据量:{}", total); + int totalPages = PageDto.getTotalPages(total, pageSize); + log.info("corpusFailTask 语料解析失败重试处理数据量:{},总页数:{}", total, totalPages); + for (int i = 1; i <= totalPages; i++) { + int offset = (i - 1) * pageSize; + + List aiAnalysisErrorsListlist = aiAnalysisErrorsService.queryAnalysisErrorList(Arrays.asList(BusinessTypeEnum.CORPUS_PORTRAIT_DCC.getCode(),BusinessTypeEnum.CORPUS_PORTRAIT_QIWEI.getCode(),BusinessTypeEnum.CORPUS_PORTRAIT_QIWEI.getCode()),offset, pageSize); + if(CollectionUtils.isNotEmpty(aiAnalysisErrorsListlist)) { + log.info("corpusFailTask语料解析失败重试处理 size:{}", aiAnalysisErrorsListlist.size()); + List requestIdList = aiAnalysisErrorsListlist.stream() + .map(AiAnalysisErrors::getAiAnalysisRequestId) + .collect(Collectors.toList()); + + List aiAnalysisRequestLogsList = aiAnalysisRequestLogsMapper.queryByAiAnalysisRequestIds(requestIdList); + + Map requestLogsMap = aiAnalysisRequestLogsList.stream() + .collect(Collectors.toMap( AiAnalysisRequestLogs::getAiAnalysisRequestId,logs -> logs )); + aiAnalysisErrorsListlist.forEach(aiAnalysisErrors -> { + + AiAnalysisRequestLogs oldAiAnalysisRequestLogs = requestLogsMap.get(aiAnalysisErrors.getAiAnalysisRequestId()); + + if (null != oldAiAnalysisRequestLogs && StringUtils.isBlank(oldAiAnalysisRequestLogs.getBusinessResponse())) { + DiFyReq diFyReq = JSONObject.parseObject(oldAiAnalysisRequestLogs.getDifyRequest(), DiFyReq.class); + CorpusReportDTO corpusReportDTO = JSONObject.parseObject(oldAiAnalysisRequestLogs.getBusinessRequest(), CorpusReportDTO.class); + + JSONObject execDifyFlow = diFyService.executeDifyFlow(diFyReq); + log.info(" corpusFailTask runDify execDifyFlow {}", execDifyFlow); + if (null != execDifyFlow && execDifyFlow.get("status").equals("succeeded")) { + JSONObject text = execDifyFlow.getJSONObject("outputs"); + // 发送MQ + log.info("sendEvent mq {}", text); + huaWeiService.sendEvent(corpusPortraitService.setCloudEvents(oldAiAnalysisRequestLogs.getAiAnalysisRequestId(), text.toJSONString(), oldAiAnalysisRequestLogs.getAiAnalysisRequestType().substring(oldAiAnalysisRequestLogs.getAiAnalysisRequestType().lastIndexOf("_")+1)), ltoChannelId); + + // 保存报告 + oldAiAnalysisRequestLogs.setBusinessResponse( text.toJSONString()); + + oldAiAnalysisRequestLogs.setDifyResponse(JSON.toJSONString(execDifyFlow)); + updateDiFyRequest(oldAiAnalysisRequestLogs, oldAiAnalysisRequestLogs.getAiAnalysisRequestId()); + aiAnalysisErrors.setAiAnalysisErrorHandlingStatus("1"); + } + aiAnalysisErrors.setRetryCount(aiAnalysisErrors.getRetryCount() + 1); + updateAiAnalysisErrors(aiAnalysisErrors, oldAiAnalysisRequestLogs.getAiAnalysisRequestId()); + } + + }); + } + } + } + } 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 2c69f69..be2a613 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 @@ -2,6 +2,7 @@ package com.volvo.ai.analytic.center.job; import com.volvo.ai.analytic.center.dto.corpus.AicorpusTelephoneDTO; import com.volvo.ai.analytic.center.mapper.TmTelephoneCorpusMapper; +import com.volvo.ai.analytic.center.service.CorpusPortraitService; import com.volvo.ai.analytic.center.service.TmOdsVdqwMessagearchivingService; import com.volvo.ai.analytic.center.service.TmTelephoneCorpusService; import com.volvo.common.core.util.ResultMsg; @@ -10,6 +11,7 @@ import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -33,6 +35,13 @@ public class QiWeiCorpusJob { @Autowired private TmTelephoneCorpusMapper tmTelephoneCorpusMapper; + @Autowired + private CorpusPortraitService corpusPortraitService; + + @Value("${huawei.cloud.EG.channel.ltoChannelId}") + private String ltoChannelId; + + /** * 企微语料处理 */ @@ -68,9 +77,14 @@ public class QiWeiCorpusJob { param = paramJson; } // 执行业务逻辑 - XxlJobHelper.log("任务参数: {}", param); + XxlJobHelper.log("dccCorpusFailRetry任务参数: {}", param); List corpusDtoList = tmTelephoneCorpusMapper.queryTelephoneCorpusBySourceIds( Arrays.asList(param.split(","))); - corpusDtoList.stream().forEach(item-> tmTelephoneCorpusService.runTelephoneCorpusDify(item)); + corpusDtoList.stream().forEach(item-> + { + tmTelephoneCorpusService.runTelephoneCorpusDify(item); + corpusPortraitService.portraitDcc(item); + } + ); } catch (Exception e) { log.error("processMessageByTask 定时任务补偿处理消息异常",e.getMessage()); throw new RuntimeException(e); diff --git a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/CorpusPortraitService.java b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/CorpusPortraitService.java index e714276..32eb427 100644 --- a/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/CorpusPortraitService.java +++ b/ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/CorpusPortraitService.java @@ -2,6 +2,7 @@ package com.volvo.ai.analytic.center.service; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; +import com.huaweicloud.sdk.eg.v1.model.CloudEvents; import com.volvo.ai.analytic.center.dto.corpus.AicorpusTelephoneDTO; import com.volvo.ai.analytic.center.dto.corpus.OdsVdqwMessageOTD; import com.volvo.ai.analytic.center.entity.TmNameplateCorpus; @@ -22,5 +23,6 @@ public interface CorpusPortraitService { void portraitNameplate(TmNameplateCorpus item); + CloudEvents setCloudEvents(String aiAnalysisRequestId, String text, String eventType); } \ No newline at end of file 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 901cd05..365bc35 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 @@ -80,6 +80,9 @@ public class TmNameplateCorpusServiceImpl extends ServiceImpl { try { processItem(tmNameplateCorpus); + // 增加 画像手动补偿 + corpusPortraitService.portraitNameplate(tmNameplateCorpus); } catch (Exception e) { log.error("重跑铭牌语料失败: customerFlowId={}, AcceptUserId={}, 异常: {}", tmNameplateCorpus.getCustomerFlowId(), e.getMessage(), e);