first commit
This commit is contained in:
+35
@@ -0,0 +1,35 @@
|
||||
package org.dromara.knowledge.config;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
@ConfigurationProperties(prefix = "rag")
|
||||
public class RagConfigProperties {
|
||||
private boolean enabled = true;
|
||||
private String defaultEmbeddingModel = "text-embedding";
|
||||
private String defaultVectorBackend = "db";
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
}
|
||||
|
||||
public void setEnabled(boolean enabled) {
|
||||
this.enabled = enabled;
|
||||
}
|
||||
|
||||
public String getDefaultEmbeddingModel() {
|
||||
return defaultEmbeddingModel;
|
||||
}
|
||||
|
||||
public void setDefaultEmbeddingModel(String defaultEmbeddingModel) {
|
||||
this.defaultEmbeddingModel = defaultEmbeddingModel;
|
||||
}
|
||||
|
||||
public String getDefaultVectorBackend() {
|
||||
return defaultVectorBackend;
|
||||
}
|
||||
|
||||
public void setDefaultVectorBackend(String defaultVectorBackend) {
|
||||
this.defaultVectorBackend = defaultVectorBackend;
|
||||
}
|
||||
}
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package org.dromara.knowledge.config;
|
||||
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
@EnableConfigurationProperties(RagConfigProperties.class)
|
||||
public class RagConfiguration {
|
||||
}
|
||||
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
package org.dromara.knowledge.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeAttachBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeAttachVo;
|
||||
import org.dromara.knowledge.service.KnowledgeAttachService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库附件控制器
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/knowledge/attach")
|
||||
public class KnowledgeAttachController extends BaseController {
|
||||
|
||||
private final KnowledgeAttachService knowledgeAttachService;
|
||||
|
||||
/**
|
||||
* 查询知识库附件列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:attach:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<KnowledgeAttachVo> list(KnowledgeAttachBo bo, PageQuery pageQuery) {
|
||||
return knowledgeAttachService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出知识库附件列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:attach:export")
|
||||
@Log(title = "知识库附件", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(KnowledgeAttachBo bo, HttpServletResponse response) {
|
||||
List<KnowledgeAttachVo> list = knowledgeAttachService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "知识库附件数据", KnowledgeAttachVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取知识库附件详细信息
|
||||
*
|
||||
* @param attachId 附件ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:attach:query")
|
||||
@GetMapping("/{attachId}")
|
||||
public R<KnowledgeAttachVo> getInfo(@PathVariable Long attachId) {
|
||||
return R.ok(knowledgeAttachService.queryById(attachId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增知识库附件
|
||||
*/
|
||||
@SaCheckPermission("knowledge:attach:add")
|
||||
@Log(title = "知识库附件", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public R<Void> add(@Validated @RequestBody KnowledgeAttachBo bo) {
|
||||
return toAjax(knowledgeAttachService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改知识库附件
|
||||
*/
|
||||
@SaCheckPermission("knowledge:attach:edit")
|
||||
@Log(title = "知识库附件", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public R<Void> edit(@Validated @RequestBody KnowledgeAttachBo bo) {
|
||||
return toAjax(knowledgeAttachService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除知识库附件
|
||||
*
|
||||
* @param attachIds 附件ID串
|
||||
*/
|
||||
@SaCheckPermission("knowledge:attach:remove")
|
||||
@Log(title = "知识库附件", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{attachIds}")
|
||||
public R<Void> remove(@PathVariable Long[] attachIds) {
|
||||
return toAjax(knowledgeAttachService.deleteWithValidByIds(List.of(attachIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据知识库ID查询附件列表
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:attach:query")
|
||||
@GetMapping("/knowledge/{knowledgeId}")
|
||||
public R<List<KnowledgeAttachVo>> getByKnowledgeId(@PathVariable String knowledgeId) {
|
||||
return R.ok(knowledgeAttachService.queryListByKnowledgeId(knowledgeId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据文档ID查询附件信息
|
||||
*
|
||||
* @param documentId 文档ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:attach:query")
|
||||
@GetMapping("/document/{documentId}")
|
||||
public R<KnowledgeAttachVo> getByDocumentId(@PathVariable String documentId) {
|
||||
return R.ok(knowledgeAttachService.queryByDocId(documentId));
|
||||
}
|
||||
}
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
package org.dromara.knowledge.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeFragmentBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeFragmentVo;
|
||||
import org.dromara.knowledge.service.KnowledgeFragmentService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库片段控制器
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/knowledge/fragment")
|
||||
public class KnowledgeFragmentController extends BaseController {
|
||||
|
||||
private final KnowledgeFragmentService knowledgeFragmentService;
|
||||
|
||||
/**
|
||||
* 查询知识库片段列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:fragment:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<KnowledgeFragmentVo> list(KnowledgeFragmentBo bo, PageQuery pageQuery) {
|
||||
return knowledgeFragmentService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出知识库片段列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:fragment:export")
|
||||
@Log(title = "知识库片段", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(KnowledgeFragmentBo bo, HttpServletResponse response) {
|
||||
List<KnowledgeFragmentVo> list = knowledgeFragmentService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "知识库片段数据", KnowledgeFragmentVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取知识库片段详细信息
|
||||
*
|
||||
* @param fragmentId 片段ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:fragment:query")
|
||||
@GetMapping("/{fragmentId}")
|
||||
public R<KnowledgeFragmentVo> getInfo(@PathVariable Long fragmentId) {
|
||||
return R.ok(knowledgeFragmentService.queryById(fragmentId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增知识库片段
|
||||
*/
|
||||
@SaCheckPermission("knowledge:fragment:add")
|
||||
@Log(title = "知识库片段", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public R<Void> add(@Validated @RequestBody KnowledgeFragmentBo bo) {
|
||||
return toAjax(knowledgeFragmentService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改知识库片段
|
||||
*/
|
||||
@SaCheckPermission("knowledge:fragment:edit")
|
||||
@Log(title = "知识库片段", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public R<Void> edit(@Validated @RequestBody KnowledgeFragmentBo bo) {
|
||||
return toAjax(knowledgeFragmentService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除知识库片段
|
||||
*
|
||||
* @param fragmentIds 片段ID串
|
||||
*/
|
||||
@SaCheckPermission("knowledge:fragment:remove")
|
||||
@Log(title = "知识库片段", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{fragmentIds}")
|
||||
public R<Void> remove(@PathVariable Long[] fragmentIds) {
|
||||
return toAjax(knowledgeFragmentService.deleteWithValidByIds(List.of(fragmentIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据知识库ID查询片段列表
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:fragment:query")
|
||||
@GetMapping("/knowledge/{knowledgeId}")
|
||||
public R<List<KnowledgeFragmentVo>> getByKnowledgeId(@PathVariable Long knowledgeId) {
|
||||
return R.ok(knowledgeFragmentService.queryListByKnowledgeId(knowledgeId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据文档ID查询片段列表
|
||||
*
|
||||
* @param documentId 文档ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:fragment:query")
|
||||
@GetMapping("/document/{documentId}")
|
||||
public R<List<KnowledgeFragmentVo>> getByDocumentId(@PathVariable String documentId) {
|
||||
return R.ok(knowledgeFragmentService.queryListByDocId(documentId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据片段ID查询片段信息
|
||||
*
|
||||
* @param fragmentId 片段ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:fragment:query")
|
||||
@GetMapping("/fragment/{fragmentId}")
|
||||
public R<KnowledgeFragmentVo> getByFragmentId(@PathVariable String fragmentId) {
|
||||
return R.ok(knowledgeFragmentService.queryByFid(fragmentId));
|
||||
}
|
||||
}
|
||||
+165
@@ -0,0 +1,165 @@
|
||||
package org.dromara.knowledge.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeHitLogBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeHitLogVo;
|
||||
import org.dromara.knowledge.service.KnowledgeHitLogService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库命中日志控制器
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/knowledge/hitlog")
|
||||
public class KnowledgeHitLogController extends BaseController {
|
||||
|
||||
private final KnowledgeHitLogService knowledgeHitLogService;
|
||||
|
||||
/**
|
||||
* 查询知识库命中日志列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:hitlog:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<KnowledgeHitLogVo> list(KnowledgeHitLogBo bo, PageQuery pageQuery) {
|
||||
return knowledgeHitLogService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出知识库命中日志列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:hitlog:export")
|
||||
@Log(title = "知识库命中日志", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(KnowledgeHitLogBo bo, HttpServletResponse response) {
|
||||
List<KnowledgeHitLogVo> list = knowledgeHitLogService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "知识库命中日志", KnowledgeHitLogVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取知识库命中日志详细信息
|
||||
*
|
||||
* @param logId 日志ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:hitlog:query")
|
||||
@GetMapping("/{logId}")
|
||||
public R<KnowledgeHitLogVo> getInfo(@PathVariable Long logId) {
|
||||
return R.ok(knowledgeHitLogService.queryById(logId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增知识库命中日志
|
||||
*/
|
||||
@SaCheckPermission("knowledge:hitlog:add")
|
||||
@Log(title = "知识库命中日志", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public R<Void> add(@Validated @RequestBody KnowledgeHitLogBo bo) {
|
||||
return toAjax(knowledgeHitLogService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改知识库命中日志
|
||||
*/
|
||||
@SaCheckPermission("knowledge:hitlog:edit")
|
||||
@Log(title = "知识库命中日志", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public R<Void> edit(@Validated @RequestBody KnowledgeHitLogBo bo) {
|
||||
return toAjax(knowledgeHitLogService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除知识库命中日志
|
||||
*
|
||||
* @param logIds 日志ID数组
|
||||
*/
|
||||
@SaCheckPermission("knowledge:hitlog:remove")
|
||||
@Log(title = "知识库命中日志", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{logIds}")
|
||||
public R<Void> remove(@PathVariable Long[] logIds) {
|
||||
return toAjax(knowledgeHitLogService.deleteWithValidByIds(List.of(logIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据知识库ID查询命中日志列表
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:hitlog:query")
|
||||
@GetMapping("/knowledge/{knowledgeId}")
|
||||
public R<List<KnowledgeHitLogVo>> getByKnowledgeId(@PathVariable String knowledgeId) {
|
||||
return R.ok(knowledgeHitLogService.queryByKnowledgeId(knowledgeId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据会话ID查询命中日志列表
|
||||
*
|
||||
* @param sessionId 会话ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:hitlog:query")
|
||||
@GetMapping("/session/{sessionId}")
|
||||
public R<List<KnowledgeHitLogVo>> getBySessionId(@PathVariable String sessionId) {
|
||||
return R.ok(knowledgeHitLogService.queryBySessionId(sessionId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据片段ID查询命中日志列表
|
||||
*
|
||||
* @param fragmentId 片段ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:hitlog:query")
|
||||
@GetMapping("/fragment/{fragmentId}")
|
||||
public R<List<KnowledgeHitLogVo>> getByFragmentId(@PathVariable String fragmentId) {
|
||||
return R.ok(knowledgeHitLogService.queryByFragmentId(fragmentId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据查询文本查询命中日志列表
|
||||
*
|
||||
* @param queryText 查询文本
|
||||
*/
|
||||
@SaCheckPermission("knowledge:hitlog:query")
|
||||
@GetMapping("/query/{queryText}")
|
||||
public R<List<KnowledgeHitLogVo>> getByQueryText(@PathVariable String queryText) {
|
||||
return R.ok(knowledgeHitLogService.queryByQueryText(queryText));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取热门查询列表
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param limit 限制数量
|
||||
*/
|
||||
@SaCheckPermission("knowledge:hitlog:query")
|
||||
@GetMapping("/popular")
|
||||
public R<java.util.List<java.util.Map<String, Object>>> getPopularQueries(
|
||||
@RequestParam(required = false) String knowledgeId,
|
||||
@RequestParam(defaultValue = "10") Integer limit) {
|
||||
return R.ok(knowledgeHitLogService.getPopularQueries(knowledgeId, limit));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取平均响应时间
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:hitlog:query")
|
||||
@GetMapping("/avg-response-time")
|
||||
public R<Double> getAverageResponseTime(@RequestParam(required = false) String knowledgeId) {
|
||||
return R.ok(knowledgeHitLogService.getAverageResponseTime(knowledgeId));
|
||||
}
|
||||
}
|
||||
+175
@@ -0,0 +1,175 @@
|
||||
package org.dromara.knowledge.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeInfoBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeInfoVo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeSearchResultVo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeStatusVo;
|
||||
import org.dromara.knowledge.service.KnowledgeInfoService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库信息控制器
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/knowledge/info")
|
||||
public class KnowledgeInfoController extends BaseController {
|
||||
|
||||
private final KnowledgeInfoService knowledgeInfoService;
|
||||
|
||||
/**
|
||||
* 查询知识库信息列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:info:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<KnowledgeInfoVo> list(KnowledgeInfoBo bo, PageQuery pageQuery) {
|
||||
return knowledgeInfoService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出知识库信息列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:info:export")
|
||||
@Log(title = "知识库信息", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(KnowledgeInfoBo bo, HttpServletResponse response) {
|
||||
List<KnowledgeInfoVo> list = knowledgeInfoService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "知识库信息数据", KnowledgeInfoVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取知识库信息详细信息
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:info:query")
|
||||
@GetMapping("/{knowledgeId}")
|
||||
public R<KnowledgeInfoVo> getInfo(@PathVariable Long knowledgeId) {
|
||||
return R.ok(knowledgeInfoService.queryById(knowledgeId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增知识库信息
|
||||
*/
|
||||
@SaCheckPermission("knowledge:info:add")
|
||||
@Log(title = "知识库信息", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public R<Void> add(@Validated @RequestBody KnowledgeInfoBo bo) {
|
||||
return toAjax(knowledgeInfoService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改知识库信息
|
||||
*/
|
||||
@SaCheckPermission("knowledge:info:edit")
|
||||
@Log(title = "知识库信息", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public R<Void> edit(@Validated @RequestBody KnowledgeInfoBo bo) {
|
||||
return toAjax(knowledgeInfoService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除知识库信息
|
||||
*
|
||||
* @param knowledgeIds 知识库ID串
|
||||
*/
|
||||
@SaCheckPermission("knowledge:info:remove")
|
||||
@Log(title = "知识库信息", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{knowledgeIds}")
|
||||
public R<Void> remove(@PathVariable Long[] knowledgeIds) {
|
||||
return toAjax(knowledgeInfoService.deleteWithValidByIds(List.of(knowledgeIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户ID查询知识库信息列表
|
||||
*
|
||||
* @param userId 用户ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:info:query")
|
||||
@GetMapping("/user/{userId}")
|
||||
public R<List<KnowledgeInfoVo>> getByUserId(@PathVariable Long userId) {
|
||||
return R.ok(knowledgeInfoService.queryListByUserId(userId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据知识库ID查询知识库信息
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:info:query")
|
||||
@GetMapping("/knowledge/{knowledgeId}")
|
||||
public R<KnowledgeInfoVo> getByKnowledgeId(@PathVariable Long knowledgeId) {
|
||||
return R.ok(knowledgeInfoService.queryByKnowledgeId(knowledgeId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传文档到知识库
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param file 上传的文件
|
||||
*/
|
||||
@SaCheckPermission("knowledge:info:upload")
|
||||
@Log(title = "知识库文档上传", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/{knowledgeId}/upload")
|
||||
public R<String> uploadDocument(@PathVariable String knowledgeId,
|
||||
@RequestParam("file") MultipartFile file) {
|
||||
return R.ok(knowledgeInfoService.uploadDocument(knowledgeId, file));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量上传文档到知识库
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param files 上传的文件列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:info:upload")
|
||||
@Log(title = "知识库批量文档上传", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/{knowledgeId}/batch-upload")
|
||||
public R<List<String>> batchUploadDocuments(@PathVariable String knowledgeId,
|
||||
@RequestParam("files") MultipartFile[] files) {
|
||||
return R.ok(knowledgeInfoService.batchUploadDocuments(knowledgeId, files));
|
||||
}
|
||||
|
||||
/**
|
||||
* 检索知识库
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param query 查询文本
|
||||
* @param limit 返回结果数量限制
|
||||
*/
|
||||
@SaCheckPermission("knowledge:info:search")
|
||||
@PostMapping("/{knowledgeId}/search")
|
||||
public R<List<KnowledgeSearchResultVo>> searchKnowledge(@PathVariable String knowledgeId,
|
||||
@RequestParam String query,
|
||||
@RequestParam(defaultValue = "10") Integer limit) {
|
||||
return R.ok(knowledgeInfoService.searchKnowledge(knowledgeId, query, limit));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取知识库处理状态
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:info:query")
|
||||
@GetMapping("/{knowledgeId}/status")
|
||||
public R<KnowledgeStatusVo> getKnowledgeStatus(@PathVariable String knowledgeId) {
|
||||
return R.ok(knowledgeInfoService.getKnowledgeStatus(knowledgeId));
|
||||
}
|
||||
}
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
package org.dromara.knowledge.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeJobBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeJobVo;
|
||||
import org.dromara.knowledge.service.KnowledgeJobService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库任务控制器
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/knowledge/job")
|
||||
public class KnowledgeJobController extends BaseController {
|
||||
|
||||
private final KnowledgeJobService knowledgeJobService;
|
||||
|
||||
/**
|
||||
* 查询知识库任务列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:job:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<KnowledgeJobVo> list(KnowledgeJobBo bo, PageQuery pageQuery) {
|
||||
return knowledgeJobService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出知识库任务列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:job:export")
|
||||
@Log(title = "知识库任务", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(KnowledgeJobBo bo, HttpServletResponse response) {
|
||||
List<KnowledgeJobVo> list = knowledgeJobService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "知识库任务", KnowledgeJobVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取知识库任务详细信息
|
||||
*
|
||||
* @param jobId 任务ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:job:query")
|
||||
@GetMapping("/{jobId}")
|
||||
public R<KnowledgeJobVo> getInfo(@PathVariable Long jobId) {
|
||||
return R.ok(knowledgeJobService.queryById(jobId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增知识库任务
|
||||
*/
|
||||
@SaCheckPermission("knowledge:job:add")
|
||||
@Log(title = "知识库任务", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public R<Void> add(@Validated @RequestBody KnowledgeJobBo bo) {
|
||||
return toAjax(knowledgeJobService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改知识库任务
|
||||
*/
|
||||
@SaCheckPermission("knowledge:job:edit")
|
||||
@Log(title = "知识库任务", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public R<Void> edit(@Validated @RequestBody KnowledgeJobBo bo) {
|
||||
return toAjax(knowledgeJobService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除知识库任务
|
||||
*
|
||||
* @param jobIds 任务ID数组
|
||||
*/
|
||||
@SaCheckPermission("knowledge:job:remove")
|
||||
@Log(title = "知识库任务", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{jobIds}")
|
||||
public R<Void> remove(@PathVariable Long[] jobIds) {
|
||||
return toAjax(knowledgeJobService.deleteWithValidByIds(List.of(jobIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据知识库ID查询任务列表
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:job:query")
|
||||
@GetMapping("/knowledge/{knowledgeId}")
|
||||
public R<List<KnowledgeJobVo>> getByKnowledgeId(@PathVariable String knowledgeId) {
|
||||
return R.ok(knowledgeJobService.queryByKnowledgeId(knowledgeId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据任务状态查询任务列表
|
||||
*
|
||||
* @param status 任务状态
|
||||
*/
|
||||
@SaCheckPermission("knowledge:job:query")
|
||||
@GetMapping("/status/{status}")
|
||||
public R<List<KnowledgeJobVo>> getByStatus(@PathVariable Integer status) {
|
||||
return R.ok(knowledgeJobService.queryByStatus(status));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据任务类型查询任务列表
|
||||
*
|
||||
* @param jobType 任务类型
|
||||
*/
|
||||
@SaCheckPermission("knowledge:job:query")
|
||||
@GetMapping("/type/{jobType}")
|
||||
public R<List<KnowledgeJobVo>> getByJobType(@PathVariable String jobType) {
|
||||
return R.ok(knowledgeJobService.queryByJobType(jobType));
|
||||
}
|
||||
}
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
package org.dromara.knowledge.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgePromptTemplateBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgePromptTemplateVo;
|
||||
import org.dromara.knowledge.service.KnowledgePromptTemplateService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库提示模板控制器
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/knowledge/prompt")
|
||||
public class KnowledgePromptTemplateController extends BaseController {
|
||||
|
||||
private final KnowledgePromptTemplateService knowledgePromptTemplateService;
|
||||
|
||||
/**
|
||||
* 查询知识库提示模板列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:prompt:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<KnowledgePromptTemplateVo> list(KnowledgePromptTemplateBo bo, PageQuery pageQuery) {
|
||||
return knowledgePromptTemplateService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出知识库提示模板列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:prompt:export")
|
||||
@Log(title = "知识库提示模板", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(KnowledgePromptTemplateBo bo, HttpServletResponse response) {
|
||||
List<KnowledgePromptTemplateVo> list = knowledgePromptTemplateService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "知识库提示模板数据", KnowledgePromptTemplateVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取知识库提示模板详细信息
|
||||
*
|
||||
* @param templateId 模板ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:prompt:query")
|
||||
@GetMapping("/{templateId}")
|
||||
public R<KnowledgePromptTemplateVo> getInfo(@PathVariable Long templateId) {
|
||||
return R.ok(knowledgePromptTemplateService.queryById(templateId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增知识库提示模板
|
||||
*/
|
||||
@SaCheckPermission("knowledge:prompt:add")
|
||||
@Log(title = "知识库提示模板", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public R<Void> add(@Validated @RequestBody KnowledgePromptTemplateBo bo) {
|
||||
return toAjax(knowledgePromptTemplateService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改知识库提示模板
|
||||
*/
|
||||
@SaCheckPermission("knowledge:prompt:edit")
|
||||
@Log(title = "知识库提示模板", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public R<Void> edit(@Validated @RequestBody KnowledgePromptTemplateBo bo) {
|
||||
return toAjax(knowledgePromptTemplateService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除知识库提示模板
|
||||
*
|
||||
* @param templateIds 模板ID串
|
||||
*/
|
||||
@SaCheckPermission("knowledge:prompt:remove")
|
||||
@Log(title = "知识库提示模板", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{templateIds}")
|
||||
public R<Void> remove(@PathVariable Long[] templateIds) {
|
||||
return toAjax(knowledgePromptTemplateService.deleteWithValidByIds(List.of(templateIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据分类查询提示模板列表
|
||||
*
|
||||
* @param category 分类
|
||||
*/
|
||||
@SaCheckPermission("knowledge:prompt:query")
|
||||
@GetMapping("/category/{category}")
|
||||
public R<List<KnowledgePromptTemplateVo>> getByCategory(@PathVariable String category) {
|
||||
return R.ok(knowledgePromptTemplateService.queryListByCategory(category));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据模板名称查询提示模板
|
||||
*
|
||||
* @param templateName 模板名称
|
||||
*/
|
||||
@SaCheckPermission("knowledge:prompt:query")
|
||||
@GetMapping("/name/{templateName}")
|
||||
public R<KnowledgePromptTemplateVo> getByTemplateName(@PathVariable String templateName) {
|
||||
return R.ok(knowledgePromptTemplateService.queryByTemplateName(templateName));
|
||||
}
|
||||
}
|
||||
+140
@@ -0,0 +1,140 @@
|
||||
package org.dromara.knowledge.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeSchemaBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeSchemaVo;
|
||||
import org.dromara.knowledge.service.KnowledgeSchemaService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库模式控制器
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/knowledge/schema")
|
||||
public class KnowledgeSchemaController extends BaseController {
|
||||
|
||||
private final KnowledgeSchemaService knowledgeSchemaService;
|
||||
|
||||
/**
|
||||
* 查询知识库模式列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<KnowledgeSchemaVo> list(KnowledgeSchemaBo bo, PageQuery pageQuery) {
|
||||
return knowledgeSchemaService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出知识库模式列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:export")
|
||||
@Log(title = "知识库模式", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(KnowledgeSchemaBo bo, HttpServletResponse response) {
|
||||
List<KnowledgeSchemaVo> list = knowledgeSchemaService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "知识库模式数据", KnowledgeSchemaVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取知识库模式详细信息
|
||||
*
|
||||
* @param schemaId 模式ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:query")
|
||||
@GetMapping("/{schemaId}")
|
||||
public R<KnowledgeSchemaVo> getInfo(@PathVariable Long schemaId) {
|
||||
return R.ok(knowledgeSchemaService.queryById(schemaId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增知识库模式
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:add")
|
||||
@Log(title = "知识库模式", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public R<Void> add(@Validated @RequestBody KnowledgeSchemaBo bo) {
|
||||
return toAjax(knowledgeSchemaService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改知识库模式
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:edit")
|
||||
@Log(title = "知识库模式", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public R<Void> edit(@Validated @RequestBody KnowledgeSchemaBo bo) {
|
||||
return toAjax(knowledgeSchemaService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除知识库模式
|
||||
*
|
||||
* @param schemaIds 模式ID串
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:remove")
|
||||
@Log(title = "知识库模式", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{schemaIds}")
|
||||
public R<Void> remove(@PathVariable Long[] schemaIds) {
|
||||
return toAjax(knowledgeSchemaService.deleteWithValidByIds(List.of(schemaIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID查询模式信息
|
||||
*
|
||||
* @param id ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:query")
|
||||
@GetMapping("/id/{id}")
|
||||
public R<KnowledgeSchemaVo> getById(@PathVariable Long id) {
|
||||
return R.ok(knowledgeSchemaService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据模式组ID查询模式列表
|
||||
*
|
||||
* @param schemaGroupId 模式组ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:query")
|
||||
@GetMapping("/group/{schemaGroupId}")
|
||||
public R<List<KnowledgeSchemaVo>> getBySchemaGroupId(@PathVariable Long schemaGroupId) {
|
||||
return R.ok(knowledgeSchemaService.queryListBySchemaGroupId(schemaGroupId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据编码查询模式信息
|
||||
*
|
||||
* @param code 编码
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:query")
|
||||
@GetMapping("/code/{code}")
|
||||
public R<KnowledgeSchemaVo> getByCode(@PathVariable String code) {
|
||||
return R.ok(knowledgeSchemaService.queryByCode(code));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据表名查询模式信息
|
||||
*
|
||||
* @param tableName 表名
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:query")
|
||||
@GetMapping("/table/{tableName}")
|
||||
public R<KnowledgeSchemaVo> getByTableName(@PathVariable String tableName) {
|
||||
return R.ok(knowledgeSchemaService.queryByTableName(tableName));
|
||||
}
|
||||
}
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
package org.dromara.knowledge.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeSchemaFieldBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeSchemaFieldVo;
|
||||
import org.dromara.knowledge.service.KnowledgeSchemaFieldService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库模式字段控制器
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/knowledge/schema/field")
|
||||
public class KnowledgeSchemaFieldController extends BaseController {
|
||||
|
||||
private final KnowledgeSchemaFieldService knowledgeSchemaFieldService;
|
||||
|
||||
/**
|
||||
* 查询知识库模式字段列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:field:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<KnowledgeSchemaFieldVo> list(KnowledgeSchemaFieldBo bo, PageQuery pageQuery) {
|
||||
return knowledgeSchemaFieldService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出知识库模式字段列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:field:export")
|
||||
@Log(title = "知识库模式字段", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(KnowledgeSchemaFieldBo bo, HttpServletResponse response) {
|
||||
List<KnowledgeSchemaFieldVo> list = knowledgeSchemaFieldService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "知识库模式字段数据", KnowledgeSchemaFieldVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取知识库模式字段详细信息
|
||||
*
|
||||
* @param fieldId 字段ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:field:query")
|
||||
@GetMapping("/{fieldId}")
|
||||
public R<KnowledgeSchemaFieldVo> getInfo(@PathVariable Long fieldId) {
|
||||
return R.ok(knowledgeSchemaFieldService.queryById(fieldId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增知识库模式字段
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:field:add")
|
||||
@Log(title = "知识库模式字段", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public R<Void> add(@Validated @RequestBody KnowledgeSchemaFieldBo bo) {
|
||||
return toAjax(knowledgeSchemaFieldService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改知识库模式字段
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:field:edit")
|
||||
@Log(title = "知识库模式字段", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public R<Void> edit(@Validated @RequestBody KnowledgeSchemaFieldBo bo) {
|
||||
return toAjax(knowledgeSchemaFieldService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除知识库模式字段
|
||||
*
|
||||
* @param fieldIds 字段ID串
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:field:remove")
|
||||
@Log(title = "知识库模式字段", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{fieldIds}")
|
||||
public R<Void> remove(@PathVariable Long[] fieldIds) {
|
||||
return toAjax(knowledgeSchemaFieldService.deleteWithValidByIds(List.of(fieldIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID查询字段信息
|
||||
*
|
||||
* @param id ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:field:query")
|
||||
@GetMapping("/id/{id}")
|
||||
public R<KnowledgeSchemaFieldVo> getById(@PathVariable Long id) {
|
||||
return R.ok(knowledgeSchemaFieldService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据模式ID查询字段列表
|
||||
*
|
||||
* @param schemaId 模式ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:field:query")
|
||||
@GetMapping("/schema/{schemaId}")
|
||||
public R<List<KnowledgeSchemaFieldVo>> getBySchemaId(@PathVariable Long schemaId) {
|
||||
return R.ok(knowledgeSchemaFieldService.queryListBySchemaId(schemaId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据编码查询字段信息
|
||||
*
|
||||
* @param code 编码
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:field:query")
|
||||
@GetMapping("/code/{code}")
|
||||
public R<KnowledgeSchemaFieldVo> getByCode(@PathVariable String code) {
|
||||
return R.ok(knowledgeSchemaFieldService.queryByCode(code));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据模式ID和编码查询字段信息
|
||||
*
|
||||
* @param schemaId 模式ID
|
||||
* @param code 编码
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:field:query")
|
||||
@GetMapping("/schema/{schemaId}/code/{code}")
|
||||
public R<KnowledgeSchemaFieldVo> getBySchemaIdAndCode(@PathVariable Long schemaId, @PathVariable String code) {
|
||||
return R.ok(knowledgeSchemaFieldService.queryBySchemaIdAndCode(schemaId, code));
|
||||
}
|
||||
}
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
package org.dromara.knowledge.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeSchemaGroupBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeSchemaGroupVo;
|
||||
import org.dromara.knowledge.service.KnowledgeSchemaGroupService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库模式组控制器
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/knowledge/schema/group")
|
||||
public class KnowledgeSchemaGroupController extends BaseController {
|
||||
|
||||
private final KnowledgeSchemaGroupService knowledgeSchemaGroupService;
|
||||
|
||||
/**
|
||||
* 查询知识库模式组列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:group:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<KnowledgeSchemaGroupVo> list(KnowledgeSchemaGroupBo bo, PageQuery pageQuery) {
|
||||
return knowledgeSchemaGroupService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出知识库模式组列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:group:export")
|
||||
@Log(title = "知识库模式组", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(KnowledgeSchemaGroupBo bo, HttpServletResponse response) {
|
||||
List<KnowledgeSchemaGroupVo> list = knowledgeSchemaGroupService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "知识库模式组数据", KnowledgeSchemaGroupVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取知识库模式组详细信息
|
||||
*
|
||||
* @param groupId 模式组ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:group:query")
|
||||
@GetMapping("/{groupId}")
|
||||
public R<KnowledgeSchemaGroupVo> getInfo(@PathVariable Long groupId) {
|
||||
return R.ok(knowledgeSchemaGroupService.queryById(groupId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增知识库模式组
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:group:add")
|
||||
@Log(title = "知识库模式组", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public R<Void> add(@Validated @RequestBody KnowledgeSchemaGroupBo bo) {
|
||||
return toAjax(knowledgeSchemaGroupService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改知识库模式组
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:group:edit")
|
||||
@Log(title = "知识库模式组", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public R<Void> edit(@Validated @RequestBody KnowledgeSchemaGroupBo bo) {
|
||||
return toAjax(knowledgeSchemaGroupService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除知识库模式组
|
||||
*
|
||||
* @param groupIds 模式组ID串
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:group:remove")
|
||||
@Log(title = "知识库模式组", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{groupIds}")
|
||||
public R<Void> remove(@PathVariable Long[] groupIds) {
|
||||
return toAjax(knowledgeSchemaGroupService.deleteWithValidByIds(List.of(groupIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID查询模式组信息
|
||||
*
|
||||
* @param id ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:group:query")
|
||||
@GetMapping("/id/{id}")
|
||||
public R<KnowledgeSchemaGroupVo> getById(@PathVariable Long id) {
|
||||
return R.ok(knowledgeSchemaGroupService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据编码查询模式组信息
|
||||
*
|
||||
* @param code 编码
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:group:query")
|
||||
@GetMapping("/code/{code}")
|
||||
public R<KnowledgeSchemaGroupVo> getByCode(@PathVariable String code) {
|
||||
return R.ok(knowledgeSchemaGroupService.queryByCode(code));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据名称查询模式组信息
|
||||
*
|
||||
* @param name 名称
|
||||
*/
|
||||
@SaCheckPermission("knowledge:schema:group:query")
|
||||
@GetMapping("/name/{name}")
|
||||
public R<KnowledgeSchemaGroupVo> getByName(@PathVariable String name) {
|
||||
return R.ok(knowledgeSchemaGroupService.queryByName(name));
|
||||
}
|
||||
}
|
||||
+180
@@ -0,0 +1,180 @@
|
||||
package org.dromara.knowledge.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeVectorBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeVectorVo;
|
||||
import org.dromara.knowledge.service.KnowledgeVectorService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库向量控制器
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/knowledge/vector")
|
||||
public class KnowledgeVectorController extends BaseController {
|
||||
|
||||
private final KnowledgeVectorService knowledgeVectorService;
|
||||
private final org.dromara.knowledge.vectorstore.VectorStoreManager vectorStoreManager;
|
||||
|
||||
@PostMapping("/generate")
|
||||
@Log(title = "向量生成", businessType = BusinessType.OTHER)
|
||||
public R<List<String>> generate(@RequestParam String knowledgeId,
|
||||
@RequestParam String docId,
|
||||
@RequestBody List<org.dromara.knowledge.domain.vo.KnowledgeFragmentVo> fragments,
|
||||
@RequestParam(defaultValue = "bge-large-zh") String model) {
|
||||
java.util.Map<String, String> map = new java.util.HashMap<>();
|
||||
for (var f : fragments) {
|
||||
map.put(f.getFid(), f.getContent());
|
||||
}
|
||||
List<String> ids = knowledgeVectorService.batchGenerateVectors(knowledgeId, docId, map, model);
|
||||
return R.ok(ids);
|
||||
}
|
||||
|
||||
@PostMapping("/search")
|
||||
@Log(title = "向量检索", businessType = BusinessType.OTHER)
|
||||
public R<List<org.dromara.knowledge.domain.vo.KnowledgeSearchResultVo>> search(@RequestParam String knowledgeId,
|
||||
@RequestParam String query,
|
||||
@RequestParam(defaultValue = "bge-large-zh") String model,
|
||||
@RequestParam(defaultValue = "5") Integer topK,
|
||||
@RequestParam(defaultValue = "0.5") Double threshold,
|
||||
@RequestParam(defaultValue = "false") boolean distinctByDoc) {
|
||||
var res = knowledgeVectorService.vectorSimilaritySearch(knowledgeId, query, model, topK, threshold);
|
||||
if (distinctByDoc) {
|
||||
java.util.Set<String> seen = new java.util.HashSet<>();
|
||||
res = res.stream().filter(r -> {
|
||||
if (seen.contains(r.getDocId())) return false;
|
||||
seen.add(r.getDocId());
|
||||
return true;
|
||||
}).toList();
|
||||
}
|
||||
return R.ok(res);
|
||||
}
|
||||
|
||||
@GetMapping("/stats/{knowledgeId}")
|
||||
@Log(title = "向量统计", businessType = BusinessType.OTHER)
|
||||
public R<java.util.Map<String, Object>> stats(@PathVariable String knowledgeId) {
|
||||
return R.ok(knowledgeVectorService.getVectorStatistics(knowledgeId));
|
||||
}
|
||||
|
||||
@PostMapping("/rebuild/{knowledgeId}")
|
||||
@Log(title = "重建向量索引", businessType = BusinessType.OTHER)
|
||||
public R<Void> rebuild(@PathVariable String knowledgeId) {
|
||||
vectorStoreManager.current().rebuildIndex(knowledgeId);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@PostMapping("/vectorize-doc")
|
||||
@Log(title = "文档批量向量化", businessType = BusinessType.OTHER)
|
||||
public R<java.util.List<String>> vectorizeDoc(@RequestParam String knowledgeId,
|
||||
@RequestParam String docId,
|
||||
@RequestParam(defaultValue = "bge-large-zh") String model) {
|
||||
java.util.List<org.dromara.knowledge.domain.vo.KnowledgeFragmentVo> fragments =
|
||||
org.dromara.common.core.utils.SpringUtils.getBean(org.dromara.knowledge.service.KnowledgeFragmentService.class)
|
||||
.queryListByDocId(docId);
|
||||
java.util.Map<String, String> map = new java.util.HashMap<>();
|
||||
for (var f : fragments) map.put(f.getFid(), f.getContent());
|
||||
java.util.List<String> ids = knowledgeVectorService.batchGenerateVectors(knowledgeId, docId, map, model);
|
||||
return R.ok(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询知识库向量列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:vector:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<KnowledgeVectorVo> list(KnowledgeVectorBo bo, PageQuery pageQuery) {
|
||||
return knowledgeVectorService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出知识库向量列表
|
||||
*/
|
||||
@SaCheckPermission("knowledge:vector:export")
|
||||
@Log(title = "知识库向量", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(KnowledgeVectorBo bo, HttpServletResponse response) {
|
||||
List<KnowledgeVectorVo> list = knowledgeVectorService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "知识库向量", KnowledgeVectorVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取知识库向量详细信息
|
||||
*
|
||||
* @param vectorId 向量ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:vector:query")
|
||||
@GetMapping("/{vectorId}")
|
||||
public R<KnowledgeVectorVo> getInfo(@PathVariable Long vectorId) {
|
||||
return R.ok(knowledgeVectorService.queryById(vectorId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增知识库向量
|
||||
*/
|
||||
@SaCheckPermission("knowledge:vector:add")
|
||||
@Log(title = "知识库向量", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public R<Void> add(@Validated @RequestBody KnowledgeVectorBo bo) {
|
||||
return toAjax(knowledgeVectorService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改知识库向量
|
||||
*/
|
||||
@SaCheckPermission("knowledge:vector:edit")
|
||||
@Log(title = "知识库向量", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public R<Void> edit(@Validated @RequestBody KnowledgeVectorBo bo) {
|
||||
return toAjax(knowledgeVectorService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除知识库向量
|
||||
*
|
||||
* @param vectorIds 向量ID数组
|
||||
*/
|
||||
@SaCheckPermission("knowledge:vector:remove")
|
||||
@Log(title = "知识库向量", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{vectorIds}")
|
||||
public R<Void> remove(@PathVariable Long[] vectorIds) {
|
||||
return toAjax(knowledgeVectorService.deleteWithValidByIds(List.of(vectorIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据片段ID查询向量列表
|
||||
*
|
||||
* @param fragmentId 片段ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:vector:query")
|
||||
@GetMapping("/fragment/{fragmentId}")
|
||||
public R<List<KnowledgeVectorVo>> getByFragmentId(@PathVariable String fragmentId) {
|
||||
return R.ok(knowledgeVectorService.queryByFragmentId(fragmentId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据知识库ID查询向量列表
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
*/
|
||||
@SaCheckPermission("knowledge:vector:query")
|
||||
@GetMapping("/knowledge/{knowledgeId}")
|
||||
public R<List<KnowledgeVectorVo>> getByKnowledgeId(@PathVariable String knowledgeId) {
|
||||
return R.ok(knowledgeVectorService.queryByKnowledgeId(knowledgeId));
|
||||
}
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
package org.dromara.knowledge.data;
|
||||
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.StringJoiner;
|
||||
|
||||
/**
|
||||
* CSV 文档解析器
|
||||
* 将 CSV 文件转换为文本格式,保留表格结构信息
|
||||
* 使用制表符分隔,便于后续处理
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Component
|
||||
public class CsvDocumentParser implements DocumentParser {
|
||||
@Override
|
||||
public String parse(byte[] bytes, String filename) {
|
||||
try {
|
||||
String csv = new String(bytes, StandardCharsets.UTF_8);
|
||||
|
||||
// CSV 文件通常使用逗号分隔,但可能包含引号和换行符
|
||||
// 简单处理:将逗号替换为制表符,使其更易读
|
||||
// 注意:这种方法适用于简单的 CSV,复杂 CSV(包含引号内的逗号)需要专门的 CSV 解析库
|
||||
String[] lines = csv.split("\\r?\\n");
|
||||
StringJoiner result = new StringJoiner("\n");
|
||||
|
||||
for (String line : lines) {
|
||||
if (line.trim().isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
// 简单替换:将逗号替换为制表符
|
||||
// 更复杂的 CSV 解析可以使用 Apache Commons CSV 等库
|
||||
String processedLine = line.replace(",", "\t");
|
||||
result.add(processedLine);
|
||||
}
|
||||
|
||||
return result.toString();
|
||||
} catch (Exception e) {
|
||||
throw new ServiceException("CSV解析失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package org.dromara.knowledge.data;
|
||||
|
||||
public interface DataPipeline {
|
||||
String ingest(String sourceUri);
|
||||
|
||||
String transform(String raw);
|
||||
|
||||
String store(String transformed);
|
||||
}
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package org.dromara.knowledge.data;
|
||||
|
||||
public interface DocumentParser {
|
||||
String parse(byte[] bytes, String filename);
|
||||
}
|
||||
|
||||
+152
@@ -0,0 +1,152 @@
|
||||
package org.dromara.knowledge.data;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 文档解析器工厂
|
||||
* 统一管理所有文档解析器,根据文件扩展名选择合适的解析器
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class DocumentParserFactory {
|
||||
|
||||
private final List<DocumentParser> parsers;
|
||||
private final Map<String, DocumentParser> parserMap = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 初始化解析器映射
|
||||
* 通过构造函数注入所有 DocumentParser 实现,并建立文件扩展名到解析器的映射
|
||||
*/
|
||||
private void initParserMap() {
|
||||
if (!parserMap.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// PDF 解析器
|
||||
parserMap.put("pdf", findParserByClass(PdfDocumentParser.class));
|
||||
// Word 解析器
|
||||
parserMap.put("doc", findParserByClass(WordDocumentParser.class));
|
||||
parserMap.put("docx", findParserByClass(WordDocumentParser.class));
|
||||
// Excel 解析器
|
||||
parserMap.put("xls", findParserByClass(ExcelDocumentParser.class));
|
||||
parserMap.put("xlsx", findParserByClass(ExcelDocumentParser.class));
|
||||
// Markdown 解析器
|
||||
parserMap.put("md", findParserByClass(MarkdownDocumentParser.class));
|
||||
// HTML 解析器
|
||||
parserMap.put("html", findParserByClass(HtmlDocumentParser.class));
|
||||
parserMap.put("htm", findParserByClass(HtmlDocumentParser.class));
|
||||
// CSV 解析器
|
||||
parserMap.put("csv", findParserByClass(CsvDocumentParser.class));
|
||||
// 文本解析器(作为默认)
|
||||
parserMap.put("txt", findParserByClass(TextDocumentParser.class));
|
||||
parserMap.put("json", findParserByClass(TextDocumentParser.class));
|
||||
parserMap.put("xml", findParserByClass(TextDocumentParser.class));
|
||||
|
||||
log.info("文档解析器工厂初始化完成,已注册 {} 种文件类型", parserMap.size());
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据类类型查找解析器
|
||||
*/
|
||||
private DocumentParser findParserByClass(Class<? extends DocumentParser> clazz) {
|
||||
return parsers.stream()
|
||||
.filter(parser -> clazz.isInstance(parser))
|
||||
.findFirst()
|
||||
.orElseGet(() -> {
|
||||
try {
|
||||
DocumentParser instance = clazz.getDeclaredConstructor().newInstance();
|
||||
log.warn("解析器 {} 未注册为 Spring Bean,使用默认实例", clazz.getSimpleName());
|
||||
return instance;
|
||||
} catch (Exception e) {
|
||||
throw new ServiceException("无法创建解析器实例: " + clazz.getName() + ": " + e.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据文件扩展名获取解析器
|
||||
*
|
||||
* @param extension 文件扩展名(不包含点号)
|
||||
* @return 文档解析器
|
||||
*/
|
||||
public DocumentParser getParser(String extension) {
|
||||
initParserMap();
|
||||
String ext = extension != null ? extension.toLowerCase() : "";
|
||||
DocumentParser parser = parserMap.get(ext);
|
||||
if (parser == null) {
|
||||
// 如果没有找到对应的解析器,使用文本解析器作为默认
|
||||
parser = parserMap.get("txt");
|
||||
log.warn("未找到文件扩展名 {} 的解析器,使用默认文本解析器", extension);
|
||||
}
|
||||
return parser;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据文件名获取解析器
|
||||
*
|
||||
* @param filename 文件名
|
||||
* @return 文档解析器
|
||||
*/
|
||||
public DocumentParser getParserByFilename(String filename) {
|
||||
String extension = extractExtension(filename);
|
||||
return getParser(extension);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析文档
|
||||
*
|
||||
* @param bytes 文件字节数组
|
||||
* @param filename 文件名
|
||||
* @return 解析后的文本内容
|
||||
*/
|
||||
public String parse(byte[] bytes, String filename) {
|
||||
DocumentParser parser = getParserByFilename(filename);
|
||||
return parser.parse(bytes, filename);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查是否支持该文件类型
|
||||
*
|
||||
* @param extension 文件扩展名
|
||||
* @return 是否支持
|
||||
*/
|
||||
public boolean isSupported(String extension) {
|
||||
initParserMap();
|
||||
String ext = extension != null ? extension.toLowerCase() : "";
|
||||
return parserMap.containsKey(ext);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取支持的文件扩展名列表
|
||||
*
|
||||
* @return 支持的文件扩展名列表
|
||||
*/
|
||||
public List<String> getSupportedExtensions() {
|
||||
initParserMap();
|
||||
return parserMap.keySet().stream().sorted().toList();
|
||||
}
|
||||
|
||||
/**
|
||||
* 从文件名中提取扩展名
|
||||
*/
|
||||
private String extractExtension(String filename) {
|
||||
if (filename == null || filename.isEmpty()) {
|
||||
return "";
|
||||
}
|
||||
int lastDotIndex = filename.lastIndexOf('.');
|
||||
if (lastDotIndex > 0 && lastDotIndex < filename.length() - 1) {
|
||||
return filename.substring(lastDotIndex + 1);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
package org.dromara.knowledge.data;
|
||||
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.util.StringJoiner;
|
||||
|
||||
/**
|
||||
* Excel 文档解析器(支持 .xls 和 .xlsx 格式)
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Component
|
||||
public class ExcelDocumentParser implements DocumentParser {
|
||||
@Override
|
||||
public String parse(byte[] bytes, String filename) {
|
||||
String ext = filename != null && filename.contains(".") ? filename.substring(filename.lastIndexOf('.') + 1).toLowerCase() : "xlsx";
|
||||
try (ByteArrayInputStream is = new ByteArrayInputStream(bytes)) {
|
||||
StringJoiner joiner = new StringJoiner("\n");
|
||||
if ("xls".equals(ext)) {
|
||||
HSSFWorkbook wb = new HSSFWorkbook(is);
|
||||
for (Sheet sheet : wb) {
|
||||
for (Row row : sheet) {
|
||||
StringJoiner rowJoin = new StringJoiner("\t");
|
||||
for (Cell cell : row) {
|
||||
rowJoin.add(cell.toString());
|
||||
}
|
||||
joiner.add(rowJoin.toString());
|
||||
}
|
||||
}
|
||||
wb.close();
|
||||
} else {
|
||||
XSSFWorkbook wb = new XSSFWorkbook(is);
|
||||
for (Sheet sheet : wb) {
|
||||
for (Row row : sheet) {
|
||||
StringJoiner rowJoin = new StringJoiner("\t");
|
||||
for (Cell cell : row) {
|
||||
rowJoin.add(cell.toString());
|
||||
}
|
||||
joiner.add(rowJoin.toString());
|
||||
}
|
||||
}
|
||||
wb.close();
|
||||
}
|
||||
return joiner.toString();
|
||||
} catch (Exception e) {
|
||||
throw new ServiceException("Excel解析失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
package org.dromara.knowledge.data;
|
||||
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* HTML 文档解析器
|
||||
* 提取 HTML 中的纯文本内容,移除标签和脚本
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Component
|
||||
public class HtmlDocumentParser implements DocumentParser {
|
||||
|
||||
// 匹配 HTML 标签的正则表达式
|
||||
private static final Pattern HTML_TAG_PATTERN = Pattern.compile("<[^>]+>");
|
||||
// 匹配脚本和样式标签及其内容
|
||||
private static final Pattern SCRIPT_STYLE_PATTERN = Pattern.compile(
|
||||
"(?i)<(script|style)[^>]*>.*?</\\1>", Pattern.DOTALL);
|
||||
// 匹配 HTML 实体
|
||||
private static final Pattern HTML_ENTITY_PATTERN = Pattern.compile("&[a-zA-Z]+;|&#\\d+;");
|
||||
|
||||
@Override
|
||||
public String parse(byte[] bytes, String filename) {
|
||||
try {
|
||||
String html = new String(bytes, StandardCharsets.UTF_8);
|
||||
|
||||
// 移除脚本和样式标签及其内容
|
||||
html = SCRIPT_STYLE_PATTERN.matcher(html).replaceAll("");
|
||||
|
||||
// 移除 HTML 标签
|
||||
html = HTML_TAG_PATTERN.matcher(html).replaceAll(" ");
|
||||
|
||||
// 简单处理 HTML 实体(可以扩展更完整的实体映射)
|
||||
html = html.replace(" ", " ")
|
||||
.replace("<", "<")
|
||||
.replace(">", ">")
|
||||
.replace("&", "&")
|
||||
.replace(""", "\"")
|
||||
.replace("'", "'");
|
||||
|
||||
// 清理多余的空白字符
|
||||
html = html.replaceAll("\\s+", " ").trim();
|
||||
|
||||
return html;
|
||||
} catch (Exception e) {
|
||||
throw new ServiceException("HTML解析失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package org.dromara.knowledge.data;
|
||||
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
/**
|
||||
* Markdown 文档解析器
|
||||
* 直接返回 Markdown 文本内容,保留格式供后续处理
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Component
|
||||
public class MarkdownDocumentParser implements DocumentParser {
|
||||
@Override
|
||||
public String parse(byte[] bytes, String filename) {
|
||||
try {
|
||||
return new String(bytes, StandardCharsets.UTF_8);
|
||||
} catch (Exception e) {
|
||||
throw new ServiceException("Markdown解析失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package org.dromara.knowledge.data;
|
||||
|
||||
import com.itextpdf.kernel.pdf.PdfDocument;
|
||||
import com.itextpdf.kernel.pdf.PdfReader;
|
||||
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
|
||||
import com.itextpdf.kernel.pdf.canvas.parser.listener.LocationTextExtractionStrategy;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
|
||||
/**
|
||||
* PDF 文档解析器
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Component
|
||||
public class PdfDocumentParser implements DocumentParser {
|
||||
@Override
|
||||
public String parse(byte[] bytes, String filename) {
|
||||
try (ByteArrayInputStream is = new ByteArrayInputStream(bytes)) {
|
||||
PdfReader reader = new PdfReader(is);
|
||||
PdfDocument pdf = new PdfDocument(reader);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 1; i <= pdf.getNumberOfPages(); i++) {
|
||||
String text = PdfTextExtractor.getTextFromPage(pdf.getPage(i), new LocationTextExtractionStrategy());
|
||||
if (text != null && !text.isEmpty()) {
|
||||
sb.append(text).append("\n");
|
||||
}
|
||||
}
|
||||
pdf.close();
|
||||
return sb.toString();
|
||||
} catch (Exception e) {
|
||||
throw new ServiceException("PDF解析失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package org.dromara.knowledge.data;
|
||||
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
/**
|
||||
* 纯文本文档解析器
|
||||
* 支持 TXT、JSON、XML 等纯文本格式
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Component
|
||||
public class TextDocumentParser implements DocumentParser {
|
||||
@Override
|
||||
public String parse(byte[] bytes, String filename) {
|
||||
try {
|
||||
// 尝试使用 UTF-8 编码,如果失败则使用系统默认编码
|
||||
String text;
|
||||
try {
|
||||
text = new String(bytes, StandardCharsets.UTF_8);
|
||||
} catch (Exception e) {
|
||||
text = new String(bytes, Charset.defaultCharset());
|
||||
}
|
||||
return text;
|
||||
} catch (Exception e) {
|
||||
throw new ServiceException("文本解析失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
package org.dromara.knowledge.data;
|
||||
|
||||
import org.apache.poi.hwpf.extractor.WordExtractor;
|
||||
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
|
||||
/**
|
||||
* Word 文档解析器(支持 .doc 和 .docx 格式)
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Component
|
||||
public class WordDocumentParser implements DocumentParser {
|
||||
@Override
|
||||
public String parse(byte[] bytes, String filename) {
|
||||
String ext = filename != null && filename.contains(".") ? filename.substring(filename.lastIndexOf('.') + 1).toLowerCase() : "docx";
|
||||
try (ByteArrayInputStream is = new ByteArrayInputStream(bytes)) {
|
||||
if ("doc".equals(ext)) {
|
||||
WordExtractor extractor = new WordExtractor(is);
|
||||
return extractor.getText();
|
||||
} else {
|
||||
XWPFDocument docx = new XWPFDocument(is);
|
||||
XWPFWordExtractor extractor = new XWPFWordExtractor(docx);
|
||||
return extractor.getText();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new org.dromara.common.core.exception.ServiceException("Word解析失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
package org.dromara.knowledge.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库附件表 knowledge_attach
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@TableName("knowledge_attach")
|
||||
public class KnowledgeAttach implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 文档名称
|
||||
*/
|
||||
private String docName;
|
||||
|
||||
/**
|
||||
* 文档类型
|
||||
*/
|
||||
private String docType;
|
||||
|
||||
/**
|
||||
* 对象存储ID
|
||||
*/
|
||||
private Integer ossId;
|
||||
|
||||
/**
|
||||
* 拆解图片状态:10未开始,20进行中,30已完成
|
||||
*/
|
||||
private Integer picStatus;
|
||||
|
||||
/**
|
||||
* 分析图片状态:10未开始,20进行中,30已完成
|
||||
*/
|
||||
private Integer picAnysStatus;
|
||||
|
||||
/**
|
||||
* 写入向量数据库状态:10未开始,20进行中,30已完成
|
||||
*/
|
||||
private Integer vectorStatus;
|
||||
|
||||
/**
|
||||
* 文档内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 删除标志:0存在,1删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package org.dromara.knowledge.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库片段表 knowledge_fragment
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@TableName("knowledge_fragment")
|
||||
public class KnowledgeFragment implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 知识片段ID
|
||||
*/
|
||||
private String fid;
|
||||
|
||||
/**
|
||||
* 片段索引下标
|
||||
*/
|
||||
private Integer idx;
|
||||
|
||||
/**
|
||||
* 文档内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 删除标志:0存在,1删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+96
@@ -0,0 +1,96 @@
|
||||
package org.dromara.knowledge.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 知识库命中日志对象 knowledge_hit_log
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("knowledge_hit_log")
|
||||
public class KnowledgeHitLog extends BaseEntity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 会话ID
|
||||
*/
|
||||
private String sessionId;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 知识片段ID
|
||||
*/
|
||||
private String fragmentId;
|
||||
|
||||
/**
|
||||
* 查询文本
|
||||
*/
|
||||
private String queryText;
|
||||
|
||||
/**
|
||||
* 查询向量
|
||||
*/
|
||||
private String queryVector;
|
||||
|
||||
/**
|
||||
* 相似度分数
|
||||
*/
|
||||
private Double similarityScore;
|
||||
|
||||
/**
|
||||
* 排名
|
||||
*/
|
||||
private Integer ranking;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
private String modelName;
|
||||
|
||||
/**
|
||||
* 搜索参数
|
||||
*/
|
||||
private String searchParams;
|
||||
|
||||
/**
|
||||
* 响应时间(毫秒)
|
||||
*/
|
||||
private Long responseTime;
|
||||
|
||||
/**
|
||||
* 命中次数
|
||||
*/
|
||||
private Integer hitCount;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+126
@@ -0,0 +1,126 @@
|
||||
package org.dromara.knowledge.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库信息表 knowledge_info
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@TableName("knowledge_info")
|
||||
public class KnowledgeInfo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 知识库名称
|
||||
*/
|
||||
private String knowledgeName;
|
||||
|
||||
/**
|
||||
* 是否公开知识库:0否,1是
|
||||
*/
|
||||
private Integer share;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 知识分隔符
|
||||
*/
|
||||
private String knowledgeSeparator;
|
||||
|
||||
/**
|
||||
* 提问分隔符
|
||||
*/
|
||||
private String questionSeparator;
|
||||
|
||||
/**
|
||||
* 重叠字符数
|
||||
*/
|
||||
private Integer overlapChar;
|
||||
|
||||
/**
|
||||
* 知识库中检索的条数
|
||||
*/
|
||||
private Integer retrieveLimit;
|
||||
|
||||
/**
|
||||
* 文本块大小
|
||||
*/
|
||||
private Integer textBlockSize;
|
||||
|
||||
/**
|
||||
* 向量库
|
||||
*/
|
||||
private String vectorModelName;
|
||||
|
||||
/**
|
||||
* 向量模型
|
||||
*/
|
||||
private String embeddingModelName;
|
||||
|
||||
/**
|
||||
* 系统提示词
|
||||
*/
|
||||
private String systemPrompt;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 删除标志:0存在,1删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+147
@@ -0,0 +1,147 @@
|
||||
package org.dromara.knowledge.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 知识库任务对象 knowledge_job
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("knowledge_job")
|
||||
public class KnowledgeJob extends BaseEntity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 任务ID
|
||||
*/
|
||||
private String jobId;
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
*/
|
||||
private String jobType;
|
||||
|
||||
/**
|
||||
* 任务子类型
|
||||
*/
|
||||
private String jobSubType;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 任务状态
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 任务进度
|
||||
*/
|
||||
private Integer progress;
|
||||
|
||||
/**
|
||||
* 总项目数
|
||||
*/
|
||||
private Integer totalItems;
|
||||
|
||||
/**
|
||||
* 已处理项目数
|
||||
*/
|
||||
private Integer processedItems;
|
||||
|
||||
/**
|
||||
* 成功项目数
|
||||
*/
|
||||
private Integer successItems;
|
||||
|
||||
/**
|
||||
* 失败项目数
|
||||
*/
|
||||
private Integer failedItems;
|
||||
|
||||
/**
|
||||
* 任务优先级
|
||||
*/
|
||||
private Integer priority;
|
||||
|
||||
/**
|
||||
* 重试次数
|
||||
*/
|
||||
private Integer retryCount;
|
||||
|
||||
/**
|
||||
* 最大重试次数
|
||||
*/
|
||||
private Integer maxRetryCount;
|
||||
|
||||
/**
|
||||
* 任务开始时间
|
||||
*/
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 任务结束时间
|
||||
*/
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 任务超时时间(秒)
|
||||
*/
|
||||
private Integer timeout;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*/
|
||||
private String errorInfo;
|
||||
|
||||
/**
|
||||
* 任务结果数据
|
||||
*/
|
||||
private String resultData;
|
||||
|
||||
/**
|
||||
* 通知配置
|
||||
*/
|
||||
private String notificationConfig;
|
||||
|
||||
/**
|
||||
* 通知状态
|
||||
*/
|
||||
private Integer notificationStatus;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
package org.dromara.knowledge.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库提示模板表 knowledge_prompt_template
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@TableName("knowledge_prompt_template")
|
||||
public class KnowledgePromptTemplate implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 提示词模板名称
|
||||
*/
|
||||
private String templateName;
|
||||
|
||||
/**
|
||||
* 提示词模板内容
|
||||
*/
|
||||
private String templateContent;
|
||||
|
||||
/**
|
||||
* 提示词分类:knowledge知识库类型,chat对话类型,draw绘画类型
|
||||
*/
|
||||
private String category;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 删除标志:0存在,1删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package org.dromara.knowledge.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库角色表 knowledge_role
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@TableName("knowledge_role")
|
||||
public class KnowledgeRole implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 角色名称
|
||||
*/
|
||||
private String roleName;
|
||||
|
||||
/**
|
||||
* 角色编码
|
||||
*/
|
||||
private String roleCode;
|
||||
|
||||
/**
|
||||
* 角色描述
|
||||
*/
|
||||
private String roleDesc;
|
||||
|
||||
/**
|
||||
* 角色状态:0禁用,1启用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 删除标志:0存在,1删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package org.dromara.knowledge.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库角色分组表 knowledge_role_group
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@TableName("knowledge_role_group")
|
||||
public class KnowledgeRoleGroup implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分组名称
|
||||
*/
|
||||
private String groupName;
|
||||
|
||||
/**
|
||||
* 分组编码
|
||||
*/
|
||||
private String groupCode;
|
||||
|
||||
/**
|
||||
* 分组描述
|
||||
*/
|
||||
private String groupDesc;
|
||||
|
||||
/**
|
||||
* 分组状态:0禁用,1启用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 删除标志:0存在,1删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package org.dromara.knowledge.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库角色关系表 knowledge_role_relation
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@TableName("knowledge_role_relation")
|
||||
public class KnowledgeRoleRelation implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 角色ID
|
||||
*/
|
||||
private Long roleId;
|
||||
|
||||
/**
|
||||
* 分组ID
|
||||
*/
|
||||
private Long groupId;
|
||||
|
||||
/**
|
||||
* 关系类型:1角色属于分组,2分组包含角色
|
||||
*/
|
||||
private Integer relationType;
|
||||
|
||||
/**
|
||||
* 关系状态:0禁用,1启用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 删除标志:0存在,1删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
package org.dromara.knowledge.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库数据模型表 knowledge_schema
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@TableName("knowledge_schema")
|
||||
public class KnowledgeSchema implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分组ID
|
||||
*/
|
||||
private Long schemaGroupId;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 模型编码
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 表名
|
||||
*/
|
||||
private String tableName;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 删除标志:0存在,1删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+161
@@ -0,0 +1,161 @@
|
||||
package org.dromara.knowledge.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库数据模型字段表 knowledge_schema_field
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@TableName("knowledge_schema_field")
|
||||
public class KnowledgeSchemaField implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 模型ID
|
||||
*/
|
||||
private Long schemaId;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
private String schemaName;
|
||||
|
||||
/**
|
||||
* 字段名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 字段编码
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 字段类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 字段注释
|
||||
*/
|
||||
private String comment;
|
||||
|
||||
/**
|
||||
* 是否主键:0否,1是
|
||||
*/
|
||||
private Integer isPk;
|
||||
|
||||
/**
|
||||
* 是否必填:0否,1是
|
||||
*/
|
||||
private Integer isRequired;
|
||||
|
||||
/**
|
||||
* 是否唯一:0否,1是
|
||||
*/
|
||||
private Integer isUnique;
|
||||
|
||||
/**
|
||||
* 默认值
|
||||
*/
|
||||
private String defaultValue;
|
||||
|
||||
/**
|
||||
* 字段长度
|
||||
*/
|
||||
private Integer length;
|
||||
|
||||
/**
|
||||
* 小数位数
|
||||
*/
|
||||
private Integer scale;
|
||||
|
||||
/**
|
||||
* 是否列表显示:0否,1是
|
||||
*/
|
||||
private Integer isList;
|
||||
|
||||
/**
|
||||
* 是否查询字段:0否,1是
|
||||
*/
|
||||
private Integer isQuery;
|
||||
|
||||
/**
|
||||
* 是否插入字段:0否,1是
|
||||
*/
|
||||
private Integer isInsert;
|
||||
|
||||
/**
|
||||
* 是否编辑字段:0否,1是
|
||||
*/
|
||||
private Integer isEdit;
|
||||
|
||||
/**
|
||||
* 查询方式(EQ,NE,GT,LT,LIKE,BETWEEN)
|
||||
*/
|
||||
private String queryType;
|
||||
|
||||
/**
|
||||
* 显示类型(input,textarea,select,checkbox,radio,datetime,image,upload,editor)
|
||||
*/
|
||||
private String htmlType;
|
||||
|
||||
/**
|
||||
* 字典类型
|
||||
*/
|
||||
private String dictType;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 删除标志:0存在,1删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
package org.dromara.knowledge.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库数据模型分组表 knowledge_schema_group
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@TableName("knowledge_schema_group")
|
||||
public class KnowledgeSchemaGroup implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分组名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 分组编码
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 图标
|
||||
*/
|
||||
private String icon;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 删除标志:0存在,1删除
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
package org.dromara.knowledge.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 知识片段向量对象 knowledge_vector
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("knowledge_vector")
|
||||
public class KnowledgeVector extends BaseEntity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 知识片段ID
|
||||
*/
|
||||
private String fragmentId;
|
||||
|
||||
/**
|
||||
* 向量ID
|
||||
*/
|
||||
private String vectorId;
|
||||
|
||||
/**
|
||||
* 向量数据
|
||||
*/
|
||||
private String vectorData;
|
||||
|
||||
/**
|
||||
* 向量维度
|
||||
*/
|
||||
private Integer dimension;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
private String modelName;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+82
@@ -0,0 +1,82 @@
|
||||
package org.dromara.knowledge.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.knowledge.domain.KnowledgeAttach;
|
||||
|
||||
/**
|
||||
* 知识库附件业务对象 knowledge_attach
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = KnowledgeAttach.class, reverseConvertGenerate = false)
|
||||
public class KnowledgeAttachBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
@NotBlank(message = "知识库ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
@NotBlank(message = "文档ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 文档名称
|
||||
*/
|
||||
@NotBlank(message = "文档名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String docName;
|
||||
|
||||
/**
|
||||
* 文档类型
|
||||
*/
|
||||
private String docType;
|
||||
|
||||
/**
|
||||
* OSS文件ID
|
||||
*/
|
||||
private Integer ossId;
|
||||
|
||||
/**
|
||||
* 图片状态
|
||||
*/
|
||||
private Integer picStatus;
|
||||
|
||||
/**
|
||||
* 图片分析状态
|
||||
*/
|
||||
private Integer picAnysStatus;
|
||||
|
||||
/**
|
||||
* 向量化状态
|
||||
*/
|
||||
private Integer vectorStatus;
|
||||
|
||||
/**
|
||||
* 文档内容
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
package org.dromara.knowledge.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.knowledge.domain.KnowledgeFragment;
|
||||
|
||||
/**
|
||||
* 知识库片段业务对象 knowledge_fragment
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = KnowledgeFragment.class, reverseConvertGenerate = false)
|
||||
public class KnowledgeFragmentBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
@NotBlank(message = "知识库ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
@NotBlank(message = "文档ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 知识片段ID
|
||||
*/
|
||||
@NotBlank(message = "知识片段ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String fid;
|
||||
|
||||
/**
|
||||
* 片段索引下标
|
||||
*/
|
||||
private Integer idx;
|
||||
|
||||
/**
|
||||
* 片段内容
|
||||
*/
|
||||
@NotBlank(message = "片段内容不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
package org.dromara.knowledge.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.knowledge.domain.KnowledgeHitLog;
|
||||
|
||||
/**
|
||||
* 知识库命中日志业务对象 knowledge_hit_log
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = KnowledgeHitLog.class, reverseConvertGenerate = false)
|
||||
public class KnowledgeHitLogBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 会话ID
|
||||
*/
|
||||
@NotBlank(message = "会话ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 64, message = "会话ID长度不能超过64个字符")
|
||||
private String sessionId;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
@NotBlank(message = "知识库ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 64, message = "知识库ID长度不能超过64个字符")
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
@Size(max = 64, message = "文档ID长度不能超过64个字符")
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 知识片段ID
|
||||
*/
|
||||
@Size(max = 64, message = "知识片段ID长度不能超过64个字符")
|
||||
private String fragmentId;
|
||||
|
||||
/**
|
||||
* 查询文本
|
||||
*/
|
||||
@NotBlank(message = "查询文本不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 2000, message = "查询文本长度不能超过2000个字符")
|
||||
private String queryText;
|
||||
|
||||
/**
|
||||
* 查询向量
|
||||
*/
|
||||
@Size(max = 65535, message = "查询向量长度不能超过65535个字符")
|
||||
private String queryVector;
|
||||
|
||||
/**
|
||||
* 相似度分数
|
||||
*/
|
||||
@DecimalMin(value = "0.0", message = "相似度分数不能小于0")
|
||||
@DecimalMax(value = "1.0", message = "相似度分数不能大于1")
|
||||
private Double similarityScore;
|
||||
|
||||
/**
|
||||
* 排名
|
||||
*/
|
||||
@Min(value = 1, message = "排名必须大于0")
|
||||
private Integer ranking;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
@Size(max = 100, message = "模型名称长度不能超过100个字符")
|
||||
private String modelName;
|
||||
|
||||
/**
|
||||
* 搜索参数
|
||||
*/
|
||||
@Size(max = 1000, message = "搜索参数长度不能超过1000个字符")
|
||||
private String searchParams;
|
||||
|
||||
/**
|
||||
* 响应时间(毫秒)
|
||||
*/
|
||||
@Min(value = 0, message = "响应时间不能小于0")
|
||||
private Long responseTime;
|
||||
|
||||
/**
|
||||
* 命中次数
|
||||
*/
|
||||
@Min(value = 0, message = "命中次数不能小于0")
|
||||
private Integer hitCount;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Size(max = 500, message = "备注长度不能超过500个字符")
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+101
@@ -0,0 +1,101 @@
|
||||
package org.dromara.knowledge.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.knowledge.domain.KnowledgeInfo;
|
||||
|
||||
/**
|
||||
* 知识库信息业务对象 knowledge_info
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = KnowledgeInfo.class, reverseConvertGenerate = false)
|
||||
public class KnowledgeInfoBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
@NotBlank(message = "知识库ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 知识库名称
|
||||
*/
|
||||
@NotBlank(message = "知识库名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String knowledgeName;
|
||||
|
||||
/**
|
||||
* 是否公开知识库:0否,1是
|
||||
*/
|
||||
private Integer share;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 知识分隔符
|
||||
*/
|
||||
private String knowledgeSeparator;
|
||||
|
||||
/**
|
||||
* 问题分隔符
|
||||
*/
|
||||
private String questionSeparator;
|
||||
|
||||
/**
|
||||
* 重叠字符数
|
||||
*/
|
||||
private Integer overlapChar;
|
||||
|
||||
/**
|
||||
* 检索限制
|
||||
*/
|
||||
private Integer retrieveLimit;
|
||||
|
||||
/**
|
||||
* 文本块大小
|
||||
*/
|
||||
private Integer textBlockSize;
|
||||
|
||||
/**
|
||||
* 向量模型名称
|
||||
*/
|
||||
private String vectorModelName;
|
||||
|
||||
/**
|
||||
* 嵌入模型名称
|
||||
*/
|
||||
private String embeddingModelName;
|
||||
|
||||
/**
|
||||
* 系统提示词
|
||||
*/
|
||||
private String systemPrompt;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+167
@@ -0,0 +1,167 @@
|
||||
package org.dromara.knowledge.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.knowledge.domain.KnowledgeJob;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 知识库任务业务对象 knowledge_job
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = KnowledgeJob.class, reverseConvertGenerate = false)
|
||||
public class KnowledgeJobBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 任务ID
|
||||
*/
|
||||
@NotBlank(message = "任务ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 64, message = "任务ID长度不能超过64个字符")
|
||||
private String jobId;
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
*/
|
||||
@NotBlank(message = "任务类型不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 50, message = "任务类型长度不能超过50个字符")
|
||||
private String jobType;
|
||||
|
||||
/**
|
||||
* 任务子类型
|
||||
*/
|
||||
@Size(max = 50, message = "任务子类型长度不能超过50个字符")
|
||||
private String jobSubType;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
@Size(max = 64, message = "知识库ID长度不能超过64个字符")
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
@Size(max = 64, message = "文档ID长度不能超过64个字符")
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 任务状态
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 任务进度
|
||||
*/
|
||||
@Min(value = 0, message = "任务进度不能小于0")
|
||||
@Max(value = 100, message = "任务进度不能大于100")
|
||||
private Integer progress;
|
||||
|
||||
/**
|
||||
* 总项目数
|
||||
*/
|
||||
@Min(value = 0, message = "总项目数不能小于0")
|
||||
private Integer totalItems;
|
||||
|
||||
/**
|
||||
* 已处理项目数
|
||||
*/
|
||||
@Min(value = 0, message = "已处理项目数不能小于0")
|
||||
private Integer processedItems;
|
||||
|
||||
/**
|
||||
* 成功项目数
|
||||
*/
|
||||
@Min(value = 0, message = "成功项目数不能小于0")
|
||||
private Integer successItems;
|
||||
|
||||
/**
|
||||
* 失败项目数
|
||||
*/
|
||||
@Min(value = 0, message = "失败项目数不能小于0")
|
||||
private Integer failedItems;
|
||||
|
||||
/**
|
||||
* 任务优先级
|
||||
*/
|
||||
@Min(value = 1, message = "任务优先级不能小于1")
|
||||
@Max(value = 10, message = "任务优先级不能大于10")
|
||||
private Integer priority;
|
||||
|
||||
/**
|
||||
* 重试次数
|
||||
*/
|
||||
@Min(value = 0, message = "重试次数不能小于0")
|
||||
private Integer retryCount;
|
||||
|
||||
/**
|
||||
* 最大重试次数
|
||||
*/
|
||||
@Min(value = 0, message = "最大重试次数不能小于0")
|
||||
private Integer maxRetryCount;
|
||||
|
||||
/**
|
||||
* 任务开始时间
|
||||
*/
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 任务结束时间
|
||||
*/
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 任务超时时间(秒)
|
||||
*/
|
||||
@Min(value = 1, message = "任务超时时间必须大于0")
|
||||
private Integer timeout;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*/
|
||||
@Size(max = 2000, message = "错误信息长度不能超过2000个字符")
|
||||
private String errorInfo;
|
||||
|
||||
/**
|
||||
* 任务结果数据
|
||||
*/
|
||||
@Size(max = 65535, message = "任务结果数据长度不能超过65535个字符")
|
||||
private String resultData;
|
||||
|
||||
/**
|
||||
* 通知配置
|
||||
*/
|
||||
@Size(max = 1000, message = "通知配置长度不能超过1000个字符")
|
||||
private String notificationConfig;
|
||||
|
||||
/**
|
||||
* 通知状态
|
||||
*/
|
||||
private Integer notificationStatus;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Size(max = 500, message = "备注长度不能超过500个字符")
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package org.dromara.knowledge.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.knowledge.domain.KnowledgePromptTemplate;
|
||||
|
||||
/**
|
||||
* 知识库提示模板业务对象 knowledge_prompt_template
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = KnowledgePromptTemplate.class, reverseConvertGenerate = false)
|
||||
public class KnowledgePromptTemplateBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@NotNull(message = "主键不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 提示词模板名称
|
||||
*/
|
||||
@NotBlank(message = "提示词模板名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String templateName;
|
||||
|
||||
/**
|
||||
* 提示词模板内容
|
||||
*/
|
||||
@NotBlank(message = "提示词模板内容不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String templateContent;
|
||||
|
||||
/**
|
||||
* 提示词分类:knowledge知识库类型,chat对话类型,draw绘画类型
|
||||
*/
|
||||
private String category;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
package org.dromara.knowledge.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.knowledge.domain.KnowledgeRole;
|
||||
|
||||
/**
|
||||
* 知识库角色业务对象 knowledge_role
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = KnowledgeRole.class, reverseConvertGenerate = false)
|
||||
public class KnowledgeRoleBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 角色名称
|
||||
*/
|
||||
@NotBlank(message = "角色名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String roleName;
|
||||
|
||||
/**
|
||||
* 角色编码
|
||||
*/
|
||||
@NotBlank(message = "角色编码不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String roleCode;
|
||||
|
||||
/**
|
||||
* 角色描述
|
||||
*/
|
||||
private String roleDesc;
|
||||
|
||||
/**
|
||||
* 角色状态:0禁用,1启用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
package org.dromara.knowledge.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.knowledge.domain.KnowledgeRoleGroup;
|
||||
|
||||
/**
|
||||
* 知识库角色分组业务对象 knowledge_role_group
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = KnowledgeRoleGroup.class, reverseConvertGenerate = false)
|
||||
public class KnowledgeRoleGroupBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分组名称
|
||||
*/
|
||||
@NotBlank(message = "分组名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String groupName;
|
||||
|
||||
/**
|
||||
* 分组编码
|
||||
*/
|
||||
@NotBlank(message = "分组编码不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String groupCode;
|
||||
|
||||
/**
|
||||
* 分组描述
|
||||
*/
|
||||
private String groupDesc;
|
||||
|
||||
/**
|
||||
* 分组状态:0禁用,1启用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
package org.dromara.knowledge.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.knowledge.domain.KnowledgeRoleRelation;
|
||||
|
||||
/**
|
||||
* 知识库角色关系业务对象 knowledge_role_relation
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = KnowledgeRoleRelation.class, reverseConvertGenerate = false)
|
||||
public class KnowledgeRoleRelationBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 角色ID
|
||||
*/
|
||||
@NotNull(message = "角色ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long roleId;
|
||||
|
||||
/**
|
||||
* 分组ID
|
||||
*/
|
||||
@NotNull(message = "分组ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long groupId;
|
||||
|
||||
/**
|
||||
* 关系类型:1角色属于分组,2分组包含角色
|
||||
*/
|
||||
private Integer relationType;
|
||||
|
||||
/**
|
||||
* 关系状态:0禁用,1启用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
package org.dromara.knowledge.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.knowledge.domain.KnowledgeSchema;
|
||||
|
||||
/**
|
||||
* 知识库数据模型业务对象 knowledge_schema
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = KnowledgeSchema.class, reverseConvertGenerate = false)
|
||||
public class KnowledgeSchemaBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@NotNull(message = "主键不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分组ID
|
||||
*/
|
||||
private Long schemaGroupId;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
@NotBlank(message = "模型名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 模型编码
|
||||
*/
|
||||
@NotBlank(message = "模型编码不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 表名
|
||||
*/
|
||||
@NotBlank(message = "表名不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String tableName;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+138
@@ -0,0 +1,138 @@
|
||||
package org.dromara.knowledge.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.knowledge.domain.KnowledgeSchemaField;
|
||||
|
||||
/**
|
||||
* 知识库数据模型字段业务对象 knowledge_schema_field
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = KnowledgeSchemaField.class, reverseConvertGenerate = false)
|
||||
public class KnowledgeSchemaFieldBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@NotNull(message = "主键不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 模型ID
|
||||
*/
|
||||
@NotNull(message = "模型ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long schemaId;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
private String schemaName;
|
||||
|
||||
/**
|
||||
* 字段名称
|
||||
*/
|
||||
@NotBlank(message = "字段名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 字段编码
|
||||
*/
|
||||
@NotBlank(message = "字段编码不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 字段类型
|
||||
*/
|
||||
@NotBlank(message = "字段类型不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 字段注释
|
||||
*/
|
||||
private String comment;
|
||||
|
||||
/**
|
||||
* 是否主键:0否,1是
|
||||
*/
|
||||
private Integer isPk;
|
||||
|
||||
/**
|
||||
* 是否必填:0否,1是
|
||||
*/
|
||||
private Integer isRequired;
|
||||
|
||||
/**
|
||||
* 是否唯一:0否,1是
|
||||
*/
|
||||
private Integer isUnique;
|
||||
|
||||
/**
|
||||
* 默认值
|
||||
*/
|
||||
private String defaultValue;
|
||||
|
||||
/**
|
||||
* 字段长度
|
||||
*/
|
||||
private Integer length;
|
||||
|
||||
/**
|
||||
* 小数位数
|
||||
*/
|
||||
private Integer scale;
|
||||
|
||||
/**
|
||||
* 是否列表:0否,1是
|
||||
*/
|
||||
private Integer isList;
|
||||
|
||||
/**
|
||||
* 是否查询:0否,1是
|
||||
*/
|
||||
private Integer isQuery;
|
||||
|
||||
/**
|
||||
* 是否插入:0否,1是
|
||||
*/
|
||||
private Integer isInsert;
|
||||
|
||||
/**
|
||||
* 是否编辑:0否,1是
|
||||
*/
|
||||
private Integer isEdit;
|
||||
|
||||
/**
|
||||
* 查询类型
|
||||
*/
|
||||
private String queryType;
|
||||
|
||||
/**
|
||||
* HTML类型
|
||||
*/
|
||||
private String htmlType;
|
||||
|
||||
/**
|
||||
* 字典类型
|
||||
*/
|
||||
private String dictType;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package org.dromara.knowledge.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.knowledge.domain.KnowledgeSchemaGroup;
|
||||
|
||||
/**
|
||||
* 知识库数据模型分组业务对象 knowledge_schema_group
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = KnowledgeSchemaGroup.class, reverseConvertGenerate = false)
|
||||
public class KnowledgeSchemaGroupBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@NotNull(message = "主键不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分组名称
|
||||
*/
|
||||
@NotBlank(message = "分组名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 分组编码
|
||||
*/
|
||||
@NotBlank(message = "分组编码不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 图标
|
||||
*/
|
||||
private String icon;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+86
@@ -0,0 +1,86 @@
|
||||
package org.dromara.knowledge.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.knowledge.domain.KnowledgeVector;
|
||||
|
||||
/**
|
||||
* 知识片段向量业务对象 knowledge_vector
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = KnowledgeVector.class, reverseConvertGenerate = false)
|
||||
public class KnowledgeVectorBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
@NotBlank(message = "知识库ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
@NotBlank(message = "文档ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 知识片段ID
|
||||
*/
|
||||
@NotBlank(message = "知识片段ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String fragmentId;
|
||||
|
||||
/**
|
||||
* 向量ID
|
||||
*/
|
||||
@NotBlank(message = "向量ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String vectorId;
|
||||
|
||||
/**
|
||||
* 向量数据
|
||||
*/
|
||||
@Size(max = 65535, message = "向量数据长度不能超过65535个字符")
|
||||
private String vectorData;
|
||||
|
||||
/**
|
||||
* 向量维度
|
||||
*/
|
||||
@NotNull(message = "向量维度不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Min(value = 1, message = "向量维度必须大于0")
|
||||
private Integer dimension;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
@NotBlank(message = "模型名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@Size(max = 100, message = "模型名称长度不能超过100个字符")
|
||||
private String modelName;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@Size(max = 500, message = "备注长度不能超过500个字符")
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.knowledge.domain.KnowledgeAttach;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库附件视图对象 knowledge_attach
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = KnowledgeAttach.class)
|
||||
public class KnowledgeAttachVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
@ExcelProperty(value = "知识库ID")
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
@ExcelProperty(value = "文档ID")
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 文档名称
|
||||
*/
|
||||
@ExcelProperty(value = "文档名称")
|
||||
private String docName;
|
||||
|
||||
/**
|
||||
* 文档类型
|
||||
*/
|
||||
@ExcelProperty(value = "文档类型")
|
||||
private String docType;
|
||||
|
||||
/**
|
||||
* OSS对象存储主键
|
||||
*/
|
||||
@ExcelProperty(value = "OSS对象存储主键")
|
||||
private Integer ossId;
|
||||
|
||||
/**
|
||||
* 图片识别状态
|
||||
*/
|
||||
@ExcelProperty(value = "图片识别状态")
|
||||
private Integer picStatus;
|
||||
|
||||
/**
|
||||
* 图片分析状态
|
||||
*/
|
||||
@ExcelProperty(value = "图片分析状态")
|
||||
private Integer picAnysStatus;
|
||||
|
||||
/**
|
||||
* 向量化状态
|
||||
*/
|
||||
@ExcelProperty(value = "向量化状态")
|
||||
private Integer vectorStatus;
|
||||
/**
|
||||
* 文档内容
|
||||
*/
|
||||
@ExcelProperty(value = "文档内容")
|
||||
private String content;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@ExcelProperty(value = "更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 获取向量化状态
|
||||
*/
|
||||
public Integer getVectorStatus() {
|
||||
return vectorStatus;
|
||||
}
|
||||
|
||||
}
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.knowledge.domain.KnowledgeFragment;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库片段视图对象 knowledge_fragment
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = KnowledgeFragment.class)
|
||||
public class KnowledgeFragmentVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
@ExcelProperty(value = "知识库ID")
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
@ExcelProperty(value = "文档ID")
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 知识片段ID
|
||||
*/
|
||||
@ExcelProperty(value = "知识片段ID")
|
||||
private String fid;
|
||||
|
||||
/**
|
||||
* 片段索引下标
|
||||
*/
|
||||
@ExcelProperty(value = "片段索引下标")
|
||||
private Integer idx;
|
||||
|
||||
/**
|
||||
* 片段内容
|
||||
*/
|
||||
@ExcelProperty(value = "片段内容")
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@ExcelProperty(value = "更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.knowledge.domain.KnowledgeHitLog;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 知识库命中日志视图对象 knowledge_hit_log
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = KnowledgeHitLog.class)
|
||||
public class KnowledgeHitLogVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 会话ID
|
||||
*/
|
||||
@ExcelProperty(value = "会话ID")
|
||||
private String sessionId;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
@ExcelProperty(value = "知识库ID")
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
@ExcelProperty(value = "文档ID")
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 知识片段ID
|
||||
*/
|
||||
@ExcelProperty(value = "知识片段ID")
|
||||
private String fragmentId;
|
||||
|
||||
/**
|
||||
* 查询文本
|
||||
*/
|
||||
@ExcelProperty(value = "查询文本")
|
||||
private String queryText;
|
||||
|
||||
/**
|
||||
* 相似度分数
|
||||
*/
|
||||
@ExcelProperty(value = "相似度分数")
|
||||
private Double similarityScore;
|
||||
|
||||
/**
|
||||
* 排名
|
||||
*/
|
||||
@ExcelProperty(value = "排名")
|
||||
private Integer ranking;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
@ExcelProperty(value = "模型名称")
|
||||
private String modelName;
|
||||
|
||||
/**
|
||||
* 搜索参数
|
||||
*/
|
||||
@ExcelProperty(value = "搜索参数")
|
||||
private String searchParams;
|
||||
|
||||
/**
|
||||
* 响应时间(毫秒)
|
||||
*/
|
||||
@ExcelProperty(value = "响应时间")
|
||||
private Long responseTime;
|
||||
|
||||
/**
|
||||
* 命中次数
|
||||
*/
|
||||
@ExcelProperty(value = "命中次数")
|
||||
private Integer hitCount;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
}
|
||||
+128
@@ -0,0 +1,128 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.knowledge.domain.KnowledgeInfo;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库信息视图对象 knowledge_info
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = KnowledgeInfo.class)
|
||||
public class KnowledgeInfoVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
@ExcelProperty(value = "用户ID")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
@ExcelProperty(value = "知识库ID")
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 知识库名称
|
||||
*/
|
||||
@ExcelProperty(value = "知识库名称")
|
||||
private String knowledgeName;
|
||||
|
||||
/**
|
||||
* 是否公开知识库:0否,1是
|
||||
*/
|
||||
@ExcelProperty(value = "是否公开知识库")
|
||||
private Integer share;
|
||||
|
||||
/**
|
||||
* 知识库描述
|
||||
*/
|
||||
@ExcelProperty(value = "知识库描述")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 知识库分隔符
|
||||
*/
|
||||
@ExcelProperty(value = "知识库分隔符")
|
||||
private String knowledgeSeparator;
|
||||
|
||||
/**
|
||||
* 问题分隔符
|
||||
*/
|
||||
@ExcelProperty(value = "问题分隔符")
|
||||
private String questionSeparator;
|
||||
|
||||
/**
|
||||
* 重叠字符数
|
||||
*/
|
||||
@ExcelProperty(value = "重叠字符数")
|
||||
private Integer overlapChar;
|
||||
|
||||
/**
|
||||
* 检索限制
|
||||
*/
|
||||
@ExcelProperty(value = "检索限制")
|
||||
private Integer retrieveLimit;
|
||||
|
||||
/**
|
||||
* 文本块大小
|
||||
*/
|
||||
@ExcelProperty(value = "文本块大小")
|
||||
private Integer textBlockSize;
|
||||
|
||||
/**
|
||||
* 向量模型名称
|
||||
*/
|
||||
@ExcelProperty(value = "向量模型名称")
|
||||
private String vectorModelName;
|
||||
|
||||
/**
|
||||
* 嵌入模型名称
|
||||
*/
|
||||
@ExcelProperty(value = "嵌入模型名称")
|
||||
private String embeddingModelName;
|
||||
|
||||
/**
|
||||
* 系统提示词
|
||||
*/
|
||||
@ExcelProperty(value = "系统提示词")
|
||||
private String systemPrompt;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@ExcelProperty(value = "更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+170
@@ -0,0 +1,170 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.knowledge.domain.KnowledgeJob;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 知识库任务视图对象 knowledge_job
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = KnowledgeJob.class)
|
||||
public class KnowledgeJobVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 任务ID
|
||||
*/
|
||||
@ExcelProperty(value = "任务ID")
|
||||
private String jobId;
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
*/
|
||||
@ExcelProperty(value = "任务类型")
|
||||
private String jobType;
|
||||
|
||||
/**
|
||||
* 任务子类型
|
||||
*/
|
||||
@ExcelProperty(value = "任务子类型")
|
||||
private String jobSubType;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
@ExcelProperty(value = "知识库ID")
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
@ExcelProperty(value = "文档ID")
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
@ExcelProperty(value = "用户ID")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 任务状态
|
||||
*/
|
||||
@ExcelProperty(value = "任务状态")
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 任务进度
|
||||
*/
|
||||
@ExcelProperty(value = "任务进度")
|
||||
private Integer progress;
|
||||
|
||||
/**
|
||||
* 总项目数
|
||||
*/
|
||||
@ExcelProperty(value = "总项目数")
|
||||
private Integer totalItems;
|
||||
|
||||
/**
|
||||
* 已处理项目数
|
||||
*/
|
||||
@ExcelProperty(value = "已处理项目数")
|
||||
private Integer processedItems;
|
||||
|
||||
/**
|
||||
* 成功项目数
|
||||
*/
|
||||
@ExcelProperty(value = "成功项目数")
|
||||
private Integer successItems;
|
||||
|
||||
/**
|
||||
* 失败项目数
|
||||
*/
|
||||
@ExcelProperty(value = "失败项目数")
|
||||
private Integer failedItems;
|
||||
|
||||
/**
|
||||
* 任务优先级
|
||||
*/
|
||||
@ExcelProperty(value = "任务优先级")
|
||||
private Integer priority;
|
||||
|
||||
/**
|
||||
* 重试次数
|
||||
*/
|
||||
@ExcelProperty(value = "重试次数")
|
||||
private Integer retryCount;
|
||||
|
||||
/**
|
||||
* 最大重试次数
|
||||
*/
|
||||
@ExcelProperty(value = "最大重试次数")
|
||||
private Integer maxRetryCount;
|
||||
|
||||
/**
|
||||
* 任务开始时间
|
||||
*/
|
||||
@ExcelProperty(value = "任务开始时间")
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 任务结束时间
|
||||
*/
|
||||
@ExcelProperty(value = "任务结束时间")
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 任务超时时间(秒)
|
||||
*/
|
||||
@ExcelProperty(value = "任务超时时间")
|
||||
private Integer timeout;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*/
|
||||
@ExcelProperty(value = "错误信息")
|
||||
private String errorInfo;
|
||||
|
||||
/**
|
||||
* 通知配置
|
||||
*/
|
||||
@ExcelProperty(value = "通知配置")
|
||||
private String notificationConfig;
|
||||
|
||||
/**
|
||||
* 通知状态
|
||||
*/
|
||||
@ExcelProperty(value = "通知状态")
|
||||
private Integer notificationStatus;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.knowledge.domain.KnowledgePromptTemplate;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库提示模板视图对象 knowledge_prompt_template
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = KnowledgePromptTemplate.class)
|
||||
public class KnowledgePromptTemplateVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@ExcelProperty(value = "主键")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 提示词模板名称
|
||||
*/
|
||||
@ExcelProperty(value = "提示词模板名称")
|
||||
private String templateName;
|
||||
|
||||
/**
|
||||
* 提示词模板内容
|
||||
*/
|
||||
@ExcelProperty(value = "提示词模板内容")
|
||||
private String templateContent;
|
||||
|
||||
/**
|
||||
* 提示词分类:knowledge知识库类型,chat对话类型,draw绘画类型
|
||||
*/
|
||||
@ExcelProperty(value = "提示词分类")
|
||||
private String category;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@ExcelProperty(value = "更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import org.dromara.knowledge.domain.KnowledgeRoleGroup;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库角色分组视图对象 knowledge_role_group
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = KnowledgeRoleGroup.class)
|
||||
public class KnowledgeRoleGroupVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分组名称
|
||||
*/
|
||||
@ExcelProperty(value = "分组名称")
|
||||
private String groupName;
|
||||
|
||||
/**
|
||||
* 分组编码
|
||||
*/
|
||||
@ExcelProperty(value = "分组编码")
|
||||
private String groupCode;
|
||||
|
||||
/**
|
||||
* 分组描述
|
||||
*/
|
||||
@ExcelProperty(value = "分组描述")
|
||||
private String groupDesc;
|
||||
|
||||
/**
|
||||
* 分组状态:0禁用,1启用
|
||||
*/
|
||||
@ExcelProperty(value = "分组状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_normal_disable")
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
@ExcelProperty(value = "排序")
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import org.dromara.knowledge.domain.KnowledgeRoleRelation;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库角色关系视图对象 knowledge_role_relation
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = KnowledgeRoleRelation.class)
|
||||
public class KnowledgeRoleRelationVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 角色ID
|
||||
*/
|
||||
@ExcelProperty(value = "角色ID")
|
||||
private Long roleId;
|
||||
|
||||
/**
|
||||
* 分组ID
|
||||
*/
|
||||
@ExcelProperty(value = "分组ID")
|
||||
private Long groupId;
|
||||
|
||||
/**
|
||||
* 关系类型:1角色属于分组,2分组包含角色
|
||||
*/
|
||||
@ExcelProperty(value = "关系类型")
|
||||
private Integer relationType;
|
||||
|
||||
/**
|
||||
* 关系状态:0禁用,1启用
|
||||
*/
|
||||
@ExcelProperty(value = "关系状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_normal_disable")
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
@ExcelProperty(value = "排序")
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import org.dromara.knowledge.domain.KnowledgeRole;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库角色视图对象 knowledge_role
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = KnowledgeRole.class)
|
||||
public class KnowledgeRoleVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 角色名称
|
||||
*/
|
||||
@ExcelProperty(value = "角色名称")
|
||||
private String roleName;
|
||||
|
||||
/**
|
||||
* 角色编码
|
||||
*/
|
||||
@ExcelProperty(value = "角色编码")
|
||||
private String roleCode;
|
||||
|
||||
/**
|
||||
* 角色描述
|
||||
*/
|
||||
@ExcelProperty(value = "角色描述")
|
||||
private String roleDesc;
|
||||
|
||||
/**
|
||||
* 角色状态:0禁用,1启用
|
||||
*/
|
||||
@ExcelProperty(value = "角色状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_normal_disable")
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
@ExcelProperty(value = "排序")
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
||||
+170
@@ -0,0 +1,170 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.knowledge.domain.KnowledgeSchemaField;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库数据模型字段视图对象 knowledge_schema_field
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = KnowledgeSchemaField.class)
|
||||
public class KnowledgeSchemaFieldVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@ExcelProperty(value = "主键")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 模型ID
|
||||
*/
|
||||
@ExcelProperty(value = "模型ID")
|
||||
private Long schemaId;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
@ExcelProperty(value = "模型名称")
|
||||
private String schemaName;
|
||||
|
||||
/**
|
||||
* 字段名称
|
||||
*/
|
||||
@ExcelProperty(value = "字段名称")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 字段编码
|
||||
*/
|
||||
@ExcelProperty(value = "字段编码")
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 字段类型
|
||||
*/
|
||||
@ExcelProperty(value = "字段类型")
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 字段注释
|
||||
*/
|
||||
@ExcelProperty(value = "字段注释")
|
||||
private String comment;
|
||||
|
||||
/**
|
||||
* 是否主键
|
||||
*/
|
||||
@ExcelProperty(value = "是否主键")
|
||||
private Integer isPk;
|
||||
|
||||
/**
|
||||
* 是否必填
|
||||
*/
|
||||
@ExcelProperty(value = "是否必填")
|
||||
private Integer isRequired;
|
||||
|
||||
/**
|
||||
* 是否唯一
|
||||
*/
|
||||
@ExcelProperty(value = "是否唯一")
|
||||
private Integer isUnique;
|
||||
|
||||
/**
|
||||
* 默认值
|
||||
*/
|
||||
@ExcelProperty(value = "默认值")
|
||||
private String defaultValue;
|
||||
|
||||
/**
|
||||
* 字段长度
|
||||
*/
|
||||
@ExcelProperty(value = "字段长度")
|
||||
private Integer length;
|
||||
|
||||
/**
|
||||
* 小数位数
|
||||
*/
|
||||
@ExcelProperty(value = "小数位数")
|
||||
private Integer scale;
|
||||
|
||||
/**
|
||||
* 是否列表显示
|
||||
*/
|
||||
@ExcelProperty(value = "是否列表显示")
|
||||
private Integer isList;
|
||||
|
||||
/**
|
||||
* 是否查询字段
|
||||
*/
|
||||
@ExcelProperty(value = "是否查询字段")
|
||||
private Integer isQuery;
|
||||
|
||||
/**
|
||||
* 是否插入字段
|
||||
*/
|
||||
@ExcelProperty(value = "是否插入字段")
|
||||
private Integer isInsert;
|
||||
|
||||
/**
|
||||
* 是否编辑字段
|
||||
*/
|
||||
@ExcelProperty(value = "是否编辑字段")
|
||||
private Integer isEdit;
|
||||
|
||||
/**
|
||||
* 查询方式
|
||||
*/
|
||||
@ExcelProperty(value = "查询方式")
|
||||
private String queryType;
|
||||
|
||||
/**
|
||||
* 显示类型
|
||||
*/
|
||||
@ExcelProperty(value = "显示类型")
|
||||
private String htmlType;
|
||||
|
||||
/**
|
||||
* 字典类型
|
||||
*/
|
||||
@ExcelProperty(value = "字典类型")
|
||||
private String dictType;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
@ExcelProperty(value = "排序")
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@ExcelProperty(value = "更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.knowledge.domain.KnowledgeSchemaGroup;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库数据模型分组视图对象 knowledge_schema_group
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = KnowledgeSchemaGroup.class)
|
||||
public class KnowledgeSchemaGroupVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@ExcelProperty(value = "主键")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分组名称
|
||||
*/
|
||||
@ExcelProperty(value = "分组名称")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 分组编码
|
||||
*/
|
||||
@ExcelProperty(value = "分组编码")
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 图标
|
||||
*/
|
||||
@ExcelProperty(value = "图标")
|
||||
private String icon;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@ExcelProperty(value = "更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.knowledge.domain.KnowledgeSchema;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库数据模型视图对象 knowledge_schema
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = KnowledgeSchema.class)
|
||||
public class KnowledgeSchemaVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@ExcelProperty(value = "主键")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 分组ID
|
||||
*/
|
||||
@ExcelProperty(value = "分组ID")
|
||||
private Long schemaGroupId;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
@ExcelProperty(value = "模型名称")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 模型编码
|
||||
*/
|
||||
@ExcelProperty(value = "模型编码")
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 表名
|
||||
*/
|
||||
@ExcelProperty(value = "表名")
|
||||
private String tableName;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@ExcelProperty(value = "更新时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库检索结果视图对象 knowledge_search_result
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class KnowledgeSearchResultVo implements Serializable {
|
||||
|
||||
/**
|
||||
* 知识片段ID
|
||||
*/
|
||||
@ExcelProperty(value = "知识片段ID")
|
||||
private String fragmentId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
@ExcelProperty(value = "文档ID")
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 文档名称
|
||||
*/
|
||||
@ExcelProperty(value = "文档名称")
|
||||
private String docName;
|
||||
|
||||
/**
|
||||
* 知识片段内容
|
||||
*/
|
||||
@ExcelProperty(value = "内容")
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 相似度分数
|
||||
*/
|
||||
@ExcelProperty(value = "相似度分数")
|
||||
private Double similarityScore;
|
||||
|
||||
/**
|
||||
* 排名位置
|
||||
*/
|
||||
@ExcelProperty(value = "排名")
|
||||
private Integer ranking;
|
||||
|
||||
/**
|
||||
* 片段索引
|
||||
*/
|
||||
@ExcelProperty(value = "片段索引")
|
||||
private Integer fragmentIndex;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 知识库状态视图对象 knowledge_status
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class KnowledgeStatusVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
@ExcelProperty(value = "知识库ID")
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 知识库名称
|
||||
*/
|
||||
@ExcelProperty(value = "知识库名称")
|
||||
private String knowledgeName;
|
||||
|
||||
/**
|
||||
* 文档总数
|
||||
*/
|
||||
@ExcelProperty(value = "文档总数")
|
||||
private Integer totalDocuments;
|
||||
|
||||
/**
|
||||
* 已处理文档数
|
||||
*/
|
||||
@ExcelProperty(value = "已处理文档数")
|
||||
private Integer processedDocuments;
|
||||
|
||||
/**
|
||||
* 知识片段总数
|
||||
*/
|
||||
@ExcelProperty(value = "知识片段总数")
|
||||
private Integer totalFragments;
|
||||
|
||||
/**
|
||||
* 已向量化片段数
|
||||
*/
|
||||
@ExcelProperty(value = "已向量化片段数")
|
||||
private Integer vectorizedFragments;
|
||||
|
||||
/**
|
||||
* 处理进度百分比
|
||||
*/
|
||||
@ExcelProperty(value = "处理进度")
|
||||
private Double progressPercentage;
|
||||
|
||||
/**
|
||||
* 当前处理状态
|
||||
*/
|
||||
@ExcelProperty(value = "处理状态")
|
||||
private String processingStatus;
|
||||
|
||||
/**
|
||||
* 正在进行的任务数
|
||||
*/
|
||||
@ExcelProperty(value = "进行中任务数")
|
||||
private Integer runningJobs;
|
||||
|
||||
/**
|
||||
* 等待中的任务数
|
||||
*/
|
||||
@ExcelProperty(value = "等待中任务数")
|
||||
private Integer pendingJobs;
|
||||
|
||||
/**
|
||||
* 失败的任务数
|
||||
*/
|
||||
@ExcelProperty(value = "失败任务数")
|
||||
private Integer failedJobs;
|
||||
|
||||
/**
|
||||
* 最后更新时间
|
||||
*/
|
||||
@ExcelProperty(value = "最后更新时间")
|
||||
private LocalDateTime lastUpdateTime;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*/
|
||||
@ExcelProperty(value = "错误信息")
|
||||
private String errorMessage;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
package org.dromara.knowledge.domain.vo;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.knowledge.domain.KnowledgeVector;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 知识片段向量视图对象 knowledge_vector
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = KnowledgeVector.class)
|
||||
public class KnowledgeVectorVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 知识库ID
|
||||
*/
|
||||
@ExcelProperty(value = "知识库ID")
|
||||
private String knowledgeId;
|
||||
|
||||
/**
|
||||
* 文档ID
|
||||
*/
|
||||
@ExcelProperty(value = "文档ID")
|
||||
private String docId;
|
||||
|
||||
/**
|
||||
* 知识片段ID
|
||||
*/
|
||||
@ExcelProperty(value = "知识片段ID")
|
||||
private String fragmentId;
|
||||
|
||||
/**
|
||||
* 向量ID
|
||||
*/
|
||||
@ExcelProperty(value = "向量ID")
|
||||
private String vectorId;
|
||||
|
||||
/**
|
||||
* 向量数据
|
||||
*/
|
||||
@ExcelProperty(value = "向量数据")
|
||||
private String vectorData;
|
||||
|
||||
/**
|
||||
* 向量维度
|
||||
*/
|
||||
@ExcelProperty(value = "向量维度")
|
||||
private Integer dimension;
|
||||
|
||||
/**
|
||||
* 模型名称
|
||||
*/
|
||||
@ExcelProperty(value = "模型名称")
|
||||
private String modelName;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
@ExcelProperty(value = "状态", converter = org.dromara.common.excel.convert.ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "sys_normal_disable")
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ExcelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package org.dromara.knowledge.embedding;
|
||||
|
||||
/**
|
||||
* 嵌入引擎接口(已弃用,请使用 EmbeddingService)
|
||||
*
|
||||
* @deprecated 请使用 {@link EmbeddingService} 接口
|
||||
* @author pengles
|
||||
*/
|
||||
@Deprecated
|
||||
public interface EmbeddingEngine extends EmbeddingService {
|
||||
// 此接口已弃用,所有实现应该使用 EmbeddingService 接口
|
||||
}
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package org.dromara.knowledge.embedding;
|
||||
|
||||
public interface EmbeddingService {
|
||||
double[] embed(String text, String modelName);
|
||||
}
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
package org.dromara.knowledge.embedding;
|
||||
|
||||
import okhttp3.*;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@Component
|
||||
public class HttpEmbeddingService implements EmbeddingService {
|
||||
|
||||
@Value("${ruoyi.ai.embedding.base-url:}")
|
||||
private String baseUrl;
|
||||
|
||||
@Value("${ruoyi.ai.embedding.default-model:bge-large-zh}")
|
||||
private String defaultModel;
|
||||
|
||||
private final OkHttpClient client = new OkHttpClient();
|
||||
private static final int CACHE_MAX = 1024;
|
||||
private final java.util.Map<String, double[]> cache = new java.util.LinkedHashMap<>(CACHE_MAX, 0.75f, true) {
|
||||
@Override
|
||||
protected boolean removeEldestEntry(java.util.Map.Entry<String, double[]> eldest) {
|
||||
return size() > CACHE_MAX;
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public double[] embed(String text, String modelName) {
|
||||
String model = modelName != null && !modelName.isBlank() ? modelName : defaultModel;
|
||||
if (baseUrl == null || baseUrl.isBlank()) {
|
||||
return mock(text, model);
|
||||
}
|
||||
try {
|
||||
String key = model + "|" + Integer.toHexString(text.hashCode());
|
||||
double[] cached = cache.get(key);
|
||||
if (cached != null) return cached;
|
||||
String payload = "{\"model\":\"" + model + "\",\"input\":\"" + text.replace("\"", "\\\"") + "\"}";
|
||||
Request req = new Request.Builder()
|
||||
.url(baseUrl + "/embeddings")
|
||||
.post(RequestBody.create(MediaType.parse("application/json"), payload))
|
||||
.build();
|
||||
try (Response resp = client.newCall(req).execute()) {
|
||||
String body = Objects.requireNonNull(resp.body()).string();
|
||||
String arr = body.replaceAll("[^\\d\\.,-]", "");
|
||||
String[] parts = arr.split(",");
|
||||
double[] v = new double[parts.length];
|
||||
for (int i = 0; i < parts.length; i++) {
|
||||
v[i] = Double.parseDouble(parts[i]);
|
||||
}
|
||||
cache.put(key, v);
|
||||
return v;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return mock(text, model);
|
||||
}
|
||||
}
|
||||
|
||||
private double[] mock(String text, String model) {
|
||||
int dim = switch (model) {
|
||||
case "bge-large-zh" -> 1024;
|
||||
case "bge-base-zh" -> 768;
|
||||
default -> 768;
|
||||
};
|
||||
double[] v = new double[dim];
|
||||
java.util.Random r = new java.util.Random(text.hashCode());
|
||||
for (int i = 0; i < dim; i++) v[i] = r.nextGaussian();
|
||||
double norm = 0;
|
||||
for (double x : v) norm += x * x;
|
||||
norm = Math.sqrt(norm);
|
||||
for (int i = 0; i < v.length; i++) v[i] /= norm;
|
||||
return v;
|
||||
}
|
||||
}
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
package org.dromara.knowledge.generation;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 默认响应生成器实现
|
||||
* 基于检索到的上下文和查询生成响应
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class DefaultGenerator implements Generator {
|
||||
|
||||
@Override
|
||||
public String generate(String query, String context, Map<String, Object> options) {
|
||||
if (query == null || query.trim().isEmpty()) {
|
||||
throw new ServiceException("查询内容不能为空");
|
||||
}
|
||||
|
||||
// 构建提示词
|
||||
String prompt = buildPrompt(query, context, options);
|
||||
|
||||
// 这里可以根据 options 中的配置选择不同的生成策略
|
||||
// 例如:调用 LLM API、使用模板生成等
|
||||
// 当前实现为简单拼接,实际应用中应该调用 LLM 服务
|
||||
|
||||
log.debug("生成响应,查询: {}, 上下文长度: {}", query, context != null ? context.length() : 0);
|
||||
|
||||
// 简单的模板生成(实际应该调用 LLM)
|
||||
return generateSimpleResponse(query, context);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建提示词
|
||||
*/
|
||||
private String buildPrompt(String query, String context, Map<String, Object> options) {
|
||||
StringBuilder promptBuilder = new StringBuilder();
|
||||
|
||||
// 系统提示
|
||||
String systemPrompt = getOption(options, "systemPrompt",
|
||||
"你是一个知识库助手,基于提供的上下文回答问题。如果上下文中没有相关信息,请说明。");
|
||||
promptBuilder.append(systemPrompt).append("\n\n");
|
||||
|
||||
// 上下文
|
||||
if (context != null && !context.trim().isEmpty()) {
|
||||
promptBuilder.append("上下文:\n").append(context).append("\n\n");
|
||||
}
|
||||
|
||||
// 查询
|
||||
promptBuilder.append("问题:").append(query).append("\n\n");
|
||||
promptBuilder.append("回答:");
|
||||
|
||||
return promptBuilder.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 简单响应生成(占位实现)
|
||||
* 实际应用中应该调用 LLM API
|
||||
*/
|
||||
private String generateSimpleResponse(String query, String context) {
|
||||
if (context == null || context.trim().isEmpty()) {
|
||||
return "抱歉,我无法在知识库中找到相关信息来回答您的问题。";
|
||||
}
|
||||
|
||||
// 简单的摘要生成(实际应该使用 LLM)
|
||||
// 这里只是占位实现,实际应该调用 LLM 服务
|
||||
return String.format("基于提供的上下文,相关内容如下:\n\n%s\n\n这是对您问题 '%s' 的回答。",
|
||||
context.substring(0, Math.min(context.length(), 500)), query);
|
||||
}
|
||||
|
||||
/**
|
||||
* 从选项 Map 中获取值
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
private <T> T getOption(Map<String, Object> options, String key, T defaultValue) {
|
||||
if (options == null) {
|
||||
return defaultValue;
|
||||
}
|
||||
Object value = options.get(key);
|
||||
return value != null ? (T) value : defaultValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成响应(带默认选项)
|
||||
*/
|
||||
public String generate(String query, String context) {
|
||||
return generate(query, context, new HashMap<>());
|
||||
}
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
package org.dromara.knowledge.generation;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface Generator {
|
||||
String generate(String query, String context, Map<String, Object> options);
|
||||
}
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.dromara.knowledge.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.knowledge.domain.KnowledgeAttach;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeAttachVo;
|
||||
|
||||
/**
|
||||
* 知识库附件Mapper接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeAttachMapper extends BaseMapperPlus<KnowledgeAttach, KnowledgeAttachVo> {
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.dromara.knowledge.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.knowledge.domain.KnowledgeFragment;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeFragmentVo;
|
||||
|
||||
/**
|
||||
* 知识库片段Mapper接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeFragmentMapper extends BaseMapperPlus<KnowledgeFragment, KnowledgeFragmentVo> {
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.dromara.knowledge.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.knowledge.domain.KnowledgeHitLog;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeHitLogVo;
|
||||
|
||||
/**
|
||||
* 知识库命中日志Mapper接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeHitLogMapper extends BaseMapperPlus<KnowledgeHitLog, KnowledgeHitLogVo> {
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.dromara.knowledge.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.knowledge.domain.KnowledgeInfo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeInfoVo;
|
||||
|
||||
/**
|
||||
* 知识库信息Mapper接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeInfoMapper extends BaseMapperPlus<KnowledgeInfo, KnowledgeInfoVo> {
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.dromara.knowledge.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.knowledge.domain.KnowledgeJob;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeJobVo;
|
||||
|
||||
/**
|
||||
* 知识库任务Mapper接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeJobMapper extends BaseMapperPlus<KnowledgeJob, KnowledgeJobVo> {
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.dromara.knowledge.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.knowledge.domain.KnowledgePromptTemplate;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgePromptTemplateVo;
|
||||
|
||||
/**
|
||||
* 知识库提示模板Mapper接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgePromptTemplateMapper extends BaseMapperPlus<KnowledgePromptTemplate, KnowledgePromptTemplateVo> {
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.dromara.knowledge.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.knowledge.domain.KnowledgeRoleGroup;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeRoleGroupVo;
|
||||
|
||||
/**
|
||||
* 知识库角色分组Mapper接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeRoleGroupMapper extends BaseMapperPlus<KnowledgeRoleGroup, KnowledgeRoleGroupVo> {
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.dromara.knowledge.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.knowledge.domain.KnowledgeRole;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeRoleVo;
|
||||
|
||||
/**
|
||||
* 知识库角色Mapper接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeRoleMapper extends BaseMapperPlus<KnowledgeRole, KnowledgeRoleVo> {
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.dromara.knowledge.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.knowledge.domain.KnowledgeRoleRelation;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeRoleRelationVo;
|
||||
|
||||
/**
|
||||
* 知识库角色关系Mapper接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeRoleRelationMapper extends BaseMapperPlus<KnowledgeRoleRelation, KnowledgeRoleRelationVo> {
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.dromara.knowledge.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.knowledge.domain.KnowledgeSchemaField;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeSchemaFieldVo;
|
||||
|
||||
/**
|
||||
* 知识库数据模型字段Mapper接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeSchemaFieldMapper extends BaseMapperPlus<KnowledgeSchemaField, KnowledgeSchemaFieldVo> {
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.dromara.knowledge.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.knowledge.domain.KnowledgeSchemaGroup;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeSchemaGroupVo;
|
||||
|
||||
/**
|
||||
* 知识库数据模型分组Mapper接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeSchemaGroupMapper extends BaseMapperPlus<KnowledgeSchemaGroup, KnowledgeSchemaGroupVo> {
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.dromara.knowledge.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.knowledge.domain.KnowledgeSchema;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeSchemaVo;
|
||||
|
||||
/**
|
||||
* 知识库数据模型Mapper接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeSchemaMapper extends BaseMapperPlus<KnowledgeSchema, KnowledgeSchemaVo> {
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package org.dromara.knowledge.mapper;
|
||||
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.knowledge.domain.KnowledgeVector;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeVectorVo;
|
||||
|
||||
/**
|
||||
* 知识片段向量Mapper接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeVectorMapper extends BaseMapperPlus<KnowledgeVector, KnowledgeVectorVo> {
|
||||
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package org.dromara.knowledge.retrieval;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.knowledge.service.KnowledgeDocumentService;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class DefaultIndexUpdater implements IndexUpdater {
|
||||
private final KnowledgeDocumentService knowledgeDocumentService;
|
||||
|
||||
@Override
|
||||
public String updateFragments(String knowledgeId, String docId) {
|
||||
// 触发分片重建,依赖 KnowledgeDocumentService 的分片逻辑
|
||||
// 返回任务ID用于追踪
|
||||
return knowledgeDocumentService.processDocumentContent(knowledgeId, docId, "", null);
|
||||
}
|
||||
}
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package org.dromara.knowledge.retrieval;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeSearchResultVo;
|
||||
import org.dromara.knowledge.service.KnowledgeVectorService;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class DefaultRetriever implements Retriever {
|
||||
private final KnowledgeVectorService knowledgeVectorService;
|
||||
|
||||
@Override
|
||||
public List<KnowledgeSearchResultVo> search(String knowledgeId, String query, String model, int topK, double threshold) {
|
||||
return knowledgeVectorService.vectorSimilaritySearch(knowledgeId, query, model, topK, threshold);
|
||||
}
|
||||
}
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package org.dromara.knowledge.retrieval;
|
||||
|
||||
public interface IndexUpdater {
|
||||
String updateFragments(String knowledgeId, String docId);
|
||||
}
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package org.dromara.knowledge.retrieval;
|
||||
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeSearchResultVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface Retriever {
|
||||
List<KnowledgeSearchResultVo> search(String knowledgeId, String query, String model, int topK, double threshold);
|
||||
}
|
||||
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
package org.dromara.knowledge.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.knowledge.domain.KnowledgeAttach;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeAttachBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeAttachVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库附件Service接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeAttachService extends IService<KnowledgeAttach> {
|
||||
|
||||
/**
|
||||
* 查询知识库附件
|
||||
*/
|
||||
KnowledgeAttachVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询知识库附件列表
|
||||
*/
|
||||
TableDataInfo<KnowledgeAttachVo> queryPageList(KnowledgeAttachBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询知识库附件列表
|
||||
*/
|
||||
List<KnowledgeAttachVo> queryList(KnowledgeAttachBo bo);
|
||||
|
||||
/**
|
||||
* 新增知识库附件
|
||||
*/
|
||||
Boolean insertByBo(KnowledgeAttachBo bo);
|
||||
|
||||
/**
|
||||
* 修改知识库附件
|
||||
*/
|
||||
Boolean updateByBo(KnowledgeAttachBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除知识库附件
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据知识库ID查询附件列表
|
||||
*/
|
||||
List<KnowledgeAttachVo> queryListByKnowledgeId(String knowledgeId);
|
||||
|
||||
/**
|
||||
* 根据文档ID查询附件信息
|
||||
*/
|
||||
KnowledgeAttachVo queryByDocId(String docId);
|
||||
}
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
package org.dromara.knowledge.service;
|
||||
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库文档处理Service接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeDocumentService {
|
||||
|
||||
/**
|
||||
* 处理上传的文档
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param file 上传的文件
|
||||
* @return 文档ID
|
||||
*/
|
||||
String processUploadedDocument(String knowledgeId, MultipartFile file);
|
||||
|
||||
/**
|
||||
* 将文档内容分割成知识片段
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param docId 文档ID
|
||||
* @param content 文档内容
|
||||
* @param chunkSize 分片大小
|
||||
* @param overlapSize 重叠大小
|
||||
* @return 知识片段ID列表
|
||||
*/
|
||||
List<String> splitDocumentIntoFragments(String knowledgeId, String docId, String content,
|
||||
Integer chunkSize, Integer overlapSize);
|
||||
|
||||
/**
|
||||
* 提取文档文本内容
|
||||
*
|
||||
* @param file 文件
|
||||
* @return 文本内容
|
||||
*/
|
||||
String extractTextContent(MultipartFile file);
|
||||
|
||||
/**
|
||||
* 清理和预处理文本内容
|
||||
*
|
||||
* @param content 原始内容
|
||||
* @return 清理后的内容
|
||||
*/
|
||||
String cleanTextContent(String content);
|
||||
|
||||
/**
|
||||
* 验证文件类型是否支持
|
||||
*
|
||||
* @param file 文件
|
||||
* @return 是否支持
|
||||
*/
|
||||
boolean isSupportedFileType(MultipartFile file);
|
||||
|
||||
/**
|
||||
* 获取支持的文件类型列表
|
||||
*
|
||||
* @return 支持的文件类型列表
|
||||
*/
|
||||
List<String> getSupportedFileTypes();
|
||||
|
||||
/**
|
||||
* 获取知识库处理状态
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param knowledgeInfo 知识库信息
|
||||
* @return 知识库状态信息
|
||||
*/
|
||||
org.dromara.knowledge.domain.vo.KnowledgeStatusVo getKnowledgeProcessingStatus(Long knowledgeId, org.dromara.knowledge.domain.vo.KnowledgeInfoVo knowledgeInfo);
|
||||
|
||||
/**
|
||||
* 处理文档内容并生成知识片段
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param docId 文档ID
|
||||
* @param content 文档内容
|
||||
* @param knowledgeInfo 知识库信息
|
||||
* @return 处理任务ID
|
||||
*/
|
||||
String processDocumentContent(String knowledgeId, String docId, String content, org.dromara.knowledge.domain.KnowledgeInfo knowledgeInfo);
|
||||
|
||||
/**
|
||||
* 对知识片段进行向量化
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param fragmentId 知识片段ID
|
||||
* @param knowledgeInfo 知识库信息
|
||||
* @return 向量化任务ID
|
||||
*/
|
||||
String vectorizeKnowledgeFragment(String knowledgeId, String fragmentId, org.dromara.knowledge.domain.KnowledgeInfo knowledgeInfo);
|
||||
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
package org.dromara.knowledge.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.knowledge.domain.KnowledgeFragment;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeFragmentBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeFragmentVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库片段Service接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeFragmentService extends IService<KnowledgeFragment> {
|
||||
|
||||
/**
|
||||
* 查询知识库片段
|
||||
*/
|
||||
KnowledgeFragmentVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询知识库片段列表
|
||||
*/
|
||||
TableDataInfo<KnowledgeFragmentVo> queryPageList(KnowledgeFragmentBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询知识库片段列表
|
||||
*/
|
||||
List<KnowledgeFragmentVo> queryList(KnowledgeFragmentBo bo);
|
||||
|
||||
/**
|
||||
* 新增知识库片段
|
||||
*/
|
||||
Boolean insertByBo(KnowledgeFragmentBo bo);
|
||||
|
||||
/**
|
||||
* 修改知识库片段
|
||||
*/
|
||||
Boolean updateByBo(KnowledgeFragmentBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除知识库片段
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据知识库ID查询片段列表
|
||||
*/
|
||||
List<KnowledgeFragmentVo> queryListByKnowledgeId(Long knowledgeId);
|
||||
|
||||
/**
|
||||
* 根据文档ID查询片段列表
|
||||
*/
|
||||
List<KnowledgeFragmentVo> queryListByDocId(String docId);
|
||||
|
||||
/**
|
||||
* 根据片段ID查询片段信息
|
||||
*/
|
||||
KnowledgeFragmentVo queryByFid(String fid);
|
||||
}
|
||||
+126
@@ -0,0 +1,126 @@
|
||||
package org.dromara.knowledge.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.knowledge.domain.KnowledgeHitLog;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeHitLogBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeHitLogVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 知识库命中日志Service接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeHitLogService extends IService<KnowledgeHitLog> {
|
||||
|
||||
/**
|
||||
* 查询知识库命中日志
|
||||
*/
|
||||
KnowledgeHitLogVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询知识库命中日志列表
|
||||
*/
|
||||
TableDataInfo<KnowledgeHitLogVo> queryPageList(KnowledgeHitLogBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询知识库命中日志列表
|
||||
*/
|
||||
List<KnowledgeHitLogVo> queryList(KnowledgeHitLogBo bo);
|
||||
|
||||
/**
|
||||
* 新增知识库命中日志
|
||||
*/
|
||||
Boolean insertByBo(KnowledgeHitLogBo bo);
|
||||
|
||||
/**
|
||||
* 修改知识库命中日志
|
||||
*/
|
||||
Boolean updateByBo(KnowledgeHitLogBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除知识库命中日志信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据会话ID查询知识库命中日志列表
|
||||
*/
|
||||
List<KnowledgeHitLogVo> queryBySessionId(String sessionId);
|
||||
|
||||
/**
|
||||
* 根据知识库ID查询知识库命中日志列表
|
||||
*/
|
||||
List<KnowledgeHitLogVo> queryByKnowledgeId(String knowledgeId);
|
||||
|
||||
/**
|
||||
* 根据文档ID查询知识库命中日志列表
|
||||
*/
|
||||
List<KnowledgeHitLogVo> queryByDocId(String docId);
|
||||
|
||||
/**
|
||||
* 根据知识片段ID查询知识库命中日志列表
|
||||
*/
|
||||
List<KnowledgeHitLogVo> queryByFragmentId(String fragmentId);
|
||||
|
||||
/**
|
||||
* 根据模型名称查询知识库命中日志列表
|
||||
*/
|
||||
List<KnowledgeHitLogVo> queryByModelName(String modelName);
|
||||
|
||||
/**
|
||||
* 根据相似度分数范围查询知识库命中日志列表
|
||||
*/
|
||||
List<KnowledgeHitLogVo> queryBySimilarityRange(Double minScore, Double maxScore);
|
||||
|
||||
/**
|
||||
* 根据查询文本查询知识库命中日志列表
|
||||
*/
|
||||
List<KnowledgeHitLogVo> queryByQueryText(String queryText);
|
||||
|
||||
/**
|
||||
* 统计知识库命中次数
|
||||
*/
|
||||
Long countHitsByKnowledgeId(String knowledgeId);
|
||||
|
||||
/**
|
||||
* 统计文档命中次数
|
||||
*/
|
||||
Long countHitsByDocId(String docId);
|
||||
|
||||
/**
|
||||
* 统计知识片段命中次数
|
||||
*/
|
||||
Long countHitsByFragmentId(String fragmentId);
|
||||
|
||||
/**
|
||||
* 获取热门查询列表
|
||||
*/
|
||||
List<Map<String, Object>> getPopularQueries(String knowledgeId, Integer limit);
|
||||
|
||||
/**
|
||||
* 获取平均响应时间
|
||||
*/
|
||||
Double getAverageResponseTime(String knowledgeId);
|
||||
|
||||
/**
|
||||
* 根据排名查询知识库命中日志列表
|
||||
*/
|
||||
List<KnowledgeHitLogVo> queryByRanking(Integer ranking);
|
||||
|
||||
/**
|
||||
* 根据响应时间范围查询知识库命中日志列表
|
||||
*/
|
||||
List<KnowledgeHitLogVo> queryByResponseTimeRange(Long minTime, Long maxTime);
|
||||
|
||||
/**
|
||||
* 批量插入知识库命中日志
|
||||
*/
|
||||
Boolean batchInsert(List<KnowledgeHitLogBo> boList);
|
||||
|
||||
}
|
||||
+117
@@ -0,0 +1,117 @@
|
||||
package org.dromara.knowledge.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.knowledge.domain.KnowledgeInfo;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeInfoBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeInfoVo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeSearchResultVo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeStatusVo;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库信息Service接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeInfoService extends IService<KnowledgeInfo> {
|
||||
|
||||
/**
|
||||
* 查询知识库信息
|
||||
*/
|
||||
KnowledgeInfoVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询知识库信息列表
|
||||
*/
|
||||
TableDataInfo<KnowledgeInfoVo> queryPageList(KnowledgeInfoBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询知识库信息列表
|
||||
*/
|
||||
List<KnowledgeInfoVo> queryList(KnowledgeInfoBo bo);
|
||||
|
||||
/**
|
||||
* 新增知识库信息
|
||||
*/
|
||||
Boolean insertByBo(KnowledgeInfoBo bo);
|
||||
|
||||
/**
|
||||
* 修改知识库信息
|
||||
*/
|
||||
Boolean updateByBo(KnowledgeInfoBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除知识库信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据用户ID查询知识库列表
|
||||
*/
|
||||
List<KnowledgeInfoVo> queryListByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 根据知识库ID查询知识库信息
|
||||
*/
|
||||
KnowledgeInfoVo queryByKnowledgeId(Long knowledgeId);
|
||||
|
||||
/**
|
||||
* 上传文档到知识库
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param file 上传的文件
|
||||
* @return 文档ID
|
||||
*/
|
||||
String uploadDocument(String knowledgeId, MultipartFile file);
|
||||
|
||||
/**
|
||||
* 批量上传文档到知识库
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param files 上传的文件列表
|
||||
* @return 文档ID列表
|
||||
*/
|
||||
List<String> batchUploadDocuments(String knowledgeId, MultipartFile[] files);
|
||||
|
||||
/**
|
||||
* 检索知识库
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param query 查询文本
|
||||
* @param limit 返回结果数量限制
|
||||
* @return 检索结果列表
|
||||
*/
|
||||
List<KnowledgeSearchResultVo> searchKnowledge(String knowledgeId, String query, Integer limit);
|
||||
|
||||
/**
|
||||
* 获取知识库处理状态
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @return 知识库状态信息
|
||||
*/
|
||||
KnowledgeStatusVo getKnowledgeStatus(String knowledgeId);
|
||||
|
||||
/**
|
||||
* 处理文档并生成知识片段
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param docId 文档ID
|
||||
* @param content 文档内容
|
||||
* @return 处理任务ID
|
||||
*/
|
||||
String processDocument(String knowledgeId, String docId, String content);
|
||||
|
||||
/**
|
||||
* 对知识片段进行向量化
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param fragmentId 知识片段ID
|
||||
* @return 向量化任务ID
|
||||
*/
|
||||
String vectorizeFragment(String knowledgeId, String fragmentId);
|
||||
}
|
||||
+125
@@ -0,0 +1,125 @@
|
||||
package org.dromara.knowledge.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.knowledge.domain.KnowledgeJob;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeJobBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeJobVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库任务Service接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeJobService extends IService<KnowledgeJob> {
|
||||
|
||||
/**
|
||||
* 查询知识库任务
|
||||
*/
|
||||
KnowledgeJobVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询知识库任务列表
|
||||
*/
|
||||
TableDataInfo<KnowledgeJobVo> queryPageList(KnowledgeJobBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询知识库任务列表
|
||||
*/
|
||||
List<KnowledgeJobVo> queryList(KnowledgeJobBo bo);
|
||||
|
||||
/**
|
||||
* 新增知识库任务
|
||||
*/
|
||||
Boolean insertByBo(KnowledgeJobBo bo);
|
||||
|
||||
/**
|
||||
* 修改知识库任务
|
||||
*/
|
||||
Boolean updateByBo(KnowledgeJobBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除知识库任务信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据任务ID查询知识库任务
|
||||
*/
|
||||
KnowledgeJobVo queryByJobId(String jobId);
|
||||
|
||||
/**
|
||||
* 根据知识库ID查询知识库任务列表
|
||||
*/
|
||||
List<KnowledgeJobVo> queryByKnowledgeId(String knowledgeId);
|
||||
|
||||
/**
|
||||
* 根据文档ID查询知识库任务列表
|
||||
*/
|
||||
List<KnowledgeJobVo> queryByDocId(String docId);
|
||||
|
||||
/**
|
||||
* 根据用户ID查询知识库任务列表
|
||||
*/
|
||||
List<KnowledgeJobVo> queryByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 根据任务类型查询知识库任务列表
|
||||
*/
|
||||
List<KnowledgeJobVo> queryByJobType(String jobType);
|
||||
|
||||
/**
|
||||
* 根据任务状态查询知识库任务列表
|
||||
*/
|
||||
List<KnowledgeJobVo> queryByStatus(Integer status);
|
||||
|
||||
/**
|
||||
* 查询正在运行的任务列表
|
||||
*/
|
||||
List<KnowledgeJobVo> queryRunningJobs();
|
||||
|
||||
/**
|
||||
* 查询待处理的任务列表
|
||||
*/
|
||||
List<KnowledgeJobVo> queryPendingJobs();
|
||||
|
||||
/**
|
||||
* 查询失败的任务列表
|
||||
*/
|
||||
List<KnowledgeJobVo> queryFailedJobs();
|
||||
|
||||
/**
|
||||
* 更新任务进度
|
||||
*/
|
||||
Boolean updateProgress(Long id, Integer progress);
|
||||
|
||||
/**
|
||||
* 更新任务状态
|
||||
*/
|
||||
Boolean updateStatus(Long id, Integer status);
|
||||
|
||||
/**
|
||||
* 增加重试次数
|
||||
*/
|
||||
Boolean incrementRetryCount(Long id);
|
||||
|
||||
/**
|
||||
* 更新任务项目计数
|
||||
*/
|
||||
Boolean updateItemCounts(Long id, Integer totalItems, Integer processedItems, Integer successItems, Integer failedItems);
|
||||
|
||||
/**
|
||||
* 根据优先级查询任务列表
|
||||
*/
|
||||
List<KnowledgeJobVo> queryByPriority(Integer priority);
|
||||
|
||||
/**
|
||||
* 查询超时的任务列表
|
||||
*/
|
||||
List<KnowledgeJobVo> queryTimeoutJobs();
|
||||
|
||||
}
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
package org.dromara.knowledge.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.knowledge.domain.KnowledgePromptTemplate;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgePromptTemplateBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgePromptTemplateVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库提示模板Service接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgePromptTemplateService extends IService<KnowledgePromptTemplate> {
|
||||
|
||||
/**
|
||||
* 查询知识库提示模板
|
||||
*/
|
||||
KnowledgePromptTemplateVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询知识库提示模板列表
|
||||
*/
|
||||
TableDataInfo<KnowledgePromptTemplateVo> queryPageList(KnowledgePromptTemplateBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询知识库提示模板列表
|
||||
*/
|
||||
List<KnowledgePromptTemplateVo> queryList(KnowledgePromptTemplateBo bo);
|
||||
|
||||
/**
|
||||
* 新增知识库提示模板
|
||||
*/
|
||||
Boolean insertByBo(KnowledgePromptTemplateBo bo);
|
||||
|
||||
/**
|
||||
* 修改知识库提示模板
|
||||
*/
|
||||
Boolean updateByBo(KnowledgePromptTemplateBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除知识库提示模板
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据分类查询模板列表
|
||||
*/
|
||||
List<KnowledgePromptTemplateVo> queryListByCategory(String category);
|
||||
|
||||
/**
|
||||
* 根据模板名称查询模板信息
|
||||
*/
|
||||
KnowledgePromptTemplateVo queryByTemplateName(String templateName);
|
||||
}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
package org.dromara.knowledge.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.knowledge.domain.KnowledgeRoleGroup;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeRoleGroupBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeRoleGroupVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库角色分组Service接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeRoleGroupService extends IService<KnowledgeRoleGroup> {
|
||||
|
||||
/**
|
||||
* 查询知识库角色分组
|
||||
*/
|
||||
KnowledgeRoleGroupVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询知识库角色分组列表
|
||||
*/
|
||||
TableDataInfo<KnowledgeRoleGroupVo> queryPageList(KnowledgeRoleGroupBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询知识库角色分组列表
|
||||
*/
|
||||
List<KnowledgeRoleGroupVo> queryList(KnowledgeRoleGroupBo bo);
|
||||
|
||||
/**
|
||||
* 新增知识库角色分组
|
||||
*/
|
||||
Boolean insertByBo(KnowledgeRoleGroupBo bo);
|
||||
|
||||
/**
|
||||
* 修改知识库角色分组
|
||||
*/
|
||||
Boolean updateByBo(KnowledgeRoleGroupBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除知识库角色分组
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据分组编码查询分组信息
|
||||
*/
|
||||
KnowledgeRoleGroupVo queryByGroupCode(String groupCode);
|
||||
|
||||
/**
|
||||
* 查询启用状态的分组列表
|
||||
*/
|
||||
List<KnowledgeRoleGroupVo> queryEnabledList();
|
||||
|
||||
}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
package org.dromara.knowledge.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.knowledge.domain.KnowledgeRoleRelation;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeRoleRelationBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeRoleRelationVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库角色关系Service接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeRoleRelationService extends IService<KnowledgeRoleRelation> {
|
||||
|
||||
/**
|
||||
* 查询知识库角色关系
|
||||
*/
|
||||
KnowledgeRoleRelationVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询知识库角色关系列表
|
||||
*/
|
||||
TableDataInfo<KnowledgeRoleRelationVo> queryPageList(KnowledgeRoleRelationBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询知识库角色关系列表
|
||||
*/
|
||||
List<KnowledgeRoleRelationVo> queryList(KnowledgeRoleRelationBo bo);
|
||||
|
||||
/**
|
||||
* 新增知识库角色关系
|
||||
*/
|
||||
Boolean insertByBo(KnowledgeRoleRelationBo bo);
|
||||
|
||||
/**
|
||||
* 修改知识库角色关系
|
||||
*/
|
||||
Boolean updateByBo(KnowledgeRoleRelationBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除知识库角色关系
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据角色ID查询关系列表
|
||||
*/
|
||||
List<KnowledgeRoleRelationVo> queryByRoleId(Long roleId);
|
||||
|
||||
/**
|
||||
* 根据分组ID查询关系列表
|
||||
*/
|
||||
List<KnowledgeRoleRelationVo> queryByGroupId(Long groupId);
|
||||
|
||||
/**
|
||||
* 根据角色ID和分组ID查询关系
|
||||
*/
|
||||
KnowledgeRoleRelationVo queryByRoleIdAndGroupId(Long roleId, Long groupId);
|
||||
|
||||
}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
package org.dromara.knowledge.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.knowledge.domain.KnowledgeRole;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeRoleBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeRoleVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库角色Service接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeRoleService extends IService<KnowledgeRole> {
|
||||
|
||||
/**
|
||||
* 查询知识库角色
|
||||
*/
|
||||
KnowledgeRoleVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询知识库角色列表
|
||||
*/
|
||||
TableDataInfo<KnowledgeRoleVo> queryPageList(KnowledgeRoleBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询知识库角色列表
|
||||
*/
|
||||
List<KnowledgeRoleVo> queryList(KnowledgeRoleBo bo);
|
||||
|
||||
/**
|
||||
* 新增知识库角色
|
||||
*/
|
||||
Boolean insertByBo(KnowledgeRoleBo bo);
|
||||
|
||||
/**
|
||||
* 修改知识库角色
|
||||
*/
|
||||
Boolean updateByBo(KnowledgeRoleBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除知识库角色
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据角色编码查询角色信息
|
||||
*/
|
||||
KnowledgeRoleVo queryByRoleCode(String roleCode);
|
||||
|
||||
/**
|
||||
* 查询启用状态的角色列表
|
||||
*/
|
||||
List<KnowledgeRoleVo> queryEnabledList();
|
||||
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
package org.dromara.knowledge.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.knowledge.domain.KnowledgeSchemaField;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeSchemaFieldBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeSchemaFieldVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库数据模型字段Service接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeSchemaFieldService extends IService<KnowledgeSchemaField> {
|
||||
|
||||
/**
|
||||
* 查询知识库模式字段
|
||||
*/
|
||||
KnowledgeSchemaFieldVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询知识库模式字段列表
|
||||
*/
|
||||
TableDataInfo<KnowledgeSchemaFieldVo> queryPageList(KnowledgeSchemaFieldBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询知识库模式字段列表
|
||||
*/
|
||||
List<KnowledgeSchemaFieldVo> queryList(KnowledgeSchemaFieldBo bo);
|
||||
|
||||
/**
|
||||
* 新增知识库模式字段
|
||||
*/
|
||||
Boolean insertByBo(KnowledgeSchemaFieldBo bo);
|
||||
|
||||
/**
|
||||
* 修改知识库模式字段
|
||||
*/
|
||||
Boolean updateByBo(KnowledgeSchemaFieldBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除知识库模式字段
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据模式ID查询字段列表
|
||||
*/
|
||||
List<KnowledgeSchemaFieldVo> queryListBySchemaId(Long schemaId);
|
||||
|
||||
/**
|
||||
* 根据编码查询字段信息
|
||||
*/
|
||||
KnowledgeSchemaFieldVo queryByCode(String code);
|
||||
|
||||
/**
|
||||
* 根据模式ID和字段编码查询字段信息
|
||||
*/
|
||||
KnowledgeSchemaFieldVo queryBySchemaIdAndCode(Long schemaId, String code);
|
||||
}
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
package org.dromara.knowledge.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.knowledge.domain.KnowledgeSchemaGroup;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeSchemaGroupBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeSchemaGroupVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库数据模型分组Service接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeSchemaGroupService extends IService<KnowledgeSchemaGroup> {
|
||||
|
||||
/**
|
||||
* 查询知识库模式组
|
||||
*/
|
||||
KnowledgeSchemaGroupVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询知识库模式组列表
|
||||
*/
|
||||
TableDataInfo<KnowledgeSchemaGroupVo> queryPageList(KnowledgeSchemaGroupBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询知识库模式组列表
|
||||
*/
|
||||
List<KnowledgeSchemaGroupVo> queryList(KnowledgeSchemaGroupBo bo);
|
||||
|
||||
/**
|
||||
* 新增知识库模式组
|
||||
*/
|
||||
Boolean insertByBo(KnowledgeSchemaGroupBo bo);
|
||||
|
||||
/**
|
||||
* 修改知识库模式组
|
||||
*/
|
||||
Boolean updateByBo(KnowledgeSchemaGroupBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除知识库模式组
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据编码查询模式组信息
|
||||
*/
|
||||
KnowledgeSchemaGroupVo queryByCode(String code);
|
||||
|
||||
/**
|
||||
* 根据名称查询模式组信息
|
||||
*/
|
||||
KnowledgeSchemaGroupVo queryByName(String name);
|
||||
}
|
||||
+64
@@ -0,0 +1,64 @@
|
||||
package org.dromara.knowledge.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.knowledge.domain.KnowledgeSchema;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeSchemaBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeSchemaVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库数据模型Service接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeSchemaService extends IService<KnowledgeSchema> {
|
||||
|
||||
/**
|
||||
* 查询知识库模式
|
||||
*/
|
||||
KnowledgeSchemaVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询知识库模式列表
|
||||
*/
|
||||
TableDataInfo<KnowledgeSchemaVo> queryPageList(KnowledgeSchemaBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询知识库模式列表
|
||||
*/
|
||||
List<KnowledgeSchemaVo> queryList(KnowledgeSchemaBo bo);
|
||||
|
||||
/**
|
||||
* 新增知识库模式
|
||||
*/
|
||||
Boolean insertByBo(KnowledgeSchemaBo bo);
|
||||
|
||||
/**
|
||||
* 修改知识库模式
|
||||
*/
|
||||
Boolean updateByBo(KnowledgeSchemaBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除知识库模式
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据模式组ID查询模式列表
|
||||
*/
|
||||
List<KnowledgeSchemaVo> queryListBySchemaGroupId(Long schemaGroupId);
|
||||
|
||||
/**
|
||||
* 根据编码查询模式信息
|
||||
*/
|
||||
KnowledgeSchemaVo queryByCode(String code);
|
||||
|
||||
/**
|
||||
* 根据表名查询模式信息
|
||||
*/
|
||||
KnowledgeSchemaVo queryByTableName(String tableName);
|
||||
}
|
||||
+186
@@ -0,0 +1,186 @@
|
||||
package org.dromara.knowledge.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.knowledge.domain.KnowledgeVector;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeVectorBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeSearchResultVo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeVectorVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 知识片段向量Service接口
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
public interface KnowledgeVectorService extends IService<KnowledgeVector> {
|
||||
|
||||
/**
|
||||
* 查询知识片段向量
|
||||
*/
|
||||
KnowledgeVectorVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询知识片段向量列表
|
||||
*/
|
||||
TableDataInfo<KnowledgeVectorVo> queryPageList(KnowledgeVectorBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询知识片段向量列表
|
||||
*/
|
||||
List<KnowledgeVectorVo> queryList(KnowledgeVectorBo bo);
|
||||
|
||||
/**
|
||||
* 新增知识片段向量
|
||||
*/
|
||||
Boolean insertByBo(KnowledgeVectorBo bo);
|
||||
|
||||
/**
|
||||
* 修改知识片段向量
|
||||
*/
|
||||
Boolean updateByBo(KnowledgeVectorBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除知识片段向量信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据向量ID查询知识片段向量
|
||||
*/
|
||||
KnowledgeVectorVo queryByVectorId(String vectorId);
|
||||
|
||||
/**
|
||||
* 根据知识库ID查询知识片段向量列表
|
||||
*/
|
||||
List<KnowledgeVectorVo> queryByKnowledgeId(String knowledgeId);
|
||||
|
||||
/**
|
||||
* 根据文档ID查询知识片段向量列表
|
||||
*/
|
||||
List<KnowledgeVectorVo> queryByDocId(String docId);
|
||||
|
||||
/**
|
||||
* 根据知识片段ID查询知识片段向量列表
|
||||
*/
|
||||
List<KnowledgeVectorVo> queryByFragmentId(String fragmentId);
|
||||
|
||||
/**
|
||||
* 根据模型名称查询知识片段向量列表
|
||||
*/
|
||||
List<KnowledgeVectorVo> queryByModelName(String modelName);
|
||||
|
||||
/**
|
||||
* 根据状态查询知识片段向量列表
|
||||
*/
|
||||
List<KnowledgeVectorVo> queryByStatus(Integer status);
|
||||
|
||||
/**
|
||||
* 批量更新知识片段向量状态
|
||||
*/
|
||||
Boolean updateStatusByIds(Collection<Long> ids, Integer status);
|
||||
|
||||
/**
|
||||
* 根据知识库ID和状态查询知识片段向量列表
|
||||
*/
|
||||
List<KnowledgeVectorVo> queryByKnowledgeIdAndStatus(String knowledgeId, Integer status);
|
||||
|
||||
/**
|
||||
* 为知识片段生成向量
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param docId 文档ID
|
||||
* @param fragmentId 片段ID
|
||||
* @param content 片段内容
|
||||
* @param modelName 向量模型名称
|
||||
* @return 向量ID
|
||||
*/
|
||||
String generateVector(String knowledgeId, String docId, String fragmentId, String content, String modelName);
|
||||
|
||||
/**
|
||||
* 批量为知识片段生成向量
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param docId 文档ID
|
||||
* @param fragmentContents 片段内容映射 (fragmentId -> content)
|
||||
* @param modelName 向量模型名称
|
||||
* @return 成功生成向量的片段ID列表
|
||||
*/
|
||||
List<String> batchGenerateVectors(String knowledgeId, String docId,
|
||||
Map<String, String> fragmentContents, String modelName);
|
||||
|
||||
/**
|
||||
* 向量相似度搜索
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @param queryText 查询文本
|
||||
* @param modelName 向量模型名称
|
||||
* @param topK 返回结果数量
|
||||
* @param threshold 相似度阈值
|
||||
* @return 搜索结果列表
|
||||
*/
|
||||
List<KnowledgeSearchResultVo> vectorSimilaritySearch(String knowledgeId, String queryText,
|
||||
String modelName, Integer topK, Double threshold);
|
||||
|
||||
/**
|
||||
* 文本转向量
|
||||
*
|
||||
* @param text 文本内容
|
||||
* @param modelName 模型名称
|
||||
* @return 向量数据
|
||||
*/
|
||||
double[] textToVector(String text, String modelName);
|
||||
|
||||
/**
|
||||
* 计算向量相似度
|
||||
*
|
||||
* @param vector1 向量1
|
||||
* @param vector2 向量2
|
||||
* @return 相似度分数 (0-1)
|
||||
*/
|
||||
double calculateSimilarity(double[] vector1, double[] vector2);
|
||||
|
||||
/**
|
||||
* 删除知识库相关的所有向量
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @return 删除的向量数量
|
||||
*/
|
||||
int deleteVectorsByKnowledgeId(String knowledgeId);
|
||||
|
||||
/**
|
||||
* 删除文档相关的所有向量
|
||||
*
|
||||
* @param docId 文档ID
|
||||
* @return 删除的向量数量
|
||||
*/
|
||||
int deleteVectorsByDocId(String docId);
|
||||
|
||||
/**
|
||||
* 获取知识库向量统计信息
|
||||
*
|
||||
* @param knowledgeId 知识库ID
|
||||
* @return 统计信息映射
|
||||
*/
|
||||
Map<String, Object> getVectorStatistics(String knowledgeId);
|
||||
|
||||
/**
|
||||
* 检查向量模型是否可用
|
||||
*
|
||||
* @param modelName 模型名称
|
||||
* @return 是否可用
|
||||
*/
|
||||
boolean isModelAvailable(String modelName);
|
||||
|
||||
/**
|
||||
* 获取可用的向量模型列表
|
||||
*
|
||||
* @return 模型名称列表
|
||||
*/
|
||||
List<String> getAvailableModels();
|
||||
|
||||
}
|
||||
+135
@@ -0,0 +1,135 @@
|
||||
package org.dromara.knowledge.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.knowledge.domain.KnowledgeAttach;
|
||||
import org.dromara.knowledge.domain.bo.KnowledgeAttachBo;
|
||||
import org.dromara.knowledge.domain.vo.KnowledgeAttachVo;
|
||||
import org.dromara.knowledge.mapper.KnowledgeAttachMapper;
|
||||
import org.dromara.knowledge.service.KnowledgeAttachService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 知识库附件Service业务层处理
|
||||
*
|
||||
* @author pengles
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class KnowledgeAttachServiceImpl extends ServiceImpl<KnowledgeAttachMapper, KnowledgeAttach> implements KnowledgeAttachService {
|
||||
|
||||
private final KnowledgeAttachMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询知识库附件
|
||||
*/
|
||||
@Override
|
||||
public KnowledgeAttachVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询知识库附件列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<KnowledgeAttachVo> queryPageList(KnowledgeAttachBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<KnowledgeAttach> lqw = buildQueryWrapper(bo);
|
||||
Page<KnowledgeAttachVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询知识库附件列表
|
||||
*/
|
||||
@Override
|
||||
public List<KnowledgeAttachVo> queryList(KnowledgeAttachBo bo) {
|
||||
LambdaQueryWrapper<KnowledgeAttach> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<KnowledgeAttach> buildQueryWrapper(KnowledgeAttachBo bo) {
|
||||
LambdaQueryWrapper<KnowledgeAttach> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getKnowledgeId()), KnowledgeAttach::getKnowledgeId, bo.getKnowledgeId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocId()), KnowledgeAttach::getDocId, bo.getDocId());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getDocName()), KnowledgeAttach::getDocName, bo.getDocName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocType()), KnowledgeAttach::getDocType, bo.getDocType());
|
||||
lqw.eq(ObjectUtil.isNotNull(bo.getOssId()), KnowledgeAttach::getOssId, bo.getOssId());
|
||||
lqw.eq(ObjectUtil.isNotNull(bo.getPicStatus()), KnowledgeAttach::getPicStatus, bo.getPicStatus());
|
||||
lqw.eq(ObjectUtil.isNotNull(bo.getPicAnysStatus()), KnowledgeAttach::getPicAnysStatus, bo.getPicAnysStatus());
|
||||
lqw.eq(ObjectUtil.isNotNull(bo.getVectorStatus()), KnowledgeAttach::getVectorStatus, bo.getVectorStatus());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增知识库附件
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(KnowledgeAttachBo bo) {
|
||||
KnowledgeAttach add = BeanUtil.toBean(bo, KnowledgeAttach.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改知识库附件
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(KnowledgeAttachBo bo) {
|
||||
KnowledgeAttach update = BeanUtil.toBean(bo, KnowledgeAttach.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(KnowledgeAttach entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除知识库附件
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
// TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据知识库ID查询附件列表
|
||||
*/
|
||||
@Override
|
||||
public List<KnowledgeAttachVo> queryListByKnowledgeId(String knowledgeId) {
|
||||
LambdaQueryWrapper<KnowledgeAttach> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(KnowledgeAttach::getKnowledgeId, knowledgeId);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据文档ID查询附件信息
|
||||
*/
|
||||
@Override
|
||||
public KnowledgeAttachVo queryByDocId(String docId) {
|
||||
LambdaQueryWrapper<KnowledgeAttach> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(KnowledgeAttach::getDocId, docId);
|
||||
return baseMapper.selectVoOne(lqw);
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user