Quellcode durchsuchen

1、新增知识库功能

lihao16 vor 5 Monaten
Ursprung
Commit
55794d433e

+ 24 - 6
smsb-modules/smsb-device/src/main/java/com/inspur/device/service/impl/SmsbDifyDatasetsServiceImpl.java

@@ -2,6 +2,7 @@ package com.inspur.device.service.impl;
 
 import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpResponse;
+import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -45,7 +46,8 @@ public class SmsbDifyDatasetsServiceImpl implements ISmsbDifyDatasetsService {
     @Value("${dify.datasets.apiKey}")
     private String datasetsApiKey;
 
-    private final static String API_DATASETS_LIST = "/v1/datasets";
+    /** 知识库API */
+    private final static String API_DATASETS_COMMON = "/v1/datasets";
 
 
     private final SmsbDifyDatasetsMapper baseMapper;
@@ -58,7 +60,7 @@ public class SmsbDifyDatasetsServiceImpl implements ISmsbDifyDatasetsService {
      */
     @Override
     public boolean syncFromDify() {
-        String requestUrl = difyUrl + API_DATASETS_LIST + "?page=1&limit=100";
+        String requestUrl = difyUrl + API_DATASETS_COMMON + "?page=1&limit=100";
         HttpRequest request = HttpRequest.get(requestUrl)
             .header("Authorization", "Bearer " + datasetsApiKey);
         HttpResponse response = request.execute();
@@ -171,11 +173,27 @@ public class SmsbDifyDatasetsServiceImpl implements ISmsbDifyDatasetsService {
     @Override
     public Boolean insertByBo(SmsbDifyDatasetsBo bo) {
         SmsbDifyDatasets add = MapstructUtils.convert(bo, SmsbDifyDatasets.class);
-        boolean flag = baseMapper.insert(add) > 0;
-        if (flag) {
-            bo.setId(add.getId());
+        // 1、 发送请求,请求创建知识库
+        cn.hutool.json.JSONObject data = JSONUtil.createObj()
+            .set("name", add.getName())
+            .set("permission", "only_me")
+            .set("description",add.getDescription())
+            .set("indexing_technique","high_quality")
+            .set("provider","vendor");
+        String requestUrl = difyUrl + API_DATASETS_COMMON;
+        HttpRequest request = HttpRequest.post(requestUrl)
+            .header("Authorization", "Bearer " + datasetsApiKey)
+            .header("Content-Type", "application/json")
+            .body(data.toString());
+
+        HttpResponse response = request.execute();
+        // 2 接口请求失败
+        if (!response.isOk()) {
+            return false;
         }
-        return flag;
+        // 3 接口请求成功 重新同步知识库列表
+        this.syncFromDify();
+        return true;
     }
 
     /**

+ 4 - 2
smsb-plus-ui/src/views/smsb/datasets/index.vue

@@ -71,7 +71,7 @@
     </el-card>
     <!-- 添加或修改知识库管理对话框 -->
     <el-dialog :title="dialog.title" v-model="dialog.visible" width="700px" append-to-body>
-      <el-form ref="difyDatasetsFormRef" :model="form" :rules="rules" label-width="40px">
+      <el-form ref="difyDatasetsFormRef" :model="form" :rules="rules" label-width="50px">
         <el-form-item label="名称" prop="name">
           <el-input v-model="form.name" placeholder="请输入知识库名称"/>
         </el-form-item>
@@ -139,7 +139,9 @@ const data = reactive<PageData<DifyDatasetsForm, DifyDatasetsQuery>>({
     name: undefined,
     params: {}
   },
-  rules: {}
+  rules: {
+    name: [{ required: true, message: '知识库名称不能为空', trigger: 'blur' }],
+  }
 });
 
 const {queryParams, form, rules} = toRefs(data);