修复bug

main
xueqingkun 1 year ago
parent 9131ca5409
commit dbc5211c3e

@ -1,5 +1,13 @@
# 设置基础镜像
FROM registry.cn-beijing.aliyuncs.com/longbei/jdk:latest
FROM openjdk:8u201-jre-alpine
ENV TZ=Asia/Shanghai
ENV LANG=zh_CN.UTF-8
RUN apk --no-cache add tzdata msttcorefonts-installer fontconfig \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& update-ms-fonts \
&& fc-cache -vf
WORKDIR /data/intro-robot/
# 复制java jar 到容器中
@ -8,7 +16,6 @@ COPY interro_robot-0.0.1-SNAPSHOT.jar /data/intro-robot/interro_robot-0.0.1-SN
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN chmod 777 /usr/local/bin/docker-entrypoint.sh
# 暴漏服务端口
EXPOSE 8891

@ -2,7 +2,7 @@ package com.supervision.dto;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor;
import com.supervision.dto.robot.ParamCheckDTO;
import lombok.Builder;
import lombok.Data;
@ -89,33 +89,10 @@ public class QueryProcessDTO {
public <T extends CharSequence> void notEmptyParam(String paramName, T value, String errorMsgTemplate){
if(StrUtil.isEmpty(value)){
this.state = 1;
this.paramCheckList.add(new ParamCheckDTO(paramName, errorMsgTemplate,2));
}
}
@Data
@AllArgsConstructor
static class ParamCheckDTO {
private String paramName;
private String paramDesc;
/**
* 1 2 3
*/
private Integer errorType;
public String toMessage(){
if (Integer.valueOf(1).equals(errorType)){
return String.format("参数%s缺失",paramName);
}
if (Integer.valueOf(2).equals(errorType)){
return String.format("参数%s值错误",paramName);
}
if (Integer.valueOf(3).equals(errorType)){
return String.format("参数%s类型错误",paramName);
if (null == paramCheckList){
paramCheckList = new ArrayList<>();
}
return "";
this.paramCheckList.add(new ParamCheckDTO(paramName, errorMsgTemplate,2));
}
}
}

@ -20,11 +20,6 @@ public class AskInfo {
*/
private String message;
/**
* 1-2-3-4-5- 6-
*/
/*private Integer answerContentType;*/
/**
*

@ -0,0 +1,29 @@
package com.supervision.dto.robot;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class ParamCheckDTO {
private String paramName;
private String paramDesc;
/**
* 1 2 3
*/
private Integer errorType;
public String toMessage(){
if (Integer.valueOf(1).equals(errorType)){
return String.format("参数%s缺失",paramName);
}
if (Integer.valueOf(2).equals(errorType)){
return String.format("参数%s值错误",paramName);
}
if (Integer.valueOf(3).equals(errorType)){
return String.format("参数%s类型错误",paramName);
}
return "";
}
}

@ -2,6 +2,7 @@ package com.supervision.service;
import com.supervision.domain.IrSessionParam;
import com.supervision.dto.QueryProcessDTO;
import com.supervision.dto.robot.ParamCheckDTO;
import java.util.List;
import java.util.function.Supplier;
@ -23,4 +24,7 @@ public interface QueryTemplateProcessor {
*/
QueryProcessDTO process(String templateId, String sessionId, Supplier<List<IrSessionParam>> sessionParamSupplier);
List<ParamCheckDTO> paramCheck(String templateId, String sessionId, List<IrSessionParam> sessionParams);
}

@ -10,6 +10,7 @@ import com.supervision.domain.IrKnowledge;
import com.supervision.domain.IrSessionParam;
import com.supervision.domain.IrSqlParam;
import com.supervision.dto.QueryProcessDTO;
import com.supervision.dto.robot.ParamCheckDTO;
import com.supervision.service.IrKnowledgeService;
import com.supervision.service.IrSessionParamService;
import com.supervision.service.IrSqlParamService;
@ -114,6 +115,22 @@ public class QueryTemplateProcessorImpl implements QueryTemplateProcessor {
return queryProcessDTO;
}
@Override
public List<ParamCheckDTO> paramCheck(String templateId, String sessionId, List<IrSessionParam> sessionParams) {
// 查询知识查询sql需要的参数
List<IrSqlParam> paramsList = sqlParamService.lambdaQuery().eq(IrSqlParam::getKnowledgeId, templateId).list();
// 校验知识查询sql必填参数
Set<String> sessionParamsNames = sessionParams.stream().filter(param->StrUtil.isNotEmpty(param.getParamValue())).map(IrSessionParam::getParamName).collect(Collectors.toSet());
return paramsList.stream().filter(param -> Integer.valueOf(1).equals(param.getParamRequire())).map(param -> {
if (!sessionParamsNames.contains(param.getParamName())) {
return new ParamCheckDTO(param.getParamName(), param.getParamDesc(), 1);
}
return null;
}).filter(Objects::nonNull).collect(Collectors.toList());
}
public void generateZip(File targetZipFile, List<File> sourceFiles, boolean dirWithFlag) {
if (CollUtil.isNotEmpty(sourceFiles)) {
File[] fileArr = sourceFiles.toArray(new File[]{});
@ -199,10 +216,12 @@ public class QueryTemplateProcessorImpl implements QueryTemplateProcessor {
if (StrUtil.isNotEmpty(rootPath)){
path = StrUtil.join(File.separator, rootPath, path);
}
log.info("定位到的本地文件路径:{}",path);
// 判断文件是否存在
if (FileUtil.exist(path)){
return path;
}
log.info("文件路径:{}不存在...",path);
return null;
}

@ -76,6 +76,9 @@ public class RobotTalkServiceImpl implements RobotTalkService {
.answerInfo(AnswerInfo.builder().contentType(robotTalkReq.getAnswerType()).build())
.build();
// 获取机器人配置
IrRobotConfig config = irRobotConfigService.lambdaQuery().one();
// 确认弹框信息
if (StrUtil.isNotEmpty(robotTalkReq.getAskId())){
IrSessionHistory sessionHistory = sessionService.lambdaQuery().eq(IrSessionHistory::getId, robotTalkReq.getAskId()).one();
@ -86,15 +89,32 @@ public class RobotTalkServiceImpl implements RobotTalkService {
}
}
// 提取信息中的关键信息
if (Boolean.FALSE.equals(robotTalkReq.isConfirmFlag())){
extractInformation(sessionId, robotTalkReq.getMessage(), robotTalkDTO);
}
// 匹配问题意图
MatchQuestionAnswerDTO matchQuestionAnswerDTO = robotTalkDTO.isDoNext() ? matchQuestionAnswer(robotTalkReq.getMessage()) : null;
MatchQuestionAnswerDTO matchQuestionAnswerDTO = matchQuestionAnswer(robotTalkReq.getMessage());
if (Objects.nonNull(matchQuestionAnswerDTO)){
List<ParamCheckDTO> paramCheckDTOS = queryTemplateProcessor.paramCheck(matchQuestionAnswerDTO.getMatchQuestionCode(), sessionId,
suspectInfo2IrSessionParam(sessionId, null));
// 匹配到意图,但是参数校验不通过,尝试提取消息中的信息
if (CollUtil.isNotEmpty(paramCheckDTOS) && !Boolean.TRUE.equals(robotTalkReq.isConfirmFlag())){
String paramsJoin = paramCheckDTOS.stream().map(ParamCheckDTO::getParamName).collect(Collectors.joining(","));
log.info("匹配到的问题:{} ,需要参数:{} ,尝试抽取问题:{} 中的参数。",matchQuestionAnswerDTO.getMatchQuestionCode(),paramsJoin,robotTalkReq.getMessage());
extractInformation(sessionId, robotTalkReq.getMessage(), robotTalkDTO);
robotTalkDTO.getAnswerInfo().setContentType(6);
}
}else {
if (!Boolean.TRUE.equals(robotTalkReq.isConfirmFlag())){
log.info("问题:{},未匹配到意图且confirmFlag标识不为true,抽取问题中的关键属性",robotTalkReq.getMessage());
// 未匹配到意图,且不是关键信息确认操作则提取信息中的关键信息
extractInformation(sessionId, robotTalkReq.getMessage(), robotTalkDTO);
robotTalkDTO.getAnswerInfo().setContentType(6);
}else {
// 未匹配到意图,是关键信息确认操作,不做问题响应,只做默认回答
log.info("问题:{},未匹配到意图且confirmFlag标识为true,设置默认回答:{}",robotTalkReq.getMessage(),config.getUnrecognizedTwo());
robotTalkDTO.getAnswerInfo().setMessage(config.getUnrecognizedTwo());
robotTalkDTO.setDoNext(false);
}
}
// 获取机器人配置
IrRobotConfig config = irRobotConfigService.lambdaQuery().one();
if (Objects.isNull(matchQuestionAnswerDTO) && robotTalkDTO.isDoNext()){
// 未匹配到查询意图,设置默认错误语
log.info("问题:{}未匹配到意图",robotTalkReq.getMessage());
@ -225,7 +245,7 @@ public class RobotTalkServiceImpl implements RobotTalkService {
if (Objects.isNull(sessionParam) || StrUtil.isEmpty(sessionParam.getParamValue())) {
// 案件id为空需要设置案件id
answerInfo.setContentType(2);
answerInfo.setMessage("请先设置案件id");
answerInfo.setMessage("请先设置案件信息");
robotTalkDTO.setDoNext(false);
} else {
Integer caseNo = StrUtil.isEmpty(sessionParam.getParamValue()) ? null : Integer.valueOf(sessionParam.getParamValue());

@ -21,6 +21,9 @@ public class RobotTalkReq {
*/
private Integer answerType;
/**
*
*/
private boolean confirmFlag;
// ========方便前端好传参=======>>>>>>

Loading…
Cancel
Save