mirror of
https://github.com/ccmjga/zhilu-admin
synced 2026-03-14 05:33:42 +08:00
新增知识库管理功能,包括知识库和文档的增删改查,优化文档上传和状态管理,更新相关API接口和前端页面,添加知识库和文档的视图组件。
This commit is contained in:
@@ -170,9 +170,8 @@ jooq {
|
||||
}
|
||||
forcedTypes {
|
||||
forcedType {
|
||||
name = "varchar"
|
||||
includeExpression = ".*"
|
||||
includeTypes = "INET"
|
||||
isJsonConverter = true
|
||||
includeTypes = "(?i:JSON|JSONB)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
35
backend/src/main/java/com/zl/mjga/config/JacksonConfig.java
Normal file
35
backend/src/main/java/com/zl/mjga/config/JacksonConfig.java
Normal file
@@ -0,0 +1,35 @@
|
||||
package com.zl.mjga.config;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.core.JsonGenerator;
|
||||
import com.fasterxml.jackson.databind.SerializerProvider;
|
||||
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
|
||||
import java.io.IOException;
|
||||
import org.jooq.JSON;
|
||||
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
public class JacksonConfig {
|
||||
|
||||
@Bean
|
||||
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
|
||||
return builder ->
|
||||
builder
|
||||
.serializationInclusion(JsonInclude.Include.USE_DEFAULTS)
|
||||
.serializers(new JooqJsonSerializer());
|
||||
}
|
||||
|
||||
private static class JooqJsonSerializer extends StdSerializer<JSON> {
|
||||
public JooqJsonSerializer() {
|
||||
super(JSON.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(JSON value, JsonGenerator gen, SerializerProvider serializers)
|
||||
throws IOException {
|
||||
gen.writeRawValue(value.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.zl.mjga.dto.knowledge;
|
||||
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
public record DocUpdateDto(@NotNull Long id, @NotEmpty Boolean enable) {}
|
||||
public record DocUpdateDto(@NotNull Long id, @NotNull Long libId, @NotNull Boolean enable) {}
|
||||
|
||||
Reference in New Issue
Block a user