update modules/kbase: add 13 mod 16 files

This commit is contained in:
jack ning
2025-04-29 16:22:28 +08:00
parent 085a61d81e
commit e581edb239
32 changed files with 238 additions and 210 deletions

View File

@@ -0,0 +1,4 @@
@NonNullApi
package com.bytedesk.kbase.faq;
import org.springframework.lang.NonNullApi;

View File

@@ -0,0 +1,4 @@
@NonNullApi
package com.bytedesk.kbase.kbase;
import org.springframework.lang.NonNullApi;

View File

@@ -2,7 +2,7 @@
* @Author: jackning 270580156@qq.com
* @Date: 2024-05-11 18:14:28
* @LastEditors: jackning 270580156@qq.com
* @LastEditTime: 2025-04-29 08:36:42
* @LastEditTime: 2025-04-29 16:19:26
* @Description: bytedesk.com https://github.com/Bytedesk/bytedesk
* Please be aware of the BSL license restrictions before installing Bytedesk IM
* selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license.
@@ -49,19 +49,19 @@ import lombok.experimental.SuperBuilder;
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
@EntityListeners({SplitEntityListener.class})
@Table(name = "bytedesk_kbase_llm_split")
public class SplitEntity extends BaseEntity {
@EntityListeners({ChunkEntityListener.class})
@Table(name = "bytedesk_kbase_llm_chunk")
public class ChunkEntity extends BaseEntity {
private String name;
// split 之后可能不需要这么长的 content待优化
// chunk 之后可能不需要这么长的 content待优化
@Column(columnDefinition = TypeConsts.COLUMN_TYPE_TEXT)
private String content;
@Builder.Default
@Column(name = "split_type")
private String type = SplitTypeEnum.TEXT.name();
@Column(name = "chunk_type")
private String type = ChunkTypeEnum.TEXT.name();
@Builder.Default
@Convert(converter = StringListConverter.class)

View File

@@ -18,9 +18,9 @@ import org.springframework.util.SerializationUtils;
import com.bytedesk.core.config.BytedeskEventPublisher;
import com.bytedesk.core.utils.ApplicationContextHolder;
import com.bytedesk.kbase.llm_chunk.event.SplitCreateEvent;
import com.bytedesk.kbase.llm_chunk.event.SplitDeleteEvent;
import com.bytedesk.kbase.llm_chunk.event.SplitUpdateEvent;
import com.bytedesk.kbase.llm_chunk.event.ChunkCreateEvent;
import com.bytedesk.kbase.llm_chunk.event.ChunkDeleteEvent;
import com.bytedesk.kbase.llm_chunk.event.ChunkUpdateEvent;
import jakarta.persistence.PostPersist;
import jakarta.persistence.PostUpdate;
@@ -28,29 +28,29 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
@Component
public class SplitEntityListener {
public class ChunkEntityListener {
@PostPersist
public void onPostPersist(SplitEntity split) {
log.info("SplitEntityListener onPostPersist: {}", split.getName());
SplitEntity clonedSplit = SerializationUtils.clone(split);
public void onPostPersist(ChunkEntity chunk) {
log.info("ChunkEntityListener onPostPersist: {}", chunk.getName());
ChunkEntity clonedChunk = SerializationUtils.clone(chunk);
//
BytedeskEventPublisher publisher = ApplicationContextHolder.getBean(BytedeskEventPublisher.class);
publisher.publishEvent(new SplitCreateEvent(clonedSplit));
publisher.publishEvent(new ChunkCreateEvent(clonedChunk));
}
@PostUpdate
public void onPostUpdate(SplitEntity split) {
log.info("SplitEntityListener onPostUpdate: {}", split.getName());
SplitEntity clonedSplit = SerializationUtils.clone(split);
public void onPostUpdate(ChunkEntity chunk) {
log.info("ChunkEntityListener onPostUpdate: {}", chunk.getName());
ChunkEntity clonedChunk = SerializationUtils.clone(chunk);
//
BytedeskEventPublisher publisher = ApplicationContextHolder.getBean(BytedeskEventPublisher.class);
if (split.isDeleted()) {
log.info("SplitEntityListener onPostUpdate: Split is deleted");
publisher.publishEvent(new SplitDeleteEvent(clonedSplit));
if (chunk.isDeleted()) {
log.info("ChunkEntityListener onPostUpdate: Chunk is deleted");
publisher.publishEvent(new ChunkDeleteEvent(clonedChunk));
}else {
log.info("SplitEntityListener onPostUpdate: Split is update");
publisher.publishEvent(new SplitUpdateEvent(clonedSplit));
log.info("ChunkEntityListener onPostUpdate: Chunk is update");
publisher.publishEvent(new ChunkUpdateEvent(clonedChunk));
}
}
}

View File

@@ -21,7 +21,7 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
@Component
@AllArgsConstructor
public class SplitEventListener {
public class ChunkEventListener {
// @EventListener
// public void onFileCreateEvent(FileCreateEvent event) {

View File

@@ -19,10 +19,10 @@ import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
/**
* Split导出Excel实体类
* Chunk导出Excel实体类
*/
@Data
public class SplitExcel {
public class ChunkExcel {
@ExcelProperty(value = "名称")
@ColumnWidth(30)

View File

@@ -13,10 +13,10 @@
*/
package com.bytedesk.kbase.llm_chunk;
public class SplitPermissions {
public class ChunkPermissions {
public static final String SPLIT_PREFIX = "SPLIT_";
// Split permissions
// Chunk permissions
public static final String SPLIT_CREATE = "hasAuthority('SPLIT_CREATE')";
public static final String SPLIT_READ = "hasAuthority('SPLIT_READ')";
public static final String SPLIT_UPDATE = "hasAuthority('SPLIT_UPDATE')";

View File

@@ -19,13 +19,13 @@ import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface SplitRepository extends JpaRepository<SplitEntity, Long>, JpaSpecificationExecutor<SplitEntity> {
public interface ChunkRepository extends JpaRepository<ChunkEntity, Long>, JpaSpecificationExecutor<ChunkEntity> {
Optional<SplitEntity> findByUid(String uid);
Optional<ChunkEntity> findByUid(String uid);
Optional<SplitEntity> findByDocId(String docId);
Optional<ChunkEntity> findByDocId(String docId);
// Boolean existsByPlatform(String platform);
List<SplitEntity> findByKbase_Uid(String kbUid);
List<ChunkEntity> findByKbase_Uid(String kbUid);
}

View File

@@ -32,7 +32,7 @@ import lombok.experimental.SuperBuilder;
@EqualsAndHashCode(callSuper = false)
@AllArgsConstructor
@NoArgsConstructor
public class SplitRequest extends BaseRequest {
public class ChunkRequest extends BaseRequest {
private String name;

View File

@@ -31,7 +31,7 @@ import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class SplitResponse extends BaseResponse {
public class ChunkResponse extends BaseResponse {
private String name;

View File

@@ -26,74 +26,74 @@ import jakarta.servlet.http.HttpServletResponse;
import lombok.AllArgsConstructor;
@RestController
@RequestMapping("/api/v1/llm/split")
@RequestMapping("/api/v1/llm/chunk")
@AllArgsConstructor
public class SplitRestController extends BaseRestController<SplitRequest> {
public class ChunkRestController extends BaseRestController<ChunkRequest> {
private final SplitRestService splitRestService;
private final ChunkRestService chunkRestService;
@PreAuthorize("hasAuthority('KBASE_READ')")
@Override
public ResponseEntity<?> queryByOrg(SplitRequest request) {
public ResponseEntity<?> queryByOrg(ChunkRequest request) {
Page<SplitResponse> splits = splitRestService.queryByOrg(request);
Page<ChunkResponse> chunks = chunkRestService.queryByOrg(request);
return ResponseEntity.ok(JsonResult.success(splits));
return ResponseEntity.ok(JsonResult.success(chunks));
}
@PreAuthorize("hasAuthority('KBASE_READ')")
@Override
public ResponseEntity<?> queryByUser(SplitRequest request) {
public ResponseEntity<?> queryByUser(ChunkRequest request) {
Page<SplitResponse> splits = splitRestService.queryByUser(request);
Page<ChunkResponse> chunks = chunkRestService.queryByUser(request);
return ResponseEntity.ok(JsonResult.success(splits));
return ResponseEntity.ok(JsonResult.success(chunks));
}
@PreAuthorize("hasAuthority('KBASE_READ')")
@Override
public ResponseEntity<?> queryByUid(SplitRequest request) {
public ResponseEntity<?> queryByUid(ChunkRequest request) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'queryByUid'");
}
@PreAuthorize("hasAuthority('KBASE_CREATE')")
@Override
public ResponseEntity<?> create(SplitRequest request) {
public ResponseEntity<?> create(ChunkRequest request) {
SplitResponse split = splitRestService.create(request);
ChunkResponse chunk = chunkRestService.create(request);
return ResponseEntity.ok(JsonResult.success(split));
return ResponseEntity.ok(JsonResult.success(chunk));
}
@PreAuthorize("hasAuthority('KBASE_UPDATE')")
@Override
public ResponseEntity<?> update(SplitRequest request) {
public ResponseEntity<?> update(ChunkRequest request) {
SplitResponse split = splitRestService.update(request);
ChunkResponse chunk = chunkRestService.update(request);
return ResponseEntity.ok(JsonResult.success(split));
return ResponseEntity.ok(JsonResult.success(chunk));
}
@PreAuthorize("hasAuthority('KBASE_DELETE')")
@Override
public ResponseEntity<?> delete(SplitRequest request) {
public ResponseEntity<?> delete(ChunkRequest request) {
splitRestService.delete(request);
chunkRestService.delete(request);
return ResponseEntity.ok(JsonResult.success());
}
@PreAuthorize("hasAuthority('KBASE_EXPORT')")
@Override
public Object export(SplitRequest request, HttpServletResponse response) {
public Object export(ChunkRequest request, HttpServletResponse response) {
return exportTemplate(
request,
response,
splitRestService,
SplitExcel.class,
chunkRestService,
ChunkExcel.class,
"分词",
"split"
"chunk"
);
}
}

View File

@@ -37,9 +37,9 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
@RequiredArgsConstructor
public class SplitRestService extends BaseRestServiceWithExcel<SplitEntity, SplitRequest, SplitResponse, SplitExcel> {
public class ChunkRestService extends BaseRestServiceWithExcel<ChunkEntity, ChunkRequest, ChunkResponse, ChunkExcel> {
private final SplitRepository splitRepository;
private final ChunkRepository chunkRepository;
private final ModelMapper modelMapper;
@@ -50,20 +50,20 @@ public class SplitRestService extends BaseRestServiceWithExcel<SplitEntity, Spli
private final KbaseRestService kbaseRestService;
@Override
public Page<SplitEntity> queryByOrgEntity(SplitRequest request) {
public Page<ChunkEntity> queryByOrgEntity(ChunkRequest request) {
Pageable pageable = request.getPageable();
Specification<SplitEntity> spec = SplitSpecification.search(request);
return splitRepository.findAll(spec, pageable);
Specification<ChunkEntity> spec = ChunkSpecification.search(request);
return chunkRepository.findAll(spec, pageable);
}
@Override
public Page<SplitResponse> queryByOrg(SplitRequest request) {
Page<SplitEntity> page = queryByOrgEntity(request);
public Page<ChunkResponse> queryByOrg(ChunkRequest request) {
Page<ChunkEntity> page = queryByOrgEntity(request);
return page.map(this::convertToResponse);
}
@Override
public Page<SplitResponse> queryByUser(SplitRequest request) {
public Page<ChunkResponse> queryByUser(ChunkRequest request) {
UserEntity user = authService.getUser();
if (user == null) {
throw new RuntimeException("User not found");
@@ -73,16 +73,16 @@ public class SplitRestService extends BaseRestServiceWithExcel<SplitEntity, Spli
return queryByOrg(request);
}
@Cacheable(value = "split", key = "#uid", unless = "#result==null")
@Cacheable(value = "chunk", key = "#uid", unless = "#result==null")
@Override
public Optional<SplitEntity> findByUid(String uid) {
return splitRepository.findByUid(uid);
public Optional<ChunkEntity> findByUid(String uid) {
return chunkRepository.findByUid(uid);
}
@Override
public SplitResponse create(SplitRequest request) {
// log.info("SplitRestService create: {}", request);
SplitEntity entity = SplitEntity.builder()
public ChunkResponse create(ChunkRequest request) {
// log.info("ChunkRestService create: {}", request);
ChunkEntity entity = ChunkEntity.builder()
.uid(uidUtils.getUid())
.name(request.getName())
.content(request.getContent())
@@ -113,19 +113,19 @@ public class SplitRestService extends BaseRestServiceWithExcel<SplitEntity, Spli
throw new RuntimeException("kbaseUid not found");
}
//
SplitEntity savedEntity = save(entity);
ChunkEntity savedEntity = save(entity);
if (savedEntity == null) {
throw new RuntimeException("Create split failed");
throw new RuntimeException("Create chunk failed");
}
return convertToResponse(savedEntity);
}
@Override
public SplitResponse update(SplitRequest request) {
public ChunkResponse update(ChunkRequest request) {
//
Optional<SplitEntity> optional = splitRepository.findByUid(request.getUid());
Optional<ChunkEntity> optional = chunkRepository.findByUid(request.getUid());
if (optional.isPresent()) {
SplitEntity entity = optional.get();
ChunkEntity entity = optional.get();
// modelMapper.map(request, entity);
entity.setName(request.getName());
entity.setContent(request.getContent());
@@ -139,18 +139,18 @@ public class SplitRestService extends BaseRestServiceWithExcel<SplitEntity, Spli
// entity.setType(request.getType());
// entity.setDocId(request.getDocId());
//
SplitEntity savedEntity = save(entity);
ChunkEntity savedEntity = save(entity);
if (savedEntity == null) {
throw new RuntimeException("Update split failed");
throw new RuntimeException("Update chunk failed");
}
return convertToResponse(savedEntity);
} else {
throw new RuntimeException("Split not found");
throw new RuntimeException("Chunk not found");
}
}
@Override
public SplitEntity save(SplitEntity entity) {
public ChunkEntity save(ChunkEntity entity) {
try {
return doSave(entity);
} catch (ObjectOptimisticLockingFailureException e) {
@@ -158,18 +158,18 @@ public class SplitRestService extends BaseRestServiceWithExcel<SplitEntity, Spli
}
}
protected SplitEntity doSave(SplitEntity entity) {
return splitRepository.save(entity);
protected ChunkEntity doSave(ChunkEntity entity) {
return chunkRepository.save(entity);
}
@Override
public SplitEntity handleOptimisticLockingFailureException(ObjectOptimisticLockingFailureException e,
SplitEntity entity) {
public ChunkEntity handleOptimisticLockingFailureException(ObjectOptimisticLockingFailureException e,
ChunkEntity entity) {
try {
log.warn("处理乐观锁冲突: {}", entity.getUid());
Optional<SplitEntity> latest = splitRepository.findByUid(entity.getUid());
Optional<ChunkEntity> latest = chunkRepository.findByUid(entity.getUid());
if (latest.isPresent()) {
SplitEntity latestEntity = latest.get();
ChunkEntity latestEntity = latest.get();
// 合并需要保留的数据
latestEntity.setName(entity.getName());
latestEntity.setContent(entity.getContent());
@@ -185,7 +185,7 @@ public class SplitRestService extends BaseRestServiceWithExcel<SplitEntity, Spli
// latestEntity.setStatus(entity.getStatus());
latestEntity.setDocId(entity.getDocId());
return splitRepository.save(latestEntity);
return chunkRepository.save(latestEntity);
}
} catch (Exception ex) {
log.error("无法处理乐观锁冲突: {}", ex.getMessage(), ex);
@@ -196,39 +196,39 @@ public class SplitRestService extends BaseRestServiceWithExcel<SplitEntity, Spli
public void deleteByDocList(List<String> docIdList) {
// 遍历 docIdList
for (String docId : docIdList) {
// 查找 docId 对应的所有 split
Optional<SplitEntity> splitList = splitRepository.findByDocId(docId);
// 查找 docId 对应的所有 chunk
Optional<ChunkEntity> chunkList = chunkRepository.findByDocId(docId);
// 删除
splitList.ifPresent(split -> {
split.setDeleted(true);
save(split);
chunkList.ifPresent(chunk -> {
chunk.setDeleted(true);
save(chunk);
});
}
}
@Override
public void deleteByUid(String uid) {
Optional<SplitEntity> optional = splitRepository.findByUid(uid);
Optional<ChunkEntity> optional = chunkRepository.findByUid(uid);
if (optional.isPresent()) {
optional.get().setDeleted(true);
save(optional.get());
} else {
throw new RuntimeException("Split not found");
throw new RuntimeException("Chunk not found");
}
}
@Override
public void delete(SplitRequest request) {
public void delete(ChunkRequest request) {
deleteByUid(request.getUid());
}
@Override
public SplitResponse convertToResponse(SplitEntity entity) {
return modelMapper.map(entity, SplitResponse.class);
public ChunkResponse convertToResponse(ChunkEntity entity) {
return modelMapper.map(entity, ChunkResponse.class);
}
@Override
public SplitExcel convertToExcel(SplitEntity split) {
return modelMapper.map(split, SplitExcel.class);
public ChunkExcel convertToExcel(ChunkEntity chunk) {
return modelMapper.map(chunk, ChunkExcel.class);
}
}

View File

@@ -25,9 +25,9 @@ import jakarta.persistence.criteria.Predicate;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class SplitSpecification extends BaseSpecification {
public class ChunkSpecification extends BaseSpecification {
public static Specification<SplitEntity> search(SplitRequest request) {
public static Specification<ChunkEntity> search(ChunkRequest request) {
log.info("request: {}", request);
return (root, query, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>();

View File

@@ -13,7 +13,7 @@
*/
package com.bytedesk.kbase.llm_chunk;
public enum SplitStatusEnum {
public enum ChunkStatusEnum {
NEW,
PROCESSING,
SUCCESS,

View File

@@ -13,7 +13,7 @@
*/
package com.bytedesk.kbase.llm_chunk;
public enum SplitTypeEnum {
public enum ChunkTypeEnum {
TEXT,
FILE,
WEBSITE,

View File

@@ -15,22 +15,22 @@ package com.bytedesk.kbase.llm_chunk.event;
import org.springframework.context.ApplicationEvent;
import com.bytedesk.kbase.llm_chunk.SplitEntity;
import com.bytedesk.kbase.llm_chunk.ChunkEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
public class SplitCreateEvent extends ApplicationEvent {
public class ChunkCreateEvent extends ApplicationEvent {
private static final long serialVersionUID = 1L;
private SplitEntity split;
private ChunkEntity chunk;
public SplitCreateEvent(SplitEntity split) {
super(split);
this.split = split;
public ChunkCreateEvent(ChunkEntity chunk) {
super(chunk);
this.chunk = chunk;
}
}

View File

@@ -15,21 +15,21 @@ package com.bytedesk.kbase.llm_chunk.event;
import org.springframework.context.ApplicationEvent;
import com.bytedesk.kbase.llm_chunk.SplitEntity;
import com.bytedesk.kbase.llm_chunk.ChunkEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
public class SplitDeleteEvent extends ApplicationEvent {
public class ChunkDeleteEvent extends ApplicationEvent {
private static final long serialVersionUID = 1L;
private SplitEntity split;
private ChunkEntity chunk;
public SplitDeleteEvent(SplitEntity split) {
super(split);
this.split = split;
public ChunkDeleteEvent(ChunkEntity chunk) {
super(chunk);
this.chunk = chunk;
}
}

View File

@@ -15,22 +15,22 @@ package com.bytedesk.kbase.llm_chunk.event;
import org.springframework.context.ApplicationEvent;
import com.bytedesk.kbase.llm_chunk.SplitEntity;
import com.bytedesk.kbase.llm_chunk.ChunkEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
public class SplitUpdateDocEvent extends ApplicationEvent {
public class ChunkUpdateDocEvent extends ApplicationEvent {
private static final long serialVersionUID = 1L;
private SplitEntity split;
private ChunkEntity chunk;
public SplitUpdateDocEvent(SplitEntity split) {
super(split);
this.split = split;
public ChunkUpdateDocEvent(ChunkEntity chunk) {
super(chunk);
this.chunk = chunk;
}
}

View File

@@ -15,22 +15,22 @@ package com.bytedesk.kbase.llm_chunk.event;
import org.springframework.context.ApplicationEvent;
import com.bytedesk.kbase.llm_chunk.SplitEntity;
import com.bytedesk.kbase.llm_chunk.ChunkEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
public class SplitUpdateEvent extends ApplicationEvent {
public class ChunkUpdateEvent extends ApplicationEvent {
private static final long serialVersionUID = 1L;
private SplitEntity split;
private ChunkEntity chunk;
public SplitUpdateEvent(SplitEntity split) {
super(split);
this.split = split;
public ChunkUpdateEvent(ChunkEntity chunk) {
super(chunk);
this.chunk = chunk;
}
}

View File

@@ -2,7 +2,7 @@
* @Author: jackning 270580156@qq.com
* @Date: 2024-05-11 18:14:28
* @LastEditors: jackning 270580156@qq.com
* @LastEditTime: 2025-04-23 18:24:21
* @LastEditTime: 2025-04-29 16:20:13
* @Description: bytedesk.com https://github.com/Bytedesk/bytedesk
* Please be aware of the BSL license restrictions before installing Bytedesk IM
* selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license.
@@ -22,7 +22,7 @@ import com.bytedesk.core.constant.TypeConsts;
import com.bytedesk.core.converter.StringListConverter;
import com.bytedesk.core.upload.UploadEntity;
import com.bytedesk.kbase.kbase.KbaseEntity;
import com.bytedesk.kbase.llm_chunk.SplitStatusEnum;
import com.bytedesk.kbase.llm_chunk.ChunkStatusEnum;
import jakarta.persistence.Column;
import jakarta.persistence.Convert;
@@ -88,25 +88,25 @@ public class FileEntity extends BaseEntity {
@Column(name = "is_llm_qa_deleted")
private boolean llmQaDeleted = false;
// 是否开启自动llm split切块
// 是否开启自动llm Chunk切块
@Builder.Default
@Column(name = "is_auto_llm_split")
private boolean autoLlmSplit = false;
@Column(name = "is_auto_llm_Chunk")
private boolean autoLlmChunk = false;
// 是否已经自动llm split切块
// 是否已经自动llm Chunk切块
@Builder.Default
@Column(name = "is_llm_splitted")
private boolean llmSplitted = false;
@Column(name = "is_llm_Chunkted")
private boolean llmChunkted = false;
// 是否开启自动删除llm split切块
// 是否开启自动删除llm Chunk切块
@Builder.Default
@Column(name = "is_auto_delete_llm_split")
private boolean autoDeleteLlmSplit = false;
@Column(name = "is_auto_delete_llm_Chunk")
private boolean autoDeleteLlmChunk = false;
// 是否已经删除llm split切块
// 是否已经删除llm Chunk切块
@Builder.Default
@Column(name = "is_llm_split_deleted")
private boolean llmSplitDeleted = false;
@Column(name = "is_llm_Chunk_deleted")
private boolean llmChunkDeleted = false;
// 有效开始日期
@Builder.Default
@@ -118,7 +118,7 @@ public class FileEntity extends BaseEntity {
private LocalDateTime endDate = LocalDateTime.now().plusYears(100);
@Builder.Default
private String status = SplitStatusEnum.NEW.name();
private String status = ChunkStatusEnum.NEW.name();
private String categoryUid; // 所属分类

View File

@@ -2,7 +2,7 @@
* @Author: jackning 270580156@qq.com
* @Date: 2025-02-25 09:44:18
* @LastEditors: jackning 270580156@qq.com
* @LastEditTime: 2025-04-23 18:04:53
* @LastEditTime: 2025-04-29 16:20:45
* @Description: bytedesk.com https://github.com/Bytedesk/bytedesk
* Please be aware of the BSL license restrictions before installing Bytedesk IM
* selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license.
@@ -48,7 +48,7 @@ public class FileEventListener {
.fileName(upload.getFileName())
.fileUrl(upload.getFileUrl())
.autoGenerateLlmQa(extra.isAutoGenerateLlmQa())
.autoLlmSplit(extra.isAutoLlmSplit())
.autoLlmChunk(extra.isAutoLlmChunk())
.categoryUid(upload.getCategoryUid())
.kbUid(upload.getKbUid())
.userUid(userProtobuf.getUid())

View File

@@ -2,7 +2,7 @@
* @Author: jackning 270580156@qq.com
* @Date: 2024-05-11 18:26:04
* @LastEditors: jackning 270580156@qq.com
* @LastEditTime: 2025-04-23 18:22:29
* @LastEditTime: 2025-04-29 16:20:17
* @Description: bytedesk.com https://github.com/Bytedesk/bytedesk
* Please be aware of the BSL license restrictions before installing Bytedesk IM
* selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license.
@@ -18,7 +18,7 @@ import java.util.List;
import java.util.ArrayList;
import com.bytedesk.core.base.BaseRequest;
import com.bytedesk.kbase.llm_chunk.SplitStatusEnum;
import com.bytedesk.kbase.llm_chunk.ChunkStatusEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -63,21 +63,21 @@ public class FileRequest extends BaseRequest {
@Builder.Default
private Boolean llmQaDeleted = false;
// 是否开启自动llm split切块
// 是否开启自动llm Chunk切块
@Builder.Default
private Boolean autoLlmSplit = false;
private Boolean autoLlmChunk = false;
// 是否已经自动llm split切块
// 是否已经自动llm Chunk切块
@Builder.Default
private Boolean llmSplitted = false;
private Boolean llmChunkted = false;
// 是否开启自动删除llm split切块
// 是否开启自动删除llm Chunk切块
@Builder.Default
private Boolean autoDeleteLlmSplit = false;
private Boolean autoDeleteLlmChunk = false;
// 是否已经删除llm split切块
// 是否已经删除llm Chunk切块
@Builder.Default
private Boolean llmSplitDeleted = false;
private Boolean llmChunkDeleted = false;
// 有效开始日期
@Builder.Default
@@ -89,7 +89,7 @@ public class FileRequest extends BaseRequest {
private LocalDateTime endDate = LocalDateTime.now().plusYears(100);
@Builder.Default
private String status = SplitStatusEnum.NEW.name();
private String status = ChunkStatusEnum.NEW.name();
// 所属分类
private String categoryUid;

View File

@@ -2,7 +2,7 @@
* @Author: jackning 270580156@qq.com
* @Date: 2025-04-23 16:59:08
* @LastEditors: jackning 270580156@qq.com
* @LastEditTime: 2025-04-23 17:02:46
* @LastEditTime: 2025-04-29 16:21:02
* @Description: bytedesk.com https://github.com/Bytedesk/bytedesk
* Please be aware of the BSL license restrictions before installing Bytedesk IM
* selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license.
@@ -33,7 +33,7 @@ public class FileUploadExtra implements Serializable {
private String autoGenerateLlmQa;
// 使用 "true" 或 "false" 来表示布尔值
private String autoLlmSplit;
private String autoLlmChunk;
// 转换为布尔值
public boolean isAutoGenerateLlmQa() {
@@ -41,8 +41,8 @@ public class FileUploadExtra implements Serializable {
}
// 转换为布尔值
public boolean isAutoLlmSplit() {
return Boolean.parseBoolean(autoLlmSplit);
public boolean isAutoLlmChunk() {
return Boolean.parseBoolean(autoLlmChunk);
}
// fromJson

View File

@@ -0,0 +1,5 @@
@NonNullApi
package com.bytedesk.kbase.llm_file;
import org.springframework.lang.NonNullApi;

View File

@@ -21,7 +21,7 @@ import com.bytedesk.core.base.BaseEntity;
import com.bytedesk.core.constant.TypeConsts;
import com.bytedesk.core.converter.StringListConverter;
import com.bytedesk.kbase.kbase.KbaseEntity;
import com.bytedesk.kbase.llm_chunk.SplitStatusEnum;
import com.bytedesk.kbase.llm_chunk.ChunkStatusEnum;
import com.bytedesk.core.message.MessageTypeEnum;
import jakarta.persistence.Column;
@@ -61,7 +61,7 @@ public class TextEntity extends BaseEntity {
private String type = MessageTypeEnum.TEXT.name();
@Builder.Default
private String status = SplitStatusEnum.NEW.name();
private String status = ChunkStatusEnum.NEW.name();
@Builder.Default
@Convert(converter = StringListConverter.class)
@@ -93,25 +93,25 @@ public class TextEntity extends BaseEntity {
@Column(name = "is_llm_qa_deleted")
private boolean llmQaDeleted = false;
// 是否开启自动llm split切块
// 是否开启自动llm Chunk切块
@Builder.Default
@Column(name = "is_auto_llm_split")
private boolean autoLlmSplit = false;
@Column(name = "is_auto_llm_Chunk")
private boolean autoLlmChunk = false;
// 是否已经自动llm split切块
// 是否已经自动llm Chunk切块
@Builder.Default
@Column(name = "is_llm_splitted")
private boolean llmSplitted = false;
@Column(name = "is_llm_Chunkted")
private boolean llmChunkted = false;
// is auto delete llm split
// is auto delete llm Chunk
@Builder.Default
@Column(name = "is_auto_delete_llm_split")
private boolean autoDeleteLlmSplit = false;
@Column(name = "is_auto_delete_llm_Chunk")
private boolean autoDeleteLlmChunk = false;
// 是否已经删除llm split切块
// 是否已经删除llm Chunk切块
@Builder.Default
@Column(name = "is_llm_split_deleted")
private boolean llmSplitDeleted = false;
@Column(name = "is_llm_Chunk_deleted")
private boolean llmChunkDeleted = false;
// 有效开始日期
@Builder.Default

View File

@@ -18,7 +18,7 @@ import java.util.List;
import java.util.ArrayList;
import com.bytedesk.core.base.BaseRequest;
import com.bytedesk.kbase.llm_chunk.SplitStatusEnum;
import com.bytedesk.kbase.llm_chunk.ChunkStatusEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -66,21 +66,21 @@ public class TextRequest extends BaseRequest {
@Builder.Default
private Boolean llmQaDeleted = false;
// 是否开启自动llm split切块
// 是否开启自动llm Chunk切块
@Builder.Default
private Boolean autoLlmSplit = false;
private Boolean autoLlmChunk = false;
// 是否已经自动llm split切块
// 是否已经自动llm Chunk切块
@Builder.Default
private Boolean llmSplitted = false;
private Boolean llmChunkted = false;
// 是否开启自动删除llm split切块
// 是否开启自动删除llm Chunk切块
@Builder.Default
private Boolean autoDeleteLlmSplit = false;
private Boolean autoDeleteLlmChunk = false;
// 是否已经删除llm split切块
// 是否已经删除llm Chunk切块
@Builder.Default
private Boolean llmSplitDeleted = false;
private Boolean llmChunkDeleted = false;
// 有效开始日期
@Builder.Default
@@ -92,7 +92,7 @@ public class TextRequest extends BaseRequest {
private LocalDateTime endDate = LocalDateTime.now().plusYears(100);
@Builder.Default
private String status = SplitStatusEnum.NEW.name();
private String status = ChunkStatusEnum.NEW.name();
private String categoryUid; // 所属分类

View File

@@ -2,7 +2,7 @@
* @Author: jackning 270580156@qq.com
* @Date: 2024-05-11 18:26:12
* @LastEditors: jackning 270580156@qq.com
* @LastEditTime: 2025-04-23 17:13:45
* @LastEditTime: 2025-04-29 16:20:27
* @Description: bytedesk.com https://github.com/Bytedesk/bytedesk
* Please be aware of the BSL license restrictions before installing Bytedesk IM
* selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license.
@@ -18,7 +18,7 @@ import java.util.ArrayList;
import java.util.List;
import com.bytedesk.core.base.BaseResponse;
import com.bytedesk.kbase.llm_chunk.SplitStatusEnum;
import com.bytedesk.kbase.llm_chunk.ChunkStatusEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -61,20 +61,20 @@ public class TextResponse extends BaseResponse {
// 是否已经删除llm问答
private Boolean llmQaDeleted;
// 是否开启自动llm split切块
private Boolean autoLlmSplit;
// 是否开启自动llm Chunk切块
private Boolean autoLlmChunk;
// 是否已经自动llm split切块
private Boolean llmSplitted;
// 是否已经自动llm Chunk切块
private Boolean llmChunkted;
// 是否开启自动删除llm split切块
private Boolean autoDeleteLlmSplit;
// 是否开启自动删除llm Chunk切块
private Boolean autoDeleteLlmChunk;
// 是否已经删除llm split切块
private Boolean llmSplittedDeleted;
// 是否已经删除llm Chunk切块
private Boolean llmChunktedDeleted;
@Builder.Default
private String status = SplitStatusEnum.NEW.name();
private String status = ChunkStatusEnum.NEW.name();
private String categoryUid; // 所属分类

View File

@@ -0,0 +1,5 @@
@NonNullApi
package com.bytedesk.kbase.llm_text;
import org.springframework.lang.NonNullApi;

View File

@@ -2,7 +2,7 @@
* @Author: jackning 270580156@qq.com
* @Date: 2024-05-11 18:14:28
* @LastEditors: jackning 270580156@qq.com
* @LastEditTime: 2025-04-23 18:32:26
* @LastEditTime: 2025-04-29 16:20:31
* @Description: bytedesk.com https://github.com/Bytedesk/bytedesk
* Please be aware of the BSL license restrictions before installing Bytedesk IM
* selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license.
@@ -21,7 +21,7 @@ import com.bytedesk.core.base.BaseEntity;
import com.bytedesk.core.constant.TypeConsts;
import com.bytedesk.core.converter.StringListConverter;
import com.bytedesk.kbase.kbase.KbaseEntity;
import com.bytedesk.kbase.llm_chunk.SplitStatusEnum;
import com.bytedesk.kbase.llm_chunk.ChunkStatusEnum;
import jakarta.persistence.Column;
import jakarta.persistence.Convert;
@@ -67,7 +67,7 @@ public class WebsiteEntity extends BaseEntity {
// private String type = MessageTypeEnum.TEXT.name();
@Builder.Default
private String status = SplitStatusEnum.NEW.name();
private String status = ChunkStatusEnum.NEW.name();
@Builder.Default
@Convert(converter = StringListConverter.class)
@@ -99,25 +99,25 @@ public class WebsiteEntity extends BaseEntity {
@Column(name = "is_llm_qa_deleted")
private boolean llmQaDeleted = false;
// 是否开启自动llm split切块
// 是否开启自动llm Chunk切块
@Builder.Default
@Column(name = "is_auto_llm_split")
private boolean autoLlmSplit = false;
@Column(name = "is_auto_llm_Chunk")
private boolean autoLlmChunk = false;
// 是否已经自动llm split切块
// 是否已经自动llm Chunk切块
@Builder.Default
@Column(name = "is_llm_splitted")
private boolean llmSplitted = false;
@Column(name = "is_llm_Chunkted")
private boolean llmChunkted = false;
// is auto delete llm split
// is auto delete llm Chunk
@Builder.Default
@Column(name = "is_auto_delete_llm_split")
private boolean autoDeleteLlmSplit = false;
@Column(name = "is_auto_delete_llm_Chunk")
private boolean autoDeleteLlmChunk = false;
// 是否已经删除llm split切块
// 是否已经删除llm Chunk切块
@Builder.Default
@Column(name = "is_llm_split_deleted")
private boolean llmSplitDeleted = false;
@Column(name = "is_llm_Chunk_deleted")
private boolean llmChunkDeleted = false;
// 有效开始日期
@Builder.Default

View File

@@ -0,0 +1,5 @@
@NonNullApi
package com.bytedesk.kbase.llm_website;
import org.springframework.lang.NonNullApi;

View File

@@ -0,0 +1,5 @@
@NonNullApi
package com.bytedesk.kbase.quick_reply;
import org.springframework.lang.NonNullApi;

View File

@@ -2,7 +2,7 @@
* @Author: jackning 270580156@qq.com
* @Date: 2024-01-29 16:17:36
* @LastEditors: jackning 270580156@qq.com
* @LastEditTime: 2025-04-16 18:09:49
* @LastEditTime: 2025-04-29 15:52:59
* @Description: bytedesk.com https://github.com/Bytedesk/bytedesk
* Please be aware of the BSL license restrictions before installing Bytedesk IM
* selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license.
@@ -240,7 +240,7 @@ public class PageRouteController {
/**
* visitor
* 访客对话窗口
* http://127.0.0.1:9003/chat
* http://127.0.0.1:9003/chat/
*/
@GetMapping({
"/chat",