铭牌失败补偿

This commit is contained in:
zren25
2025-04-25 15:57:10 +08:00
parent f22a9c2104
commit 1e3aa4b76c
6 changed files with 43 additions and 14 deletions

View File

@@ -30,7 +30,7 @@ public class NameplateCorpusController {
@PostMapping("/updateNameplate") @PostMapping("/updateNameplate")
@ApiOperation(value = "更新dify结果") @ApiOperation(value = "更新dify结果")
public ResultMsg<Object> updateNameplate(@RequestBody String message) { public ResultMsg<Object> updateNameplate(@RequestBody String message) {
log.info("updateByAiId message: {}", message); log.info("updateNameplate message: {}", message);
return tmNameplateCorpusService.updateNameplate(message); return tmNameplateCorpusService.updateNameplate(message);
} }
} }

View File

@@ -9,14 +9,12 @@ import com.volvo.ai.analytic.center.dto.corpus.CorpusReportDTO;
import com.volvo.ai.analytic.center.dto.req.DiFyReq; import com.volvo.ai.analytic.center.dto.req.DiFyReq;
import com.volvo.ai.analytic.center.entity.AiAnalysisErrors; import com.volvo.ai.analytic.center.entity.AiAnalysisErrors;
import com.volvo.ai.analytic.center.entity.AiAnalysisRequestLogs; import com.volvo.ai.analytic.center.entity.AiAnalysisRequestLogs;
import com.volvo.ai.analytic.center.entity.TmNameplateCorpus;
import com.volvo.ai.analytic.center.enums.BusinessTypeEnum; import com.volvo.ai.analytic.center.enums.BusinessTypeEnum;
import com.volvo.ai.analytic.center.enums.CategoryEnum; import com.volvo.ai.analytic.center.enums.CategoryEnum;
import com.volvo.ai.analytic.center.mapper.AiAnalysisRequestLogsMapper; import com.volvo.ai.analytic.center.mapper.AiAnalysisRequestLogsMapper;
import com.volvo.ai.analytic.center.mapper.TmTelephoneCorpusMapper; import com.volvo.ai.analytic.center.mapper.TmTelephoneCorpusMapper;
import com.volvo.ai.analytic.center.service.AiAnalysisErrorsService; import com.volvo.ai.analytic.center.service.*;
import com.volvo.ai.analytic.center.service.AiAnalysisRequestLogsService;
import com.volvo.ai.analytic.center.service.DiFyService;
import com.volvo.ai.analytic.center.service.TmTelephoneCorpusService;
import com.volvo.ai.analytic.center.utils.FlowResultSplitUtil; import com.volvo.ai.analytic.center.utils.FlowResultSplitUtil;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -72,6 +70,9 @@ public class CorpusFailJob {
@Autowired @Autowired
private TmTelephoneCorpusMapper tmTelephoneCorpusMapper; private TmTelephoneCorpusMapper tmTelephoneCorpusMapper;
@Autowired
private TmNameplateCorpusService tmNameplateCorpusService;
/** /**
* 企微语料处理 * 企微语料处理
@@ -81,14 +82,14 @@ public class CorpusFailJob {
public void corpusFailTask() { public void corpusFailTask() {
log.info(" corpusFailTask解析失败重试处理"); log.info(" corpusFailTask解析失败重试处理");
Integer total = aiAnalysisErrorsService.queryCountAnalysisErrorList(Arrays.asList(BusinessTypeEnum.SMART_ASSISTANT.getCode(),BusinessTypeEnum.SMART_ASSISTANT_QIWEI.getCode())); Integer total = aiAnalysisErrorsService.queryCountAnalysisErrorList(Arrays.asList(BusinessTypeEnum.SMART_ASSISTANT.getCode(),BusinessTypeEnum.SMART_ASSISTANT_QIWEI.getCode(),BusinessTypeEnum.SMART_ASSISTANT_NAMEPLATE.getCode()));
log.info("corpusFailTask语料解析失败重试处理数据量{}", total); log.info("corpusFailTask语料解析失败重试处理数据量{}", total);
int totalPages = PageDto.getTotalPages(total, pageSize); int totalPages = PageDto.getTotalPages(total, pageSize);
log.info("corpusFailTask 语料解析失败重试处理数据量:{},总页数:{}", total, totalPages); log.info("corpusFailTask 语料解析失败重试处理数据量:{},总页数:{}", total, totalPages);
for (int i = 1; i <= totalPages; i++) { for (int i = 1; i <= totalPages; i++) {
int offset = (i - 1) * pageSize; int offset = (i - 1) * pageSize;
List<AiAnalysisErrors> aiAnalysisErrorsListlist = aiAnalysisErrorsService.queryAnalysisErrorList(Arrays.asList(BusinessTypeEnum.SMART_ASSISTANT.getCode(),BusinessTypeEnum.SMART_ASSISTANT_QIWEI.getCode()),offset, pageSize); List<AiAnalysisErrors> aiAnalysisErrorsListlist = aiAnalysisErrorsService.queryAnalysisErrorList(Arrays.asList(BusinessTypeEnum.SMART_ASSISTANT.getCode(),BusinessTypeEnum.SMART_ASSISTANT_QIWEI.getCode(),BusinessTypeEnum.SMART_ASSISTANT_NAMEPLATE.getCode()),offset, pageSize);
if(CollectionUtils.isNotEmpty(aiAnalysisErrorsListlist)) { if(CollectionUtils.isNotEmpty(aiAnalysisErrorsListlist)) {
log.info("corpusFailTask语料解析失败重试处理 size:{}", aiAnalysisErrorsListlist.size()); log.info("corpusFailTask语料解析失败重试处理 size:{}", aiAnalysisErrorsListlist.size());
aiAnalysisErrorsListlist.stream().forEach(aiAnalysisErrors -> { aiAnalysisErrorsListlist.stream().forEach(aiAnalysisErrors -> {
@@ -139,7 +140,15 @@ public class CorpusFailJob {
updateAiAnalysisErrors(aiAnalysisErrors, oldAiAnalysisRequestLogs.getAiAnalysisRequestId()); updateAiAnalysisErrors(aiAnalysisErrors, oldAiAnalysisRequestLogs.getAiAnalysisRequestId());
} }
} else { } else if(null != corpusReportDTO && corpusReportDTO.getAnalysisScene() == 3){
log.info(" corpusFailTask 铭牌数据重试:{}", corpusReportDTO.getAnalysisScene());
JSONObject execDifyFlow = diFyService.executeDifyFlow(diFyReq, oldAiAnalysisRequestLogs.getAiAnalysisRequestType(), JSONObject.toJSONString(corpusReportDTO),oldAiAnalysisRequestLogs.getAiAnalysisRequestId());
List<TmNameplateCorpus> nameplateCorpusList = tmNameplateCorpusService.queryTelephoneCorpusByCustomerFlowId( Arrays.asList(corpusReportDTO.getCustomerFlowId()));
if(CollectionUtils.isNotEmpty(nameplateCorpusList)) {
TmNameplateCorpus nameplateCorpus = nameplateCorpusList.get(0);
tmNameplateCorpusService.sendNameplateLto(execDifyFlow, nameplateCorpus);
}
}else {
List<AicorpusTelephoneDTO> dccDtoList = tmTelephoneCorpusMapper.queryTelephoneCorpusBySourceIds( Arrays.asList(corpusReportDTO.getRecordId())); List<AicorpusTelephoneDTO> dccDtoList = tmTelephoneCorpusMapper.queryTelephoneCorpusBySourceIds( Arrays.asList(corpusReportDTO.getRecordId()));
if(CollectionUtils.isNotEmpty(dccDtoList)){ if(CollectionUtils.isNotEmpty(dccDtoList)){
AicorpusTelephoneDTO dccDto = dccDtoList.get(0); AicorpusTelephoneDTO dccDto = dccDtoList.get(0);

View File

@@ -19,8 +19,9 @@ public interface TmNameplateCorpusMapper extends BaseMapper<TmNameplateCorpus> {
List<TmNameplateCorpus> queryTmNameplateCorpusByData(@Param("statTime") String statTime, @Param("endTime") String endTime, @Param("offset") int offset, @Param("pageSize") int pageSize); List<TmNameplateCorpus> queryTmNameplateCorpusByData(@Param("statTime") String statTime, @Param("endTime") String endTime, @Param("offset") int offset, @Param("pageSize") int pageSize);
int countQueryTmNameplateCorpusRetry(@Param("statTime") String statTime, @Param("endTime") String endTime, @Param("customerFlowIds") List<String> customerFlowIds, @Param("retry") boolean retry); int countQueryTmNameplateCorpusRetry(@Param("statTime") String statTime, @Param("endTime") String endTime, @Param("customerFlowIds") List customerFlowIds, @Param("retry") boolean retry);
List<TmNameplateCorpus> queryTmNameplateCorpusRetry(@Param("statTime") String statTime, @Param("endTime") String endTime,@Param("offset") int offset, @Param("pageSize") int pageSize, @Param("customerFlowIds") List<String> customerFlowIds, @Param("retry") boolean retry); List<TmNameplateCorpus> queryTmNameplateCorpusRetry(@Param("statTime") String statTime, @Param("endTime") String endTime,@Param("offset") int offset, @Param("pageSize") int pageSize, @Param("customerFlowIds") List customerFlowIds, @Param("retry") boolean retry);
List<TmNameplateCorpus> queryTmNameplateCorpusByCustomerFlowIds(@Param("customerFlowIds") List customerFlowIds);
} }

View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.volvo.ai.analytic.center.entity.TmNameplateCorpus; import com.volvo.ai.analytic.center.entity.TmNameplateCorpus;
import com.volvo.common.core.util.ResultMsg; import com.volvo.common.core.util.ResultMsg;
import java.util.List;
/** /**
* @description 铭牌语料表-同步表 * @description 铭牌语料表-同步表
* @author BEJSON * @author BEJSON
@@ -19,4 +20,6 @@ public interface TmNameplateCorpusService extends IService<TmNameplateCorpus> {
void sendNameplateLto(JSONObject execDifyFlow, TmNameplateCorpus tmNameplateCorpus); void sendNameplateLto(JSONObject execDifyFlow, TmNameplateCorpus tmNameplateCorpus);
ResultMsg<Object> updateNameplate(String message); ResultMsg<Object> updateNameplate(String message);
List<TmNameplateCorpus> queryTelephoneCorpusByCustomerFlowId(List<String> customerFlowIds);
} }

View File

@@ -72,6 +72,16 @@ public class DiFyServiceImpl implements DiFyService{
log.debug("execDifyFlow dify response aiID:{} , data:{}",aiAnalysisRequestId,data); log.debug("execDifyFlow dify response aiID:{} , data:{}",aiAnalysisRequestId,data);
data.put("aiAnalysisRequestId",aiAnalysisRequestId); data.put("aiAnalysisRequestId",aiAnalysisRequestId);
if (null != data && data.get("status").equals("failed")) {
log.info("execDifyFlow failed, aiAnalysisRequestId:{} , data:{}",aiAnalysisRequestId,data);
aiAnalysisErrorsService.saveAiAnalysisErrors(AiAnalysisErrors.builder()
.aiAnalysisRequestId(aiAnalysisRequestId)
.aiAnalysisRequestType(businessType)
.aiAnalysisErrorHandlingStatus("0")
.aiAnalysisErrorMessage(data.getString("error"))
.build());
}
aiAnalysisRequestLogsService.saveAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder() aiAnalysisRequestLogsService.saveAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder()
.aiAnalysisRequestId(aiAnalysisRequestId) .aiAnalysisRequestId(aiAnalysisRequestId)
.difyResponse(data.toJSONString()) .difyResponse(data.toJSONString())

View File

@@ -139,7 +139,7 @@ public class TmNameplateCorpusServiceImpl extends ServiceImpl<TmNameplateCorpusM
// 获取前一天日期 // 获取前一天日期
LocalDate yesterday = today.minusDays(1); LocalDate yesterday = today.minusDays(1);
boolean retry = true; boolean retry = true;
String customerFlowIds = null; List<String> customerFlowIds = null;
// 格式化输出 // 格式化输出
String formattedDate = yesterday.toString(); // 默认格式为 yyyy-MM-dd String formattedDate = yesterday.toString(); // 默认格式为 yyyy-MM-dd
String statTime = formattedDate.concat(" 00:00:00"); String statTime = formattedDate.concat(" 00:00:00");
@@ -150,11 +150,12 @@ public class TmNameplateCorpusServiceImpl extends ServiceImpl<TmNameplateCorpusM
statTime = paramJsonObj.getString("statTime"); statTime = paramJsonObj.getString("statTime");
endTime = paramJsonObj.getString("endTime"); endTime = paramJsonObj.getString("endTime");
retry = paramJsonObj.getBoolean("retry"); retry = paramJsonObj.getBoolean("retry");
customerFlowIds = paramJsonObj.getString("customerFlowIds"); String customerFlowId = paramJsonObj.getString("customerFlowIds");
customerFlowIds = Arrays.asList(customerFlowId.split(","));
} }
} }
Integer total = tmNameplateCorpusMapper.countQueryTmNameplateCorpusRetry(statTime, endTime, Arrays.asList(customerFlowIds.split(",")),retry); Integer total = tmNameplateCorpusMapper.countQueryTmNameplateCorpusRetry(statTime, endTime, customerFlowIds ,retry);
int totalPages = PageDto.getTotalPages(total, pageSize); int totalPages = PageDto.getTotalPages(total, pageSize);
// 获取消息列表 // 获取消息列表
@@ -165,7 +166,7 @@ public class TmNameplateCorpusServiceImpl extends ServiceImpl<TmNameplateCorpusM
for (int i = 1; i <= totalPages; i++) { for (int i = 1; i <= totalPages; i++) {
int offset = (i - 1) * pageSize; int offset = (i - 1) * pageSize;
List<TmNameplateCorpus> messageList = tmNameplateCorpusMapper.queryTmNameplateCorpusRetry(statTime, endTime, offset, pageSize, Arrays.asList(customerFlowIds.split(",")), retry); List<TmNameplateCorpus> messageList = tmNameplateCorpusMapper.queryTmNameplateCorpusRetry(statTime, endTime, offset, pageSize, customerFlowIds, retry);
// 处理查询到的数据 // 处理查询到的数据
// 使用 CompletableFuture 并行处理 // 使用 CompletableFuture 并行处理
CompletableFuture<?>[] futures = messageList.stream() CompletableFuture<?>[] futures = messageList.stream()
@@ -280,5 +281,10 @@ public class TmNameplateCorpusServiceImpl extends ServiceImpl<TmNameplateCorpusM
return ResultMsg.failed(); return ResultMsg.failed();
} }
@Override
public List<TmNameplateCorpus> queryTelephoneCorpusByCustomerFlowId(List<String> customerFlowIds) {
return tmNameplateCorpusMapper.queryTmNameplateCorpusByCustomerFlowIds(customerFlowIds);
}
} }