单条语料分析结论入库

This commit is contained in:
mliu71
2025-07-18 16:51:18 +08:00
parent f8bc2beea0
commit 3d2e0b4716
6 changed files with 129 additions and 8 deletions

View File

@@ -1,7 +1,7 @@
package com.volvo.ai.analytic.center.controller;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
@@ -11,6 +11,7 @@ import com.volvo.ai.analytic.center.dto.req.AnalysisReq;
import com.volvo.ai.analytic.center.dto.req.ConsultingRequestDTO;
import com.volvo.ai.analytic.center.dto.resp.AnalysisResp;
import com.volvo.ai.analytic.center.service.AiAnalysisDifyService;
import com.volvo.ai.analytic.center.service.impl.CorpusQuestionServiceImpl;
import com.volvo.common.core.util.ResultMsg;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -35,7 +36,8 @@ public class AiAnalysisDifyController {
@Autowired
private AiAnalysisDifyService aiAnalysisDifyService;
@Autowired
private CorpusQuestionServiceImpl corpusQuestionServiceImpl;
@PostMapping("/updateByAiId")
@ApiOperation(value = "更新dify结果")
@@ -81,12 +83,9 @@ public class AiAnalysisDifyController {
@ApiOperation(value = "单条语料分析结论入库")
public AnalysisResp<Object> corpusQuestion(@RequestHeader(value = "appKey") String appKey,
@RequestBody ConsultingRequestDTO requestDTO) {
log.info("aiAnalyze corpusQuestion requestDTO: {} ,appKey:{}", JSON.toJSONString(requestDTO),appKey);
// 打印接收到的参数
System.out.println("Received appKey: " + appKey);
System.out.println("Received businessType: " + requestDTO.getBusinessType());
JSONObject jsonObject = JSONObject.parseObject(requestDTO.getText());
System.out.println("Received text: " + jsonObject.toString());
corpusQuestionServiceImpl.runCorpusQuestionDify(requestDTO);
return AnalysisResp .success("ok");
}

View File

@@ -0,0 +1,38 @@
package com.volvo.ai.analytic.center.mq;
import com.alibaba.fastjson.JSONObject;
import com.volvo.ai.analytic.center.constant.Constant;
import com.volvo.ai.analytic.center.feign.DiFyFeign;
import lombok.extern.slf4j.Slf4j;
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.stereotype.Component;
import java.util.Map;
@Slf4j
@Component
@RocketMQMessageListener(consumerGroup = "${rocketmq.consumer.corpus.questiongroup}",
topic = "${rocketmq.consumer.corpus.questiontopic}", consumeThreadNumber = 2)
@RefreshScope
public class CorpusQuestionConsumer implements RocketMQListener<Map<String, Object>> {
@Value("${dify.corpusQuestion.token: app-erbXevAmaQiyg5QFPn2NpJ7G}")
private String corpusQuestionToken;
@Autowired
private DiFyFeign diFyFeign;
@Override
public void onMessage(Map<String, Object> inputMap) {
inputMap.put("businessType", Constant.CHANNEL_4IN1);
JSONObject difyResult = diFyFeign.runWorkflows("Bearer " + corpusQuestionToken, inputMap);
log.info("difyResult {}", difyResult.toJSONString());
}
}

View File

@@ -0,0 +1,29 @@
package com.volvo.ai.analytic.center.mq;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Map;
@Component
@Slf4j
public class CorpusQuestionProducer {
@Value("${rocketmq.producer.corpus.questiontopic}")
private String corpusQuestionTopic;
@Resource
private RocketMQTemplate rocketMQTemplate;
public void sendCorpusQuestion(Map<String, Object> inputMap) {
rocketMQTemplate.convertAndSend(corpusQuestionTopic, inputMap);
}
}

View File

@@ -0,0 +1,7 @@
package com.volvo.ai.analytic.center.service;
import com.volvo.ai.analytic.center.dto.req.ConsultingRequestDTO;
public interface CorpusQuestionService {
void runCorpusQuestionDify(ConsultingRequestDTO consultingRequestDTO);
}

View File

@@ -0,0 +1,35 @@
package com.volvo.ai.analytic.center.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.volvo.ai.analytic.center.dto.req.ConsultingRequestDTO;
import com.volvo.ai.analytic.center.entity.TmCorpusQuestionReport;
import com.volvo.ai.analytic.center.mapper.TmCorpusQuestionReportMapper;
import com.volvo.ai.analytic.center.service.CorpusQuestionService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class CorpusQuestionServiceImpl implements CorpusQuestionService {
@Autowired
TmCorpusQuestionReportMapper tmCorpusQuestionReportMapper;
@Override
public void runCorpusQuestionDify(ConsultingRequestDTO consultingRequestDTO) {
String text = consultingRequestDTO.getText();
JSONObject textJsonObject = JSONObject.parseObject(text);
JSONObject consultingScenario = textJsonObject.getJSONObject("consultingScenario");
TmCorpusQuestionReport tmCorpusQuestionReport = new TmCorpusQuestionReport();
tmCorpusQuestionReport.setMainCategory(consultingScenario.getString("mainCategory"));
tmCorpusQuestionReport.setSubCategory(consultingScenario.getString("subCategory"));
tmCorpusQuestionReport.setConfidence(consultingScenario.getString("confidence"));
tmCorpusQuestionReport.setBusinessType(consultingRequestDTO.getBusinessType());
tmCorpusQuestionReport.setSourceCorpusId(consultingRequestDTO.getSourceCorpusId());
tmCorpusQuestionReport.setSourceCorpusTime(consultingRequestDTO.getSourceCorpusTime());
tmCorpusQuestionReport.setAnalysisResultJson(text);
tmCorpusQuestionReportMapper.insert(tmCorpusQuestionReport);
}
}

View File

@@ -18,8 +18,8 @@ import com.volvo.ai.analytic.center.enums.BizEnum;
import com.volvo.ai.analytic.center.enums.BusinessTypeEnum;
import com.volvo.ai.analytic.center.enums.CategoryEnum;
import com.volvo.ai.analytic.center.feign.RemoteCarModelClient;
import com.volvo.ai.analytic.center.mapper.AiAnalysisErrorsMapper;
import com.volvo.ai.analytic.center.mapper.TmTelephoneCorpusMapper;
import com.volvo.ai.analytic.center.mq.CorpusQuestionProducer;
import com.volvo.ai.analytic.center.service.*;
import com.volvo.ai.analytic.center.utils.AiAnalysisUtils;
import com.volvo.ai.analytic.center.utils.ConstantStr;
@@ -84,6 +84,10 @@ public class TmTelephoneCorpusServiceImpl extends ServiceImpl<TmTelephoneCorpusM
@Autowired
public IntelligentCustomerService intelligentCustomerService;
@Autowired
CorpusQuestionProducer corpusQuestionProducer;
@Override
@Transactional
public void saveTelephoneCorpus(TmTelephoneCorpus tmTelephoneCorpus) {
@@ -247,6 +251,15 @@ public class TmTelephoneCorpusServiceImpl extends ServiceImpl<TmTelephoneCorpusM
});
inputMap.put("workOrderContent", chatList.toString());
Map<String, Object> questionInput = new HashMap();
questionInput.put("chat", chatList.toString());
questionInput.put("sourceCorpusId", aicorpusTelephone.getSourceId());
questionInput.put("sourceCorpusTime", aicorpusTelephone.getTranscribeTime());
//发送单个问题消息
corpusQuestionProducer.sendCorpusQuestion(questionInput);
inputMap.put("workOrderId",aicorpusTelephone.getSourceId());
String oldAiAnalysisRequestId = aicorpusTelephone.getAiAnalysisRequestId();