新增知识库管理功能,包括知识库和文档的增删改查,优化文档上传和状态管理,更新相关API接口和前端页面,添加知识库和文档的视图组件。

This commit is contained in:
Chuck1sn
2025-06-27 16:51:48 +08:00
parent 2fb08968ee
commit 8ed0b795f3
25 changed files with 1578 additions and 46 deletions

View File

@@ -8,6 +8,8 @@ import com.zl.mjga.repository.LibraryRepository;
import com.zl.mjga.service.RagService;
import com.zl.mjga.service.UploadService;
import jakarta.validation.Valid;
import java.util.Comparator;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -37,7 +39,10 @@ public class LibraryController {
@GetMapping("/docs")
public List<LibraryDoc> queryLibraryDocs(@RequestParam Long libraryId) {
return libraryDocRepository.fetchByLibId(libraryId);
List<LibraryDoc> libraryDocs = libraryDocRepository.fetchByLibId(libraryId);
return libraryDocs.stream().sorted(
Comparator.comparing(LibraryDoc::getId).reversed()
).toList();
}
@GetMapping("/segments")
@@ -66,22 +71,19 @@ public class LibraryController {
@PutMapping("/doc")
public void updateLibraryDoc(@RequestBody @Valid DocUpdateDto docUpdateDto) {
LibraryDoc libraryDoc = new LibraryDoc();
libraryDoc.setId(docUpdateDto.id());
libraryDoc.setEnable(docUpdateDto.enable());
libraryDocRepository.merge(libraryDoc);
LibraryDoc exist = libraryDocRepository.fetchOneById(docUpdateDto.id());
exist.setEnable(docUpdateDto.enable());
libraryDocRepository.merge(exist);
}
@PostMapping(
value = "/doc/upload",
consumes = MediaType.MULTIPART_FORM_DATA_VALUE,
produces = MediaType.TEXT_PLAIN_VALUE)
@PostMapping(value = "/doc/upload", produces = MediaType.TEXT_PLAIN_VALUE)
public String uploadLibraryDoc(
@RequestPart("libraryId") Long libraryId, @RequestPart("file") MultipartFile multipartFile)
@RequestPart("libraryId") String libraryId, @RequestPart("file") MultipartFile multipartFile)
throws Exception {
String objectName = uploadService.uploadLibraryDoc(multipartFile);
Long libraryDocId =
ragService.createLibraryDocBy(libraryId, objectName, multipartFile.getOriginalFilename());
ragService.createLibraryDocBy(
Long.valueOf(libraryId), objectName, multipartFile.getOriginalFilename());
ragService.embeddingAndCreateDocSegment(libraryDocId, objectName);
return objectName;
}