Merge remote-tracking branch 'origin/dev_1.0.0' into dev_1.0.0

# Conflicts:
#	src/main/java/com/supervision/chat/client/LangChainChatService.java
topo_dev
xueqingkun 9 months ago
commit 1f3bcb3142

@ -15,6 +15,8 @@ import org.springframework.web.service.annotation.GetExchange;
import org.springframework.web.service.annotation.HttpExchange;
import org.springframework.web.service.annotation.PostExchange;
import java.util.List;
@HttpExchange
public interface LangChainChatService {
@ -23,7 +25,7 @@ public interface LangChainChatService {
* @param createBaseDTO
* @return
*/
@PostExchange(url = "/knowledge_base/create_knowledge_base", contentType = MediaType.APPLICATION_JSON_VALUE)
@PostExchange(url = "create_knowledge_base", contentType = MediaType.APPLICATION_JSON_VALUE)
LangChainChatRes createBase(@RequestBody CreateBaseDTO createBaseDTO);
/**
@ -40,7 +42,7 @@ public interface LangChainChatService {
* @param docs {"test.txt":[{"page_content":"custom doc","metadata":{},"type":"Document"}]}
* @return
*/
@PostExchange(url = "/knowledge_base/upload_docs", contentType = MediaType.MULTIPART_FORM_DATA_VALUE)
@PostExchange(url = "upload_docs", contentType = MediaType.MULTIPART_FORM_DATA_VALUE)
LangChainChatRes uploadFile(@RequestPart String knowledge_base_name,
@RequestPart MultipartFile files,
@RequestPart String text_splitter_type,
@ -57,14 +59,14 @@ public interface LangChainChatService {
* @param deleteFileDTO
* @return
*/
@PostExchange(url = "/knowledge_base/delete_docs", contentType = MediaType.APPLICATION_JSON_VALUE)
LangChainChatRes deleteFile(@RequestBody DeleteFileDTO deleteFileDTO);
@PostExchange(url = "delete_docs", contentType = MediaType.APPLICATION_JSON_VALUE)
LangChainChatRes<Object> deleteFile(@RequestBody DeleteFileDTO deleteFileDTO);
@GetExchange(url = "/knowledge_base/list_files")
LangChainChatRes queryFileList(@RequestParam String knowledge_base_name);
@GetExchange(url = "list_files")
LangChainChatRes<List<String>> queryFileList(@RequestParam String knowledge_base_name);
@PostExchange(url = "/knowledge_base/delete_knowledge_base", contentType = MediaType.APPLICATION_JSON_VALUE)
LangChainChatRes deleteBase(@RequestBody String knowledge_base_name);
@PostExchange(url = "/delete_knowledge_base", contentType = MediaType.APPLICATION_JSON_VALUE)
LangChainChatRes<Object> deleteBase(@RequestBody String knowledge_base_name);
@PostExchange(url = "/comDictionary/queryByType", contentType = MediaType.APPLICATION_JSON_VALUE)
R<?> findDictionaryListByType();

@ -3,11 +3,11 @@ package com.supervision.chat.client.dto;
import lombok.Data;
@Data
public class LangChainChatRes {
public class LangChainChatRes <T> {
private Integer code;
private String msg;
private Object data;
private T data;
}

@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.chat.UploadParamEnum;
import com.supervision.chat.client.LangChainChatService;
import com.supervision.chat.client.dto.CreateBaseDTO;
import com.supervision.chat.client.dto.LangChainChatRes;
@ -247,6 +248,7 @@ public class ModelCaseServiceImpl extends ServiceImpl<ModelCaseMapper, ModelCase
if (update){
caseStatusManageService.whenSaveCasePeople(person.getCaseId(), person);
}
return update;
}

@ -51,11 +51,11 @@ public class NoteRecordServiceImpl extends ServiceImpl<NoteRecordMapper, NoteRec
return;
}
// 查询知识库中已经存在的文件
LangChainChatRes queryFileListRes = langChainChatService.queryFileList(modelCase.getCaseNo());
LangChainChatRes<List<String>> queryFileListRes = langChainChatService.queryFileList(modelCase.getCaseNo());
if (!queryFileListRes.getCode().equals(200)) {
log.info("获取知识库已存在的文件失败");
}
HashSet<String> knowledgeFileNameSet = new HashSet<>(JSONUtil.toList((String) queryFileListRes.getData(), String.class));
HashSet<String> knowledgeFileNameSet = new HashSet<>(queryFileListRes.getData());
Set<String> databaseFileNameSet = new HashSet<>();
for (NoteRecord record : recordList) {
for (String fileId : record.getFileIds().split(",")) {

@ -1,6 +1,7 @@
package com.supervision.police.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -31,6 +32,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDateTime;
@ -107,6 +111,7 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
}
String context = WordReadUtil.readWord(inputStream);
List<QARecordNodeDTO> qaList = RecordRegexUtil.recordRegex(context, record.getName());
log.info("拆分问答对:{}",qaList.size());
List<NoteRecordSplit> splitList = new ArrayList<>();
for (QARecordNodeDTO qa : qaList) {
try {
@ -126,7 +131,7 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
}
}
// 创建任务之后,再开始
boolean taskStatus = saveRecordProcessTask(record.getCaseId(), record.getId());
boolean taskStatus = saveRecordProcessTask(record.getCaseId(), record.getId(), qaList.size());
// 如果校验结果为true,则说明需要进行分类以及三元组操作
if (taskStatus) {
// 对笔录进行分类,并对笔录进行提取三元组
@ -147,7 +152,7 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
* @param recordId
* @return , true, , false
*/
private boolean saveRecordProcessTask(String caseId, String recordId) {
private boolean saveRecordProcessTask(String caseId, String recordId,Integer splitSize) {
// 首先查询是否存在任务,如果不存在,就新建
Optional<CaseTaskRecord> caseTaskRecordOpt = caseTaskRecordService.lambdaQuery()
.eq(CaseTaskRecord::getCaseId, caseId).eq(CaseTaskRecord::getRecordId, recordId).oneOpt();
@ -158,7 +163,16 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
newCaseTaskRecord.setStatus(1);
newCaseTaskRecord.setSubmitTime(LocalDateTime.now());
return caseTaskRecordService.save(newCaseTaskRecord);
} else {
} else if (0 == splitSize) {
// 如果笔录对为0,就直接不需要拆分,直接认为任务成功
CaseTaskRecord newCaseTaskRecord = new CaseTaskRecord();
newCaseTaskRecord.setCaseId(caseId);
newCaseTaskRecord.setRecordId(recordId);
newCaseTaskRecord.setStatus(2);
newCaseTaskRecord.setSubmitTime(LocalDateTime.now());
caseTaskRecordService.save(newCaseTaskRecord);
return false;
}else {
// 如果存在,则校验时间是否已经超过1天,如果超过了1天还没有执行完毕,就重新提交这个任务
CaseTaskRecord caseTaskRecord = caseTaskRecordOpt.get();
// 如果未执行,则提交执行

@ -15,7 +15,10 @@ import java.util.regex.Pattern;
public class RecordRegexUtil {
// 创建正则表达式Pattern对象允许问题和答案之间有任意数量的换行符
private static final Pattern pattern = Pattern.compile("(问:)(.*?)(答:)(.*?)(?=问:|\n$)", Pattern.DOTALL);
// private static final Pattern pattern = Pattern.compile("(问:| 问:)(.*?)(答:|答:)(.*?)(?=问:|问:| \n$)", Pattern.DOTALL);
private static final Pattern pattern = Pattern.compile("(问[:](.*?))\\s*答[:](.*?)(?=(问[:]|$))", Pattern.DOTALL);
public static List<QARecordNodeDTO> recordRegex(String content, String answerName) {

@ -63,7 +63,7 @@ public class WordReadUtil {
List<XWPFParagraph> paragraphs = document.getParagraphs();
// 遍历所有段落并打印文本
for (XWPFParagraph paragraph : paragraphs) {
stringBuilder.append(paragraph.getText());
stringBuilder.append(paragraph.getText()).append("\n");
}
} catch (Exception e) {
log.error("获取笔录内容失败",e);

Loading…
Cancel
Save