修改时间格式化
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
package com.volvo.ai.analytic.center.dto.corpus;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @description 语料解析报告
|
||||
* @author BEJSON
|
||||
* @date 2025-03-11
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CorpusReportDTO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/**
|
||||
* 语料Id
|
||||
*/
|
||||
private String aiAnalysisRequestId;
|
||||
|
||||
/**
|
||||
* 语料类型【1:企业微信,2:电话】
|
||||
*/
|
||||
private Long analysisScene;
|
||||
|
||||
/**
|
||||
* corpus_time
|
||||
*/
|
||||
private String corpusTime;
|
||||
|
||||
/**
|
||||
* union_id
|
||||
*/
|
||||
private String unionId;
|
||||
|
||||
/**
|
||||
* user_id
|
||||
*/
|
||||
private String userId;
|
||||
|
||||
private String recordId;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -8,4 +8,6 @@ public class DiFyReq {
|
||||
private String user;
|
||||
private String flowId;
|
||||
private Object inputs;
|
||||
|
||||
private Object businessData;
|
||||
}
|
||||
|
||||
@@ -16,6 +16,9 @@ public class AiAnalysisErrors extends BaseEntity {
|
||||
@TableField("ai_analysis_request_id")
|
||||
private String aiAnalysisRequestId;
|
||||
|
||||
@TableField("ai_analysis_request_type")
|
||||
private String aiAnalysisRequestType;
|
||||
|
||||
@TableField("dify_response")
|
||||
private String difyResponse; // JSON 字符串
|
||||
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.volvo.ai.analytic.center.job;
|
||||
|
||||
import com.volvo.ai.analytic.center.entity.AiAnalysisErrors;
|
||||
import com.volvo.ai.analytic.center.enums.BusinessTypeEnum;
|
||||
import com.volvo.ai.analytic.center.service.AiAnalysisErrorsService;
|
||||
import com.volvo.common.core.util.ResultMsg;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RestController
|
||||
public class CorpusFailJob {
|
||||
|
||||
@Autowired
|
||||
private AiAnalysisErrorsService aiAnalysisErrorsService;
|
||||
|
||||
/**
|
||||
* 企微语料处理
|
||||
*/
|
||||
@XxlJob("corpusFailTask")
|
||||
public ResultMsg corpusFailTask() {
|
||||
try {
|
||||
log.info("语料解析失败重试处理");
|
||||
List<AiAnalysisErrors> aiAnalysisErrorsListlist = aiAnalysisErrorsService.queryAnalysisErrorList(BusinessTypeEnum.SMART_ASSISTANT.getCode());
|
||||
if(CollectionUtils.isNotEmpty(aiAnalysisErrorsListlist)){
|
||||
|
||||
aiAnalysisErrorsListlist.stream().forEach(aiAnalysisErrors -> {
|
||||
|
||||
if(aiAnalysisErrors.getMaxRetryCount()>= aiAnalysisErrors.getRetryCount()){
|
||||
|
||||
log.info("已超过最大重试次数!");
|
||||
return ;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("processMessageByTask 定时任务补偿处理消息异常",e.getMessage());
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return ResultMsg.ok();
|
||||
}
|
||||
}
|
||||
@@ -49,7 +49,7 @@ public class CorpusProcessKafkaProducer {
|
||||
tmTelephoneCorpus.setCreateTime(LocalDateTime.now());
|
||||
|
||||
// 条件: 只处理dcc的 10s通话时间以上
|
||||
log.info("CorpusProcessKafkaProducer getCategoryCode: {}" , tmTelephoneCorpus.getCategoryCode());
|
||||
log.info("CorpusProcessKafkaProducer getCategoryCode: {},audioFileId:{},sourceId:{}" , tmTelephoneCorpus.getCategoryCode(), aicorpusTelephone.getAudioFileId(), aicorpusTelephone.getSourceId());
|
||||
if (Constant.CHANNEL_DCC.equals(tmTelephoneCorpus.getCategoryCode())){
|
||||
log.info(" dcc 语料开始处理: {}");
|
||||
tmTelephoneCorpusService.saveTelephoneCorpus(tmTelephoneCorpus);
|
||||
|
||||
@@ -3,7 +3,11 @@ package com.volvo.ai.analytic.center.service;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.volvo.ai.analytic.center.entity.AiAnalysisErrors;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface AiAnalysisErrorsService extends IService<AiAnalysisErrors> {
|
||||
|
||||
boolean saveAiAnalysisErrors(AiAnalysisErrors entity);
|
||||
|
||||
List<AiAnalysisErrors> queryAnalysisErrorList(String businessType);
|
||||
}
|
||||
|
||||
@@ -9,6 +9,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class AiAnalysisErrorsServiceImpl extends ServiceImpl<AiAnalysisErrorsMapper, AiAnalysisErrors> implements AiAnalysisErrorsService {
|
||||
@@ -27,4 +29,15 @@ public class AiAnalysisErrorsServiceImpl extends ServiceImpl<AiAnalysisErrorsMa
|
||||
return aiAnalysisErrorsMapper.update(entity, queryWrapper) > 0;
|
||||
}
|
||||
}
|
||||
|
||||
public List<AiAnalysisErrors> queryAnalysisErrorList(String businessType) {
|
||||
//捞取异常表中属于社区的异常数据
|
||||
List<AiAnalysisErrors> aiAnalysisErrors = aiAnalysisErrorsMapper.selectList(new LambdaQueryWrapper<AiAnalysisErrors>()
|
||||
.eq(AiAnalysisErrors::getAiAnalysisRequestType, businessType)
|
||||
.eq(AiAnalysisErrors::getAiAnalysisErrorHandlingStatus, "0")
|
||||
.eq(AiAnalysisErrors::getIsDeleted, 0)
|
||||
.lt(AiAnalysisErrors::getRetryCount, 4));
|
||||
return aiAnalysisErrors;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ public class DiFyServiceImpl implements DiFyService{
|
||||
// 保存请求日志
|
||||
aiAnalysisRequestLogsService.saveAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder()
|
||||
.aiAnalysisRequestId(aiAnalysisRequestId)
|
||||
.businessRequest(JSONObject.toJSONString(""))
|
||||
.businessRequest(JSONObject.toJSONString(diFyReq.getBusinessData()))
|
||||
.difyAgentKey(diFyReq.getFlowId())
|
||||
.difyRequest(JSON.toJSONString(diFyReq))
|
||||
.difyResponse(JSON.toJSONString(""))
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.volvo.ai.analytic.center.constant.Constant;
|
||||
import com.volvo.ai.analytic.center.dto.PageDto;
|
||||
import com.volvo.ai.analytic.center.dto.corpus.CorpusReportDTO;
|
||||
import com.volvo.ai.analytic.center.dto.corpus.OdsVdqwMessageOTD;
|
||||
import com.volvo.ai.analytic.center.dto.req.DiFyReq;
|
||||
import com.volvo.ai.analytic.center.dto.req.RunMaskingRuleInput;
|
||||
@@ -191,6 +192,13 @@ public class TmOdsVdqwMessagearchivingServiceImpl extends ServiceImpl<TmOdsVdqwM
|
||||
inputMap.put("chat", chatList.toString());
|
||||
// inputMap.put("model", tmTelephoneCorpusService.getCarModelList());
|
||||
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);
|
||||
diFyImageReq.setBusinessData(corpusReportDTO);
|
||||
// 获取配置
|
||||
JSONObject execDifyFlow = diFyService.executeDifyFlow(diFyImageReq, BusinessTypeEnum.SMART_ASSISTANT.getCode());
|
||||
log.info("runDify execDifyFlow {}", execDifyFlow);
|
||||
@@ -198,6 +206,10 @@ public class TmOdsVdqwMessagearchivingServiceImpl extends ServiceImpl<TmOdsVdqwM
|
||||
String text = execDifyFlow.getJSONObject("outputs").getString("text");
|
||||
String resultStrOne = FlowResultSplitUtil.flowOutputTextSplit(text, "任务1", "任务2");
|
||||
String resultStrTwo = FlowResultSplitUtil.flowOutputTextSplit(text, "任务2", null);
|
||||
if (StringUtils.isBlank(resultStrOne) || StringUtils.isBlank(resultStrTwo)){
|
||||
log.info("企微语料解析为空,text:{}", text);
|
||||
return;
|
||||
}
|
||||
Map<String, String> ltoMap = new HashMap<>();
|
||||
ltoMap.put("analysisRecordId", execDifyFlow.getString("aiAnalysisRequestId"));
|
||||
ltoMap.put("analysisScene", "1");
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.volvo.ai.analytic.center.constant.Constant;
|
||||
import com.volvo.ai.analytic.center.dto.corpus.AicorpusTelephoneDTO;
|
||||
import com.volvo.ai.analytic.center.dto.corpus.CorpusReportDTO;
|
||||
import com.volvo.ai.analytic.center.dto.req.CarModelReqDTO;
|
||||
import com.volvo.ai.analytic.center.dto.req.DiFyReq;
|
||||
import com.volvo.ai.analytic.center.dto.req.RunMaskingRuleInput;
|
||||
@@ -28,6 +29,7 @@ import com.volvo.ai.analytic.center.utils.ConstantStr;
|
||||
import com.volvo.ai.analytic.center.utils.FlowResultSplitUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.rocketmq.client.producer.SendCallback;
|
||||
import org.apache.rocketmq.client.producer.SendResult;
|
||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||
@@ -39,6 +41,8 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -127,9 +131,17 @@ public class TmTelephoneCorpusServiceImpl extends ServiceImpl<TmTelephoneCorpusM
|
||||
|
||||
});
|
||||
|
||||
ZonedDateTime zonedDateTime = ZonedDateTime.parse(jsonObject.getString("start_time"));
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
String formattedDateStartTime = zonedDateTime.format(formatter);
|
||||
|
||||
inputMap.put("chat",chatList.toString());
|
||||
inputMap.put("model",getCarModelList());
|
||||
diFyImageReq.setInputs(inputMap);
|
||||
CorpusReportDTO corpusReportDTO = new CorpusReportDTO();
|
||||
corpusReportDTO.setCorpusTime(formattedDateStartTime);
|
||||
corpusReportDTO.setRecordId(aicorpusTelephone.getSourceId());
|
||||
diFyImageReq.setBusinessData(corpusReportDTO);
|
||||
// 获取配置
|
||||
JSONObject execDifyFlow = diFyService.executeDifyFlow(diFyImageReq, BusinessTypeEnum.SMART_ASSISTANT.getCode());
|
||||
log.info("runDify execDifyFlow {}",execDifyFlow);
|
||||
@@ -138,12 +150,16 @@ public class TmTelephoneCorpusServiceImpl extends ServiceImpl<TmTelephoneCorpusM
|
||||
String text = execDifyFlow.getJSONObject("outputs").getString("text");
|
||||
String resultStrOne = FlowResultSplitUtil.flowOutputTextSplit(text, "任务1", "任务2");
|
||||
String resultStrTwo =FlowResultSplitUtil.flowOutputTextSplit(text, "任务2", null);
|
||||
if (StringUtils.isBlank(resultStrOne) || StringUtils.isBlank(resultStrTwo)){
|
||||
log.info("电话语料解析为空,text:{}", text);
|
||||
return;
|
||||
}
|
||||
Map<String, String> ltoMap = new HashMap();
|
||||
ltoMap.put("analysisRecordId", execDifyFlow.getString("aiAnalysisRequestId"));
|
||||
ltoMap.put("aiAnalysisRequestId", execDifyFlow.getString("aiAnalysisRequestId"));
|
||||
ltoMap.put("analysisScene", "2");
|
||||
// ltoMap.put("unionId", aicorpusTelephone.getSourceId());
|
||||
ltoMap.put("recordId", aicorpusTelephone.getSourceId());
|
||||
ltoMap.put("communicateDate", jsonObject.getString("start_time"));
|
||||
ltoMap.put("communicateDate", formattedDateStartTime);
|
||||
ltoMap.put("analysisResult", resultStrOne.replace("#",""));
|
||||
ltoMap.put("analysisDetail", resultStrTwo);
|
||||
// 发送MQ
|
||||
|
||||
@@ -14,12 +14,12 @@ public class FlowResultSplitUtil {
|
||||
public static String flowOutputTextSplit(String text, String startMark, String endMark) {
|
||||
int startIndex = text.indexOf(startMark);
|
||||
if (startIndex == -1) {
|
||||
return "未找到任务起始标记:" + startMark;
|
||||
return "" ;
|
||||
}
|
||||
|
||||
int endIndex = (endMark != null) ? text.indexOf(endMark) : text.length();
|
||||
if (endIndex == -1) {
|
||||
return "未找到任务结束标记:" + endMark;
|
||||
return "" ;
|
||||
}
|
||||
|
||||
return text.substring(startIndex, endIndex).trim();
|
||||
|
||||
Reference in New Issue
Block a user