From 38b05fbf095af7ab785f9de702630d435d42e578 Mon Sep 17 00:00:00 2001
From: ageer <ageerle@163.com>
Date: 星期二, 18 三月 2025 22:30:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/main'

---
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/LocalModelsVectorization.java  |   92 +++++
 script/sql/ruoyi-ai.sql                                                                                         |  386 ++++++++++++++++-----
 script/docker/localModels/app.py                                                                                |  116 ++++++
 ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/localModels/SearchService.java               |   25 +
 ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/SysModelController.java             |   11 
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/VectorizationType.java         |   15 
 ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/LocalModelsSearchResponse.java |   20 +
 ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/localModels/LocalModelsofitClient.java       |  198 +++++++++++
 ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/LocalModelsSearchRequest.java  |   38 ++
 ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/OpenAiVectorization.java       |   72 +++
 script/docker/localModels/requirements.txt                                                                      |    5 
 script/docker/localModels/remade.md                                                                             |    4 
 ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/util/DesensitizationUtil.java                         |   19 +
 script/docker/localModels/Dockerfile                                                                            |   26 +
 14 files changed, 917 insertions(+), 110 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/LocalModelsSearchRequest.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/LocalModelsSearchRequest.java
new file mode 100644
index 0000000..4ca71ba
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/LocalModelsSearchRequest.java
@@ -0,0 +1,38 @@
+package org.ruoyi.common.chat.entity.models;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @program: RUOYIAI
+ * @ClassName LocalModelsSearchRequest
+ * @description:
+ * @author: hejh
+ * @create: 2025-03-15 17:22
+ * @Version 1.0
+ **/
+@Data
+public class LocalModelsSearchRequest {
+
+    private List<String> text;
+    private String model_name;
+    private String delimiter;
+    private int k;
+    private int block_size;
+    private int overlap_chars;
+
+    // 鏋勯�犲嚱鏁般�丟etter 鍜� Setter
+    public LocalModelsSearchRequest(List<String> text, String model_name, String delimiter, int k, int block_size, int overlap_chars) {
+        this.text = text;
+        this.model_name = model_name;
+        this.delimiter = delimiter;
+        this.k = k;
+        this.block_size = block_size;
+        this.overlap_chars = overlap_chars;
+    }
+
+
+}
+
+
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/LocalModelsSearchResponse.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/LocalModelsSearchResponse.java
new file mode 100644
index 0000000..12025d5
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/entity/models/LocalModelsSearchResponse.java
@@ -0,0 +1,20 @@
+package org.ruoyi.common.chat.entity.models;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class LocalModelsSearchResponse {
+    @JsonProperty("topKEmbeddings")
+
+    private List<List<List<Double>>> topKEmbeddings;  // 澶勭悊涓夊眰宓屽鏁扮粍
+
+    // 榛樿鏋勯�犲嚱鏁�
+    public LocalModelsSearchResponse() {}
+
+
+
+}
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/localModels/LocalModelsofitClient.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/localModels/LocalModelsofitClient.java
new file mode 100644
index 0000000..606a7c2
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/localModels/LocalModelsofitClient.java
@@ -0,0 +1,198 @@
+package org.ruoyi.common.chat.localModels;
+
+import io.micrometer.common.util.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.OkHttpClient;
+import org.ruoyi.common.chat.entity.models.LocalModelsSearchRequest;
+import org.ruoyi.common.chat.entity.models.LocalModelsSearchResponse;
+import org.springframework.stereotype.Service;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+import retrofit2.Retrofit;
+import retrofit2.converter.jackson.JacksonConverterFactory;
+
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+
+@Slf4j
+@Service
+public class LocalModelsofitClient {
+    private static final String BASE_URL = "http://127.0.0.1:5000"; // Flask 鏈嶅姟鐨� URL
+    private static Retrofit retrofit = null;
+
+    // 鑾峰彇 Retrofit 瀹炰緥
+    public static Retrofit getRetrofitInstance() {
+        if (retrofit == null) {
+            OkHttpClient client = new OkHttpClient.Builder()
+                    .build();
+
+            retrofit = new Retrofit.Builder()
+                    .baseUrl(BASE_URL)
+                    .client(client)
+                    .addConverterFactory(JacksonConverterFactory.create()) // 浣跨敤 Jackson 澶勭悊 JSON 杞崲
+                    .build();
+        }
+        return retrofit;
+    }
+
+    /**
+     * 鍚� Flask 鏈嶅姟鍙戦�佹枃鏈悜閲忓寲璇锋眰
+     *
+     * @param queries 鏌ヨ鏂囨湰鍒楄〃
+     * @param modelName 妯″瀷鍚嶇О
+     * @param delimiter 鏂囨湰鍒嗛殧绗�
+     * @param topK 杩斿洖鐨勭粨鏋滄暟
+     * @param blockSize 鏂囨湰鍧楀ぇ灏�
+     * @param overlapChars 閲嶅彔瀛楃鏁�
+     * @return 杩斿洖璁$畻寰楀埌鐨� Top K 宓屽叆鍚戦噺鍒楄〃
+     */
+
+    public static List<List<Double>> getTopKEmbeddings(
+            List<String> queries,
+            String modelName,
+            String delimiter,
+            int topK,
+            int blockSize,
+            int overlapChars) {
+
+        modelName = (!StringUtils.isEmpty(modelName)) ? modelName : "msmarco-distilbert-base-tas-b"; // 榛樿妯″瀷鍚嶇О
+        delimiter = (!StringUtils.isEmpty(delimiter) ) ? delimiter : ".";                             // 榛樿鍒嗛殧绗�
+        topK = (topK > 0) ? topK : 3;                                                  // 榛樿杩斿洖 3 涓粨鏋�
+        blockSize = (blockSize > 0) ? blockSize : 500;                                 // 榛樿鏂囨湰鍧楀ぇ灏忎负 500
+        overlapChars = (overlapChars > 0) ? overlapChars : 50;                         // 榛樿閲嶅彔瀛楃鏁颁负 50
+
+        // 鍒涘缓 Retrofit 瀹炰緥
+        Retrofit retrofit = getRetrofitInstance();
+
+        // 鍒涘缓 SearchService 鎺ュ彛
+        SearchService service = retrofit.create(SearchService.class);
+
+        // 鍒涘缓璇锋眰瀵硅薄 LocalModelsSearchRequest
+        LocalModelsSearchRequest request = new LocalModelsSearchRequest(
+                queries,            // 鏌ヨ鏂囨湰鍒楄〃
+                modelName,          // 妯″瀷鍚嶇О
+                delimiter,          // 鏂囨湰鍒嗛殧绗�
+                topK,               // 杩斿洖鐨勭粨鏋滄暟
+                blockSize,          // 鏂囨湰鍧楀ぇ灏�
+                overlapChars        // 閲嶅彔瀛楃鏁�
+        );
+
+        final CountDownLatch latch = new CountDownLatch(1);  // 鍒涘缓涓�涓� CountDownLatch
+        final List<List<Double>>[] topKEmbeddings = new List[]{null}; // 浣跨敤鏁扮粍鏉ュ瓨鍌ㄧ粨鏋滐紙鍥犱负 Java 涓嶆敮鎸佺洿鎺ヤ慨鏀� List锛�
+
+        // 鍙戣捣寮傛璇锋眰
+        service.vectorize(request).enqueue(new Callback<LocalModelsSearchResponse>() {
+            @Override
+            public void onResponse(Call<LocalModelsSearchResponse> call, Response<LocalModelsSearchResponse> response) {
+                if (response.isSuccessful()) {
+                    LocalModelsSearchResponse searchResponse = response.body();
+                    if (searchResponse != null) {
+                        topKEmbeddings[0] = searchResponse.getTopKEmbeddings().get(0);  // 鑾峰彇缁撴灉
+                        log.info("Successfully retrieved embeddings");
+                    } else {
+                        log.error("Response body is null");
+                    }
+                } else {
+                    log.error("Request failed. HTTP error code: " + response.code());
+                }
+                latch.countDown();  // 璇锋眰瀹屾垚锛屽噺灏戣鏁�
+            }
+
+            @Override
+            public void onFailure(Call<LocalModelsSearchResponse> call, Throwable t) {
+                t.printStackTrace();
+                log.error("Request failed: ", t);
+                latch.countDown();  // 璇锋眰澶辫触锛屽噺灏戣鏁�
+            }
+        });
+
+        try {
+            latch.await();  // 绛夊緟璇锋眰瀹屾垚
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+
+        return topKEmbeddings[0];  // 杩斿洖缁撴灉
+    }
+
+//    public static void main(String[] args) {
+//        // 绀轰緥璋冪敤
+//        List<String> queries = Arrays.asList("What is artificial intelligence?", "AI is transforming industries.");
+//        String modelName = "msmarco-distilbert-base-tas-b";
+//        String delimiter = ".";
+//        int topK = 3;
+//        int blockSize = 500;
+//        int overlapChars = 50;
+//
+//        List<List<Double>> topKEmbeddings = getTopKEmbeddings(queries, modelName, delimiter, topK, blockSize, overlapChars);
+//
+//        // 鎵撳嵃缁撴灉
+//        if (topKEmbeddings != null) {
+//            System.out.println("Top K embeddings: ");
+//            for (List<Double> embedding : topKEmbeddings) {
+//                System.out.println(embedding);
+//            }
+//        } else {
+//            System.out.println("No embeddings returned.");
+//        }
+//    }
+
+
+//    public static void main(String[] args) {
+//        // 鍒涘缓 Retrofit 瀹炰緥
+//        Retrofit retrofit = LocalModelsofitClient.getRetrofitInstance();
+//
+//        // 鍒涘缓 SearchService 鎺ュ彛
+//        SearchService service = retrofit.create(SearchService.class);
+//
+//        // 鍒涘缓璇锋眰瀵硅薄 LocalModelsSearchRequest
+//        LocalModelsSearchRequest request = new LocalModelsSearchRequest(
+//                Arrays.asList("What is artificial intelligence?", "AI is transforming industries."), // 鏌ヨ鏂囨湰鍒楄〃
+//                "msmarco-distilbert-base-tas-b",  // 妯″瀷鍚嶇О
+//                ".",  // 鍒嗛殧绗�
+//                3,  // 杩斿洖鐨勭粨鏋滄暟
+//                500,  // 鏂囨湰鍧楀ぇ灏�
+//                50  // 閲嶅彔瀛楃鏁�
+//        );
+//
+//        // 鍙戣捣璇锋眰
+//        service.vectorize(request).enqueue(new Callback<LocalModelsSearchResponse>() {
+//            @Override
+//            public void onResponse(Call<LocalModelsSearchResponse> call, Response<LocalModelsSearchResponse> response) {
+//                if (response.isSuccessful()) {
+//                    LocalModelsSearchResponse searchResponse = response.body();
+//                    System.out.println("Response Body: " + response.body());  // Print the whole response body for debugging
+//
+//                    if (searchResponse != null) {
+//                        // If the response is not null, process it.
+//                        // Example: Extract the embeddings and print them
+//                        List<List<List<Double>>> topKEmbeddings = searchResponse.getTopKEmbeddings();
+//                        if (topKEmbeddings != null) {
+//                            // Print the Top K embeddings
+//
+//                        } else {
+//                            System.err.println("Top K embeddings are null");
+//                        }
+//
+//                        // If there is more information you want to process, handle it here
+//
+//                    } else {
+//                        System.err.println("Response body is null");
+//                    }
+//                } else {
+//                    System.err.println("Request failed. HTTP error code: " + response.code());
+//                    log.error("Failed to retrieve data. HTTP error code: " + response.code());
+//                }
+//            }
+//
+//            @Override
+//            public void onFailure(Call<LocalModelsSearchResponse> call, Throwable t) {
+//                // 璇锋眰澶辫触锛屾墦鍗伴敊璇�
+//                t.printStackTrace();
+//                log.error("Request failed: ", t);
+//            }
+//        });
+//    }
+
+}
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/localModels/SearchService.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/localModels/SearchService.java
new file mode 100644
index 0000000..3fa131e
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/localModels/SearchService.java
@@ -0,0 +1,25 @@
+package org.ruoyi.common.chat.localModels;
+
+
+
+import org.ruoyi.common.chat.entity.models.LocalModelsSearchRequest;
+import org.ruoyi.common.chat.entity.models.LocalModelsSearchResponse;
+import retrofit2.Call;
+import retrofit2.http.Body;
+import retrofit2.http.POST;
+/**
+ * @program: RUOYIAI
+ * @ClassName SearchService
+ * @description: 璇锋眰妯″瀷
+ * @author: hejh
+ * @create: 2025-03-15 17:27
+ * @Version 1.0
+ **/
+
+
+public interface SearchService {
+    @POST("/vectorize") // 涓� Flask 鏈嶅姟涓殑璺敱鍖归厤
+    Call<LocalModelsSearchResponse> vectorize(@Body LocalModelsSearchRequest request);
+}
+
+
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/LocalModelsVectorization.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/LocalModelsVectorization.java
new file mode 100644
index 0000000..d7dff25
--- /dev/null
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/LocalModelsVectorization.java
@@ -0,0 +1,92 @@
+package org.ruoyi.knowledge.chain.vectorizer;
+
+import jakarta.annotation.Resource;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.ruoyi.common.chat.config.ChatConfig;
+import org.ruoyi.common.chat.localModels.LocalModelsofitClient;
+import org.ruoyi.common.chat.openai.OpenAiStreamClient;
+import org.ruoyi.knowledge.domain.vo.KnowledgeInfoVo;
+import org.ruoyi.knowledge.service.IKnowledgeInfoService;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+@Slf4j
+@RequiredArgsConstructor
+public class LocalModelsVectorization   {
+    @Resource
+    private IKnowledgeInfoService knowledgeInfoService;
+
+    @Resource
+    private LocalModelsofitClient localModelsofitClient;
+
+    @Getter
+    private OpenAiStreamClient openAiStreamClient;
+
+    private final ChatConfig chatConfig;
+
+    /**
+     * 鎵归噺鍚戦噺鍖�
+     *
+     * @param chunkList 鏂囨湰鍧楀垪琛�
+     * @param kid 鐭ヨ瘑 ID
+     * @return 鍚戦噺鍖栫粨鏋�
+     */
+
+    public List<List<Double>> batchVectorization(List<String> chunkList, String kid) {
+        logVectorizationRequest(kid, chunkList);  // 鍦ㄥ悜閲忓寲寮�濮嬪墠璁板綍鏃ュ織
+        openAiStreamClient = chatConfig.getOpenAiStreamClient(); // 鑾峰彇 OpenAi 瀹㈡埛绔�
+        KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoService.queryById(Long.valueOf(kid)); // 鏌ヨ鐭ヨ瘑淇℃伅
+        // 璋冪敤 localModelsofitClient 鑾峰彇 Top K 宓屽叆鍚戦噺
+        try {
+            return localModelsofitClient.getTopKEmbeddings(
+                    chunkList,
+                    knowledgeInfoVo.getVector(),
+                    knowledgeInfoVo.getKnowledgeSeparator(),
+                    knowledgeInfoVo.getRetrieveLimit(),
+                    knowledgeInfoVo.getTextBlockSize(),
+                    knowledgeInfoVo.getOverlapChar()
+            );
+        } catch (Exception e) {
+            log.error("Failed to perform batch vectorization for knowledgeId: {}", kid, e);
+            throw new RuntimeException("Batch vectorization failed", e);
+        }
+    }
+
+    /**
+     * 鍗曚竴鏂囨湰鍧楀悜閲忓寲
+     *
+     * @param chunk 鍗曚竴鏂囨湰鍧�
+     * @param kid 鐭ヨ瘑 ID
+     * @return 鍚戦噺鍖栫粨鏋�
+     */
+
+    public List<Double> singleVectorization(String chunk, String kid) {
+        List<String> chunkList = new ArrayList<>();
+        chunkList.add(chunk);
+
+        // 璋冪敤鎵归噺鍚戦噺鍖栨柟娉�
+        List<List<Double>> vectorList = batchVectorization(chunkList, kid);
+
+        if (vectorList.isEmpty()) {
+            log.warn("Vectorization returned empty list for chunk: {}", chunk);
+            return new ArrayList<>();
+        }
+
+        return vectorList.get(0); // 杩斿洖绗竴涓悜閲�
+    }
+
+    /**
+     * 鎻愪緵鏇寸畝娲佺殑鏃ュ織璁板綍鏂规硶
+     *
+     * @param kid 鐭ヨ瘑 ID
+     * @param chunkList 鏂囨湰鍧楀垪琛�
+     */
+    private void logVectorizationRequest(String kid, List<String> chunkList) {
+        log.info("Starting vectorization for Knowledge ID: {} with {} chunks.", kid, chunkList.size());
+    }
+}
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/OpenAiVectorization.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/OpenAiVectorization.java
index 0f2d0ba..764c2c1 100644
--- a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/OpenAiVectorization.java
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/OpenAiVectorization.java
@@ -18,6 +18,7 @@
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Component
 @Slf4j
@@ -27,6 +28,9 @@
     @Lazy
     @Resource
     private IKnowledgeInfoService knowledgeInfoService;
+    @Lazy
+    @Resource
+    private LocalModelsVectorization localModelsVectorization;
 
     @Getter
     private OpenAiStreamClient openAiStreamClient;
@@ -35,25 +39,63 @@
 
     @Override
     public List<List<Double>> batchVectorization(List<String> chunkList, String kid) {
-        openAiStreamClient = chatConfig.getOpenAiStreamClient();
-        KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoService.queryById(Long.valueOf(kid));
-        Embedding embedding = Embedding.builder()
-            .input(chunkList)
-            .model(knowledgeInfoVo.getVectorModel())
-            .build();
-        EmbeddingResponse embeddings = openAiStreamClient.embeddings(embedding);
         List<List<Double>> vectorList = new ArrayList<>();
-        embeddings.getData().forEach(data -> {
-            List<BigDecimal> vector = data.getEmbedding();
-            List<Double> doubleVector = new ArrayList<>();
-            for (BigDecimal bd : vector) {
-                doubleVector.add(bd.doubleValue());
-            }
-            vectorList.add(doubleVector);
-        });
+
+        // 鑾峰彇鐭ヨ瘑搴撲俊鎭�
+        KnowledgeInfoVo knowledgeInfoVo = knowledgeInfoService.queryById(Long.valueOf(kid));
+
+        // 濡傛灉浣跨敤鏈湴妯″瀷
+        try {
+            return localModelsVectorization.batchVectorization(chunkList, kid);
+        } catch (Exception e) {
+            log.error("Local models vectorization failed, falling back to OpenAI embeddings", e);
+        }
+
+        // 濡傛灉鏈湴妯″瀷澶辫触锛屽垯璋冪敤 OpenAI 鏈嶅姟杩涜鍚戦噺鍖�
+        Embedding embedding = buildEmbedding(chunkList, knowledgeInfoVo);
+        EmbeddingResponse embeddings = openAiStreamClient.embeddings(embedding);
+
+        // 澶勭悊 OpenAI 杩斿洖鐨勫祵鍏ユ暟鎹�
+        vectorList = processOpenAiEmbeddings(embeddings);
+
         return vectorList;
     }
 
+    /**
+     * 鏋勫缓 Embedding 瀵硅薄
+     */
+    private Embedding buildEmbedding(List<String> chunkList, KnowledgeInfoVo knowledgeInfoVo) {
+        return Embedding.builder()
+                .input(chunkList)
+                .model(knowledgeInfoVo.getVectorModel())
+                .build();
+    }
+
+    /**
+     * 澶勭悊 OpenAI 杩斿洖鐨勫祵鍏ユ暟鎹�
+     */
+    private List<List<Double>> processOpenAiEmbeddings(EmbeddingResponse embeddings) {
+        List<List<Double>> vectorList = new ArrayList<>();
+
+        embeddings.getData().forEach(data -> {
+            List<BigDecimal> vector = data.getEmbedding();
+            List<Double> doubleVector = convertToDoubleList(vector);
+            vectorList.add(doubleVector);
+        });
+
+        return vectorList;
+    }
+
+    /**
+     * 灏� BigDecimal 杞崲涓� Double 鍒楄〃
+     */
+    private List<Double> convertToDoubleList(List<BigDecimal> vector) {
+        return vector.stream()
+                .map(BigDecimal::doubleValue)
+                .collect(Collectors.toList());
+    }
+
+
     @Override
     public List<Double> singleVectorization(String chunk, String kid) {
         List<String> chunkList = new ArrayList<>();
diff --git a/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/VectorizationType.java b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/VectorizationType.java
new file mode 100644
index 0000000..a9d370d
--- /dev/null
+++ b/ruoyi-modules/ruoyi-knowledge/src/main/java/org/ruoyi/knowledge/chain/vectorizer/VectorizationType.java
@@ -0,0 +1,15 @@
+package org.ruoyi.knowledge.chain.vectorizer;
+
+public enum VectorizationType {
+    OPENAI,    // OpenAI 鍚戦噺鍖�
+    LOCAL;     // 鏈湴妯″瀷鍚戦噺鍖�
+
+    public static VectorizationType fromString(String type) {
+        for (VectorizationType v : values()) {
+            if (v.name().equalsIgnoreCase(type)) {
+                return v;
+            }
+        }
+        throw new IllegalArgumentException("Unknown VectorizationType: " + type);
+    }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/SysModelController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/SysModelController.java
index dfe0284..8cc5357 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/SysModelController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/controller/system/SysModelController.java
@@ -25,12 +25,14 @@
 import org.ruoyi.system.service.ISysModelService;
 import org.ruoyi.system.service.ISysPackagePlanService;
 import org.ruoyi.system.service.ISysUserService;
+import org.ruoyi.system.util.DesensitizationUtil;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 绯荤粺妯″瀷
@@ -49,7 +51,6 @@
     private final ISysPackagePlanService sysPackagePlanService;
 
     private final ISysUserService userService;
-
 
     /**
      * 鏌ヨ绯荤粺妯″瀷鍒楄〃 - 鍏ㄩ儴
@@ -82,6 +83,14 @@
             List<String> array = new ArrayList<>(Arrays.asList(sysPackagePlanVo.getPlanDetail().split(",")));
             sysModelVos.removeIf(model -> !array.contains(model.getModelName()));
         }
+        sysModelVos.stream().map(vo -> {
+                    String maskedApiHost = DesensitizationUtil.maskData(vo.getApiHost());
+                    String maskedApiKey = DesensitizationUtil.maskData(vo.getApiKey());
+                    vo.setApiHost(maskedApiHost);
+                    vo.setApiKey(maskedApiKey);
+                    return vo;
+                })
+                .collect(Collectors.toList());
         return R.ok(sysModelVos);
     }
 
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/util/DesensitizationUtil.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/util/DesensitizationUtil.java
new file mode 100644
index 0000000..bbcb1aa
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/util/DesensitizationUtil.java
@@ -0,0 +1,19 @@
+package org.ruoyi.system.util;
+
+
+public class DesensitizationUtil {
+    public static String maskData(String data) {
+        if (data == null || data.length() <= 4) {
+            return data;
+        }
+        int start = 2;
+        int end = data.length() - 2;
+        StringBuilder masked = new StringBuilder();
+        masked.append(data, 0, start);
+        for (int i = start; i < end; i++) {
+            masked.append('*');
+        }
+        masked.append(data.substring(end));
+        return masked.toString();
+    }
+}
diff --git a/script/docker/localModels/Dockerfile b/script/docker/localModels/Dockerfile
new file mode 100644
index 0000000..0f1e606
--- /dev/null
+++ b/script/docker/localModels/Dockerfile
@@ -0,0 +1,26 @@
+# 浣跨敤 Python 3.8 slim 浣滀负鍩虹闀滃儚锛堣交閲忕ǔ瀹氾級
+FROM python:3.10
+
+# 璁剧疆宸ヤ綔鐩綍
+WORKDIR /app
+
+# 澶嶅埗鎵�鏈夋枃浠跺埌瀹瑰櫒
+COPY . /app
+
+# 鏇存柊 pip 骞跺畨瑁� wheel锛堥伩鍏嶄緷璧栭棶棰橈級
+RUN pip install --upgrade pip wheel
+ 
+# 浣跨敤闃块噷浜� PyPI 闀滃儚瀹夎渚濊禆锛屽苟娣诲姞 trusted-host
+RUN pip install -i https://mirrors.aliyun.com/pypi/simple \
+    --trusted-host mirrors.aliyun.com \
+    --no-cache-dir -r requirements.txt
+
+# 鏆撮湶 Flask 绔彛
+EXPOSE 5000
+
+# 璁剧疆鐜鍙橀噺
+ENV FLASK_APP=app.py
+ENV FLASK_RUN_HOST=0.0.0.0
+
+# 杩愯 Flask
+CMD ["flask", "run", "--host=0.0.0.0"]
diff --git a/script/docker/localModels/app.py b/script/docker/localModels/app.py
new file mode 100644
index 0000000..645a9b4
--- /dev/null
+++ b/script/docker/localModels/app.py
@@ -0,0 +1,116 @@
+from flask import Flask, request, jsonify
+from sentence_transformers import SentenceTransformer
+from sklearn.metrics.pairwise import cosine_similarity
+import json
+
+app = Flask(__name__)
+
+# 鍒涘缓涓�涓叏灞�鐨勬ā鍨嬬紦瀛樺瓧鍏�
+model_cache = {}
+
+# 鍒嗗壊鏂囨湰鍧�
+def split_text(text, block_size, overlap_chars, delimiter):
+    chunks = text.split(delimiter)
+    text_blocks = []
+    current_block = ""
+
+    for chunk in chunks:
+        if len(current_block) + len(chunk) + 1 <= block_size:
+            if current_block:
+                current_block += " " + chunk
+            else:
+                current_block = chunk
+        else:
+            text_blocks.append(current_block)
+            current_block = chunk
+    if current_block:
+        text_blocks.append(current_block)
+
+    overlap_blocks = []
+    for i in range(len(text_blocks)):
+        if i > 0:
+            overlap_block = text_blocks[i - 1][-overlap_chars:] + text_blocks[i]
+            overlap_blocks.append(overlap_block)
+        overlap_blocks.append(text_blocks[i])
+
+    return overlap_blocks
+
+# 鏂囨湰鍚戦噺鍖�
+def vectorize_text_blocks(text_blocks, model):
+    return model.encode(text_blocks)
+
+# 鏂囨湰妫�绱�
+def retrieve_top_k(query, knowledge_base, k, block_size, overlap_chars, delimiter, model):
+    # 灏嗙煡璇嗗簱鎷嗗垎涓烘枃鏈潡
+    text_blocks = split_text(knowledge_base, block_size, overlap_chars, delimiter)
+    # 鍚戦噺鍖栨枃鏈潡
+    knowledge_vectors = vectorize_text_blocks(text_blocks, model)
+    # 鍚戦噺鍖栨煡璇㈡枃鏈�
+    query_vector = model.encode([query]).reshape(1, -1)
+    # 璁$畻鐩镐技搴�
+    similarities = cosine_similarity(query_vector, knowledge_vectors)
+    # 鑾峰彇鐩镐技搴︽渶楂樼殑 k 涓枃鏈潡鐨勭储寮�
+    top_k_indices = similarities[0].argsort()[-k:][::-1]
+
+    # 杩斿洖鏂囨湰鍧楀拰瀹冧滑鐨勫悜閲�
+    top_k_texts = [text_blocks[i] for i in top_k_indices]
+    top_k_embeddings = [knowledge_vectors[i] for i in top_k_indices]
+
+    return top_k_texts, top_k_embeddings
+
+@app.route('/vectorize', methods=['POST'])
+def vectorize_text():
+    # 浠庤姹備腑鑾峰彇 JSON 鏁版嵁
+    data = request.json
+    print(f"Received request data: {data}")  # 璋冭瘯杈撳嚭璇锋眰鏁版嵁
+
+    text_list = data.get("text", [])
+    model_name = data.get("model_name", "msmarco-distilbert-base-tas-b")  # 榛樿妯″瀷
+
+    delimiter = data.get("delimiter", "\n")  # 榛樿鍒嗛殧绗�
+    k = int(data.get("k", 3))  # 榛樿妫�绱㈡潯鏁�
+    block_size = int(data.get("block_size", 500))  # 榛樿鏂囨湰鍧楀ぇ灏�
+    overlap_chars = int(data.get("overlap_chars", 50))  # 榛樿閲嶅彔瀛楃鏁�
+
+    if not text_list:
+        return jsonify({"error": "Text is required."}), 400
+
+    # 妫�鏌ユā鍨嬫槸鍚﹀凡缁忓姞杞�
+    if model_name not in model_cache:
+        try:
+            model = SentenceTransformer(model_name)
+            model_cache[model_name] = model  # 缂撳瓨妯″瀷
+        except Exception as e:
+            return jsonify({"error": f"Failed to load model: {e}"}), 500
+
+    model = model_cache[model_name]
+
+    top_k_texts_all = []
+    top_k_embeddings_all = []
+
+    # 濡傛灉鍙湁涓�涓煡璇㈡枃鏈�
+    if len(text_list) == 1:
+        top_k_texts, top_k_embeddings = retrieve_top_k(text_list[0], text_list[0], k, block_size, overlap_chars, delimiter, model)
+        top_k_texts_all.append(top_k_texts)
+        top_k_embeddings_all.append(top_k_embeddings)
+    elif len(text_list) > 1:
+        # 濡傛灉澶氫釜鏌ヨ鏂囨湰锛屼緷娆″鐞�
+        for query in text_list:
+            top_k_texts, top_k_embeddings = retrieve_top_k(query, text_list[0], k, block_size, overlap_chars, delimiter, model)
+            top_k_texts_all.append(top_k_texts)
+            top_k_embeddings_all.append(top_k_embeddings)
+
+    # 灏嗗祵鍏ュ悜閲忥紙ndarray锛夎浆鎹负鍙簭鍒楀寲鐨勫垪琛�
+    top_k_embeddings_all = [[embedding.tolist() for embedding in embeddings] for embeddings in top_k_embeddings_all]
+
+    print(f"Top K texts: {top_k_texts_all}")  # 鎵撳嵃妫�绱㈠埌鐨勬枃鏈�
+    print(f"Top K embeddings: {top_k_embeddings_all}")  # 鎵撳嵃妫�绱㈠埌鐨勫悜閲�
+
+    # 杩斿洖 JSON 鏍煎紡鐨勬暟鎹�
+    return jsonify({
+
+        "topKEmbeddings": top_k_embeddings_all  # 杩斿洖宓屽叆鍚戦噺
+    })
+
+if __name__ == '__main__':
+    app.run(host="0.0.0.0", port=5000, debug=True)
diff --git a/script/docker/localModels/remade.md b/script/docker/localModels/remade.md
new file mode 100644
index 0000000..d6af3d2
--- /dev/null
+++ b/script/docker/localModels/remade.md
@@ -0,0 +1,4 @@
+1.涓嬭浇闀滃儚
+docker pull registry.cn-hangzhou.aliyuncs.com/hejh-docker/localmodel:0.1.1
+2. 鍚姩 
+docker run -p 5000:5000  <imageId>
\ No newline at end of file
diff --git a/script/docker/localModels/requirements.txt b/script/docker/localModels/requirements.txt
new file mode 100644
index 0000000..2d62483
--- /dev/null
+++ b/script/docker/localModels/requirements.txt
@@ -0,0 +1,5 @@
+Flask==3.1.0
+sentence-transformers==3.4.1
+scikit-learn==1.6.1
+werkzeug>=3.1
+
diff --git a/script/sql/ruoyi-ai.sql b/script/sql/ruoyi-ai.sql
index f8a900a..152c480 100644
--- a/script/sql/ruoyi-ai.sql
+++ b/script/sql/ruoyi-ai.sql
@@ -1,17 +1,17 @@
 /*
- Navicat MySQL Data Transfer
+ Navicat Premium Dump SQL
 
  Source Server         : ruoyi-ai
  Source Server Type    : MySQL
- Source Server Version : 50740
+ Source Server Version : 50740 (5.7.40-log)
  Source Host           : 43.139.70.230:3306
  Source Schema         : ruoyi-ai
 
  Target Server Type    : MySQL
- Target Server Version : 50740
+ Target Server Version : 50740 (5.7.40-log)
  File Encoding         : 65001
 
- Date: 02/03/2025 11:40:49
+ Date: 18/03/2025 13:58:52
 */
 
 SET NAMES utf8mb4;
@@ -47,31 +47,6 @@
 INSERT INTO `chat_app_store` VALUES (6, '鏂囩敓瑙嗛', '灏嗘枃瀛楀唴瀹硅浆鍖栦负鐢熷姩瑙嗛', 'http://panda-1253683406.cos.ap-guangzhou.myqcloud.com/panda/2025/02/11/15d878c58db248afa886032efb292467.png', '/video', NULL, NULL, NULL, NULL, NULL, NULL);
 
 -- ----------------------------
--- Table structure for chat_audio_role
--- ----------------------------
-DROP TABLE IF EXISTS `chat_audio_role`;
-CREATE TABLE `chat_audio_role`  (
-  `id` bigint(20) NOT NULL COMMENT 'id',
-  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '瑙掕壊鍚嶇О',
-  `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '瑙掕壊鎻忚堪',
-  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '澶村儚',
-  `voice_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '瑙掕壊id',
-  `file_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '闊抽鍦板潃',
-  `create_dept` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '閮ㄩ棬',
-  `create_by` bigint(20) NULL DEFAULT NULL COMMENT '鍒涘缓鑰�',
-  `create_time` datetime NULL DEFAULT NULL COMMENT '鍒涘缓鏃堕棿',
-  `update_by` bigint(20) NULL DEFAULT NULL COMMENT '鏇存柊鑰�',
-  `update_time` datetime NULL DEFAULT NULL COMMENT '鏇存柊鏃堕棿',
-  `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '澶囨敞',
-  PRIMARY KEY (`id`) USING BTREE,
-  UNIQUE INDEX `voice_id`(`create_by`, `voice_id`) USING BTREE
-) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '搴旂敤甯傚満' ROW_FORMAT = DYNAMIC;
-
--- ----------------------------
--- Records of chat_audio_role
--- ----------------------------
-
--- ----------------------------
 -- Table structure for chat_config
 -- ----------------------------
 DROP TABLE IF EXISTS `chat_config`;
@@ -93,12 +68,16 @@
   `tenant_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '绉熸埛Id',
   PRIMARY KEY (`id`) USING BTREE,
   UNIQUE INDEX `unique_category_key`(`category`, `config_name`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 1818270017966837762 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '閰嶇疆淇℃伅琛�' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 1897610056458412058 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '閰嶇疆淇℃伅琛�' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of chat_config
 -- ----------------------------
 INSERT INTO `chat_config` VALUES (1779450794448789505, 'chat', 'apiKey', 'sk-xx', 'API 瀵嗛挜', 103, '2024-04-14 18:05:05', '1', '1', '2024-04-23 23:56:54', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1779450794448799507, 'cover', 'token', 'xx', '缁樺0缇庨煶token', 103, '2024-04-14 18:05:05', '1', '1', '2024-04-23 23:56:54', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1779450794448799508, 'cover', 'cover_url', 'https://wechatscan.com/a/open/karaoke/cover', '缈诲敱鍦板潃', 103, '2024-04-14 18:05:05', '1', '1', '2024-04-23 23:56:54', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1779450794448799509, 'cover', 'search_music_url', 'https://wechatscan.com/a/open/karaoke/search', '鏌ユ壘姝屾洸', 103, '2024-04-14 18:05:05', '1', '1', '2024-04-23 23:56:54', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1779450794448799601, 'ppt', 'apiKey', 'xx', '鏂囧澶歛pikey', 103, '2024-04-14 18:05:05', '1', '1', '2024-04-23 23:56:54', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1779450794872414210, 'chat', 'apiHost', 'https://api.pandarobot.chat/', 'API 鍦板潃', 103, '2024-04-14 18:05:05', '1', '1', '2024-04-23 23:56:54', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1779497340548784129, 'pay', 'pid', '1000', '鍟嗘埛PID', 103, '2024-04-14 21:10:02', '1', '1', '2024-04-28 17:46:31', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1779497340938854401, 'pay', 'key', 'xx', '鍟嗘埛瀵嗛挜', 103, '2024-04-14 21:10:02', '1', '1', '2024-04-28 17:46:31', NULL, NULL, '0', NULL, 0);
@@ -128,24 +107,32 @@
 INSERT INTO `chat_config` VALUES (1786058372897406977, 'review', 'secretKey', 'xx', 'secretKey', 103, '2024-05-02 23:41:14', '1', '1', '2024-05-03 01:18:50', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1792069350789324801, 'weixin', 'appId', 'xx', '搴旂敤ID', 103, '2024-05-19 13:46:43', '1', '1', '2024-05-19 22:34:39', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1792069351246503938, 'weixin', 'appSecret', 'xx', '搴旂敤瀵嗛挜', 103, '2024-05-19 13:46:43', '1', '1', '2024-05-19 22:34:39', NULL, NULL, '0', NULL, 0);
-INSERT INTO `chat_config` VALUES (1792069351246503939, 'weixin', 'mchId', 'xx', '鍟嗘埛ID', 103, '2024-05-19 13:46:43', '1', '1', '2024-05-19 22:34:39', NULL, NULL, '0', NULL, 0);
-INSERT INTO `chat_config` VALUES (1792183360796790785, 'weixin', 'notifyUrl', 'https://www.pandarobot.chat/pay/notify/wxOrder', '鍥炶皟鍦板潃', 103, '2024-05-19 21:19:45', '1', '1', '2024-05-19 22:34:40', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1792069351246503939, 'weixin', 'mchId', '1677338089', '鍟嗘埛ID', 103, '2024-05-19 13:46:43', '1', '1', '2024-05-19 22:34:39', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1792183360796790785, 'weixin', 'notifyUrl', 'https://mp.pandarobot.chat/pay/notify/wxOrder', '鍥炶皟鍦板潃', 103, '2024-05-19 21:19:45', '1', '1', '2024-05-19 22:34:40', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1792183361065226241, 'weixin', 'enabled', 'true', '寮�鍚敮浠�', 103, '2024-05-19 21:19:45', '1', '1', '2024-05-19 22:34:40', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1792207511704100866, 'sys', 'name', '鐔婄尗鍔╂墜', '缃戠珯鍚嶇О', 103, '2024-05-19 22:55:43', '1', '1', '2024-08-11 12:03:04', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1792207512089976834, 'sys', 'logoImage', 'http://panda-1253683406.cos.ap-guangzhou.myqcloud.com/panda/2024/05/19/4c106628754b4bd882a4c002eaa317f5.jpg', '缃戠珯logo', 103, '2024-05-19 22:55:43', '1', '1', '2024-08-11 12:03:04', NULL, NULL, '0', NULL, 0);
-INSERT INTO `chat_config` VALUES (1792207512412938241, 'sys', 'copyright', 'Copyright 漏 2024', '鐗堟潈淇℃伅', 103, '2024-05-19 22:55:43', '1', '1', '2024-08-11 12:03:04', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1792207512412938241, 'sys', 'copyright', 'Copyright 漏 ageerle 2025 ', '鐗堟潈淇℃伅', 103, '2024-05-19 22:55:43', '1', '1', '2024-08-11 12:03:04', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1792207512740093954, 'sys', 'customImage', 'http://panda-1253683406.cos.ap-guangzhou.myqcloud.com/panda/2024/05/19/2faba7a5fa174d7c8d573ce3f031ec51.jpg', '瀹㈡湇浜岀淮鐮�', 103, '2024-05-19 22:55:43', '1', '1', '2024-08-11 12:03:04', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1792207512740093955, 'sys', 'activate', 'true', '绯荤粺婵�娲荤姸鎬�', 103, '2024-05-19 22:55:43', '1', '1', '2024-06-04 04:26:14', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1795022320576143362, 'sys', 'authcode', '1716475338010', '璇佷功缂栧彿', 103, '2024-05-27 17:20:46', NULL, NULL, '2024-05-27 17:20:46', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1795022320576143363, 'stripe', 'success', 'http://xx:6039/success', '鎴愬姛鍥炶皟', 103, '2024-05-27 17:20:46', NULL, '1', '2024-08-11 12:02:41', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1795022320576143364, 'stripe', 'cancel', 'http://xx:6039/cancel', '鍙栨秷鍥炶皟', 103, '2024-05-27 17:20:46', NULL, '1', '2024-08-11 12:02:41', NULL, NULL, '0', NULL, 0);
-INSERT INTO `chat_config` VALUES (1795022320576143365, 'stripe', 'key', 'xx', '鏀粯瀵嗛挜', 103, '2024-05-27 17:20:46', NULL, '1', '2024-08-11 12:02:42', NULL, NULL, '0', NULL, 0);
-INSERT INTO `chat_config` VALUES (1795022320576143366, 'stripe', 'secret', 'xx', '鍥炶皟瀵嗛挜', 103, '2024-05-27 17:20:46', NULL, '1', '2024-08-11 12:02:42', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1795022320576143365, 'stripe', 'key', 'xx0005', '鏀粯瀵嗛挜', 103, '2024-05-27 17:20:46', NULL, '1', '2024-08-11 12:02:42', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1795022320576143366, 'stripe', 'secret', 'xx0005', '鍥炶皟瀵嗛挜', 103, '2024-05-27 17:20:46', NULL, '1', '2024-08-11 12:02:42', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1811317731650797570, 'mail', 'free', '3', '鍏嶈垂瀵硅瘽娆℃暟', 103, '2024-07-11 16:32:55', '1', '1', '2024-07-17 17:28:52', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1811317732300914689, 'mail', 'mailModel', '<p>鎮ㄦ娆$殑楠岃瘉鐮佷负锛歿code}锛屾湁鏁堟湡涓�30鍒嗛挓锛岃灏藉揩濉啓!</p><p><br></p>', '閭妯℃澘', 103, '2024-07-11 16:32:55', '1', '1', '2024-07-17 17:28:52', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1813506141979254785, 'mail', 'mailTitle', '銆愮唺鐚姪鎵嬨�戦獙璇佺爜', '閭鏍囬', 103, '2024-07-17 17:28:52', '1', '1', '2024-07-17 17:28:52', NULL, NULL, '0', NULL, 0);
 INSERT INTO `chat_config` VALUES (1818270017648070657, 'stripe', 'prompt', 'This system is for demonstration only and does not currently support this feature!', '鎻愮ず璇�', 103, '2024-07-30 20:58:49', '1', '1', '2024-08-11 12:02:42', NULL, NULL, '0', NULL, 0);
-INSERT INTO `chat_config` VALUES (1818270017966837761, 'stripe', 'enabled', 'false', '寮�鍚敮浠�', 103, '2024-07-30 20:58:49', '1', '1', '2024-08-11 12:02:42', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1818270017966837761, 'stripe', 'enabled', 'true', '寮�鍚敮浠�', 103, '2024-07-30 20:58:49', '1', '1', '2024-08-11 12:02:42', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1897610056458412050, 'weaviate', 'protocol', 'http', '鍗忚', 103, '2025-03-06 21:10:02', '1', '1', '2025-03-06 21:10:31', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1897610056458412051, 'weaviate', 'host', '127.0.0.1:6038', '鍦板潃', 103, '2025-03-06 21:10:02', '1', '1', '2025-03-06 21:10:31', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1897610056458412052, 'weaviate', 'classname', 'LocalKnowledge', '鍒嗙被鍚嶇О', 103, '2025-03-06 21:10:02', '1', '1', '2025-03-06 21:10:31', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1897610056458412053, 'milvus', 'host', '127.0.0.1', '鍦板潃', 103, '2025-03-06 21:10:02', '1', '1', '2025-03-06 21:10:31', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1897610056458412054, 'milvus', 'port', '19530', '绔彛', 103, '2025-03-06 21:10:02', '1', '1', '2025-03-06 21:10:31', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1897610056458412055, 'milvus', 'dimension', '1536', '缁村害', 103, '2025-03-06 21:10:02', '1', '1', '2025-03-06 21:10:31', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1897610056458412056, 'milvus', 'collection', 'LocalKnowledge', '鍒嗙被鍚嶇О', 103, '2025-03-06 21:10:02', '1', '1', '2025-03-06 21:10:31', NULL, NULL, '0', NULL, 0);
+INSERT INTO `chat_config` VALUES (1897610056458412057, 'zhipu', 'key', '', '鏅鸿氨娓呰█key', 103, '2025-03-12 00:13:12', '1', '1', '2025-03-12 00:13:10', NULL, NULL, '0', NULL, 0);
 
 -- ----------------------------
 -- Table structure for chat_gpts
@@ -235,22 +222,27 @@
 -- ----------------------------
 -- Records of chat_model
 -- ----------------------------
-INSERT INTO `chat_model` VALUES (1781709495515783171, 'gpt-4-all', 'gpt-4-all', 0.2, '2', '1', NULL, 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-04-20 23:40:41', 1, '2024-12-27 22:28:36', 'gpt-all');
-INSERT INTO `chat_model` VALUES (1781715781896646657, 'suno-v3', 'suno-v3', 0.3, '2', '1', NULL, 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-04-21 00:05:20', 1, '2024-12-27 22:28:40', 'suno-v3');
-INSERT INTO `chat_model` VALUES (1781728235120791553, 'stable-diffusion', 'stable-diffusion', 0.1, '2', '1', NULL, 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-04-21 00:54:49', 1, '2024-12-27 22:28:46', 'stable-diffusion');
-INSERT INTO `chat_model` VALUES (1782736322308943873, 'dall-e-3', 'dall3', 0.3, '2', '1', '', 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-04-23 19:40:36', 1, '2024-12-27 22:29:01', 'dall3');
-INSERT INTO `chat_model` VALUES (1782736729471004673, 'gpt-4-gizmo', 'gpt-4-gizmo', 0.2, '2', '1', NULL, 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-04-23 19:42:13', 1, '2024-12-27 22:29:06', 'gpt-4-gizmo');
-INSERT INTO `chat_model` VALUES (1782792839548735490, 'midjourney', 'midjourney', 0.5, '2', '1', NULL, 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-04-23 23:25:10', 1, '2024-12-27 22:29:11', 'midjourney');
-INSERT INTO `chat_model` VALUES (1782792839548735491, 'suno', 'suno', 0.3, '2', '1', NULL, 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-04-23 23:25:10', 1, '2024-12-27 22:29:15', 'suno');
-INSERT INTO `chat_model` VALUES (1782792839548735492, 'luma', 'luma', 1, '2', '1', NULL, 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-04-23 23:25:10', 1, '2024-12-27 22:29:19', 'luma');
-INSERT INTO `chat_model` VALUES (1782792839548735493, 'ppt', 'ppt', 1.1, '2', '1', NULL, 'https://docmee.cn', 'xx', 103, 1, '2025-01-10 23:25:10', 1, '2025-01-10 22:29:19', 'ppt');
-INSERT INTO `chat_model` VALUES (1811030708604317697, 'gemini-1.5-pro', 'gemini-1.5-pro', 0.2, '1', '1', '', 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-07-10 21:32:23', 1, '2024-12-27 22:29:24', 'gemini-1.5-pro');
-INSERT INTO `chat_model` VALUES (1813306888443305986, 'claude-3-5-sonnet-20240620', 'claude-3-5-sonnet-20240620', 0.2, '1', '1', NULL, 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-07-17 04:17:06', 1, '2024-12-27 22:29:28', 'claude-3-5-sonnet-20240620');
-INSERT INTO `chat_model` VALUES (1814227154275082242, 'o1-mini-2024-09-12', 'o1-mini-2024-09-12', 0.01, '1', '0', NULL, 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-07-19 17:13:55', 1, '2024-12-27 22:29:32', 'o1-mini-2024-09-12');
-INSERT INTO `chat_model` VALUES (1828324413241466881, 'deepseek-r1', 'deepseek-r1', 0.1, '1', '0', NULL, 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-08-27 14:51:23', 1, '2024-12-27 22:29:37', 'chatgpt-4o-latest');
-INSERT INTO `chat_model` VALUES (1859570229117022211, 'gpt-4o-mini', 'gpt-4o-mini', 0.1, '1', '0', '', 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-11-21 20:11:06', 1, '2024-11-21 20:12:30', '');
-INSERT INTO `chat_model` VALUES (1859570229117022212, 'o3-mini-2025-01-31', 'o3-mini-2025-01-31', 0.1, '1', '0', '', 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-11-21 20:11:06', 1, '2024-11-21 20:12:30', '');
-INSERT INTO `chat_model` VALUES (1859570229117022213, 'ollama-qwen2.5:7b', 'ollama-qwen2.5:7b', 0.1, '1', '0', '', 'https://api.pandarobot.chat/', 'xx', 103, 1, '2024-11-21 20:11:06', 1, '2024-11-21 20:12:30', '');
+INSERT INTO `chat_model` VALUES (1781709495515783171, 'gpt-4-all', 'gpt-4-all', 0.2, '1', '1', NULL, 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2024-04-20 23:40:41', 1, '2025-03-15 16:46:11', 'gpt-all');
+INSERT INTO `chat_model` VALUES (1781715781896646657, 'suno-v3', 'suno-v3', 0.3, '2', '1', NULL, 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2024-04-21 00:05:20', 1, '2025-03-12 15:06:39', 'suno-v3');
+INSERT INTO `chat_model` VALUES (1781728235120791553, 'stable-diffusion', 'stable-diffusion', 0.1, '2', '1', NULL, 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2024-04-21 00:54:49', 1, '2025-03-04 22:09:12', 'stable-diffusion');
+INSERT INTO `chat_model` VALUES (1782736322308943873, 'dall-e-3', 'dall3', 0.3, '2', '1', '', 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2024-04-23 19:40:36', 1, '2025-03-06 09:13:59', 'dall3');
+INSERT INTO `chat_model` VALUES (1782736729471004673, 'gpt-4-gizmo', 'gpt-4-gizmo', 0.2, '2', '1', NULL, 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2024-04-23 19:42:13', 1, '2025-03-06 20:16:42', 'gpt-4-gizmo');
+INSERT INTO `chat_model` VALUES (1782792839548735490, 'midjourney', 'midjourney', 0.5, '2', '1', NULL, 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2024-04-23 23:25:10', 1, '2025-03-06 13:48:34', 'midjourney');
+INSERT INTO `chat_model` VALUES (1782792839548735491, 'suno', 'suno', 0.3, '2', '1', NULL, 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2024-04-23 23:25:10', 1, '2024-12-27 22:29:15', 'suno');
+INSERT INTO `chat_model` VALUES (1782792839548735492, 'luma', 'luma', 1, '2', '1', NULL, 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2024-04-23 23:25:10', 1, '2024-12-27 22:29:19', 'luma');
+INSERT INTO `chat_model` VALUES (1782792839548735493, 'ppt', 'ppt', 1.1, '2', '1', NULL, 'https://docmee.cn', 'sk-xx', 103, 1, '2025-01-10 23:25:10', 1, '2025-03-05 20:14:10', 'ppt');
+INSERT INTO `chat_model` VALUES (1811030708604317697, 'gemini-1.5-pro', 'gemini-1.5-pro', 0.2, '1', '1', '', 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2024-07-10 21:32:23', 1, '2024-12-27 22:29:24', 'gemini-1.5-pro');
+INSERT INTO `chat_model` VALUES (1813306888443305986, 'claude-3-5-sonnet-20240620', 'claude-3-5-sonnet-20240620', 0.2, '1', '0', NULL, 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2024-07-17 04:17:06', 1, '2025-03-13 12:06:18', 'claude-3-5-sonnet-20240620');
+INSERT INTO `chat_model` VALUES (1814227154275082242, 'o1-mini-2024-09-12', 'o1-mini-2024-09-12', 0.01, '1', '0', NULL, 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2024-07-19 17:13:55', 1, '2024-12-27 22:29:32', 'o1-mini-2024-09-12');
+INSERT INTO `chat_model` VALUES (1828324413241466881, 'deepseek-r3', 'deepseek-r3', 0.01, '1', '0', NULL, '785252', 'sk-xx', 103, 1, '2024-08-27 14:51:23', 1, '2025-03-14 17:08:57', 'chatgpt-4o-latest');
+INSERT INTO `chat_model` VALUES (1859570229117022211, 'gpt-4o-mini', 'gpt-4o-mini', 0.1, '2', '0', '', 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2024-11-21 20:11:06', 1, '2025-03-13 11:39:24', '1');
+INSERT INTO `chat_model` VALUES (1859570229117022212, 'o3-mini-2025-01-31', 'o3-mini-2025-01-31', 0.1, '1', '0', '', 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2024-11-21 20:11:06', 1, '2024-11-21 20:12:30', '');
+INSERT INTO `chat_model` VALUES (1859570229117022213, 'ollama-qwen2.5:7b', 'ollama-qwen2.5:7b', 0.1, '1', '0', '', 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2024-11-21 20:11:06', 1, '2024-11-21 20:12:30', '');
+INSERT INTO `chat_model` VALUES (1897618774806515713, 'mink', 'mink澶фā鍨�', 0.01, '1', '0', NULL, 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2025-03-06 20:02:27', 1, '2025-03-08 02:28:59', '111');
+INSERT INTO `chat_model` VALUES (1897618774806515714, 'openCmd', 'openCmd', 0.01, '1', '0', '缁撳悎涓婁笅鏂囧彧鐢ㄥ洖澶嶆垚鍔熸垨鑰呭け璐�', 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2025-03-06 20:02:27', 1, '2025-03-08 02:28:59', '111');
+INSERT INTO `chat_model` VALUES (1897618774806515715, 'sqlPlugin', 'sqlPlugin', 0.01, '1', '0', NULL, 'https://api.pandarobot.chat/', 'sk-xx', 103, 1, '2025-03-06 20:02:27', 1, '2025-03-08 02:28:59', '111');
+INSERT INTO `chat_model` VALUES (1899652265652015105, 'deepseek-r1:5b', '鏈湴閮ㄧ讲', 0.5, '2', '0', NULL, 'http://127.0.0.1:11434/', 'sk-xx', 103, 1, '2025-03-12 10:42:49', 1, '2025-03-15 20:49:36', '娴嬭瘯');
+INSERT INTO `chat_model` VALUES (1899658241792823297, 'siliconflow', '纭呭熀娴佸姩', 0.1, '1', '1', NULL, 'https://api.siliconflow.cn', 'sk-xx', 103, 1, '2025-03-12 11:06:33', 1, '2025-03-12 11:13:49', '111');
 
 -- ----------------------------
 -- Table structure for chat_package_plan
@@ -299,7 +291,7 @@
   `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '澶囨敞',
   `create_dept` bigint(20) NULL DEFAULT NULL COMMENT '鍒涘缓閮ㄩ棬',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '鏀粯璁㈠崟琛�' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '鏀粯璁㈠崟琛�' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of chat_pay_order
@@ -738,7 +730,7 @@
   `create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
   PRIMARY KEY (`id`) USING BTREE,
   UNIQUE INDEX `idx_kname`(`kid`, `doc_name`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 1895845104886276099 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '鐭ヨ瘑搴撻檮浠�' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 1900472441872076802 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '鐭ヨ瘑搴撻檮浠�' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of knowledge_attach
@@ -758,7 +750,7 @@
   `create_time` datetime NULL DEFAULT NULL,
   `create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 1895845104492011522 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '鐭ヨ瘑鐗囨' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 1900472441846910978 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '鐭ヨ瘑鐗囨' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of knowledge_fragment
@@ -773,12 +765,20 @@
   `kid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '鐭ヨ瘑搴揑D',
   `uid` bigint(20) NOT NULL DEFAULT 0 COMMENT '鐢ㄦ埛ID',
   `kname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '鐭ヨ瘑搴撳悕绉�',
+  `share` tinyint(4) NULL DEFAULT NULL COMMENT '鏄惁鍏紑鐭ヨ瘑搴擄紙0 鍚� 1鏄級',
   `description` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '鎻忚堪',
-  `create_time` datetime NULL DEFAULT NULL,
-  `create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+  `knowledge_separator` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '鐭ヨ瘑鍒嗛殧绗�',
+  `question_separator` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '鎻愰棶鍒嗛殧绗�',
+  `overlap_char` int(11) NULL DEFAULT NULL COMMENT '閲嶅彔瀛楃鏁�',
+  `retrieve_limit` int(11) NULL DEFAULT NULL COMMENT '鐭ヨ瘑搴撲腑妫�绱㈢殑鏉℃暟',
+  `text_block_size` int(11) NULL DEFAULT NULL COMMENT '鏂囨湰鍧楀ぇ灏�',
+  `vector` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '鍚戦噺搴�',
+  `vector_model` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '鍚戦噺妯″瀷',
+  `create_time` datetime NULL DEFAULT NULL COMMENT '鍒涘缓鏃堕棿',
+  `create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '鍒涘缓浜�',
   PRIMARY KEY (`id`) USING BTREE,
   UNIQUE INDEX `idx_kid`(`kid`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 1895836475231584259 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '鐭ヨ瘑搴�' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 1900203785917321219 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '鐭ヨ瘑搴�' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of knowledge_info
@@ -807,9 +807,9 @@
 -- ----------------------------
 -- Records of sys_config
 -- ----------------------------
-INSERT INTO `sys_config` VALUES (1, '000000', '涓绘鏋堕〉-榛樿鐨偆鏍峰紡鍚嶇О', 'sys.index.skinName', 'skin-blue', 'Y', 103, 1, '2023-05-14 15:19:42', NULL, NULL, '钃濊壊 skin-blue銆佺豢鑹� skin-green銆佺传鑹� skin-purple銆佺孩鑹� skin-red銆侀粍鑹� skin-yellow');
-INSERT INTO `sys_config` VALUES (2, '000000', '鐢ㄦ埛绠$悊-璐﹀彿鍒濆瀵嗙爜', 'sys.user.initPassword', '123456', 'Y', 103, 1, '2023-05-14 15:19:42', NULL, NULL, '鍒濆鍖栧瘑鐮� 123456');
-INSERT INTO `sys_config` VALUES (3, '000000', '涓绘鏋堕〉-渚ц竟鏍忎富棰�', 'sys.index.sideTheme', 'theme-dark', 'Y', 103, 1, '2023-05-14 15:19:42', NULL, NULL, '娣辫壊涓婚theme-dark锛屾祬鑹蹭富棰榯heme-light');
+INSERT INTO `sys_config` VALUES (1, '000000', '涓绘鏋堕〉-榛樿鐨偆鏍峰紡鍚嶇О', 'sys.index.skinName', 'skin-blue', 'Y', 103, 1, '2023-05-14 15:19:42', 1, '2025-03-12 12:24:07', '钃濊壊 skin-blue銆佺豢鑹� skin-green銆佺传鑹� skin-purple銆佺孩鑹� skin-red銆侀粍鑹� skin-yellow');
+INSERT INTO `sys_config` VALUES (2, '000000', '鐢ㄦ埛绠$悊-璐﹀彿鍒濆瀵嗙爜', 'sys.user.initPassword', '123456', 'N', 103, 1, '2023-05-14 15:19:42', 1, '2025-03-12 10:22:57', '鍒濆鍖栧瘑鐮� 123456');
+INSERT INTO `sys_config` VALUES (3, '000000', '涓绘鏋堕〉-渚ц竟鏍忎富棰�', 'sys.index.sideTheme', 'theme-dark', 'N', 103, 1, '2023-05-14 15:19:42', 1, '2025-03-12 10:23:02', '娣辫壊涓婚theme-dark锛屾祬鑹蹭富棰榯heme-light');
 INSERT INTO `sys_config` VALUES (5, '000000', '璐﹀彿鑷姪-鏄惁寮�鍚敤鎴锋敞鍐屽姛鑳�', 'sys.account.registerUser', 'false', 'Y', 103, 1, '2023-05-14 15:19:42', NULL, NULL, '鏄惁寮�鍚敞鍐岀敤鎴峰姛鑳斤紙true寮�鍚紝false鍏抽棴锛�');
 INSERT INTO `sys_config` VALUES (11, '000000', 'OSS棰勮鍒楄〃璧勬簮寮�鍏�', 'sys.oss.previewListResource', 'true', 'Y', 103, 1, '2023-05-14 15:19:42', NULL, NULL, 'true:寮�鍚�, false:鍏抽棴');
 
@@ -842,15 +842,14 @@
 -- ----------------------------
 INSERT INTO `sys_dept` VALUES (100, '000000', 0, '0', '鐔婄尗绉戞妧', 0, 'ageerle', '15888888888', 'ageerle@163.com', '0', '0', 103, 1, '2023-05-14 15:19:39', 1, '2023-12-29 11:18:24');
 INSERT INTO `sys_dept` VALUES (101, '000000', 100, '0,100', '娣卞湷鎬诲叕鍙�', 1, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
-INSERT INTO `sys_dept` VALUES (102, '000000', 100, '0,100', '闀挎矙鍒嗗叕鍙�', 2, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
+INSERT INTO `sys_dept` VALUES (102, '000000', 100, '0,100', '闀挎矙鍒嗗叕鍙�', 2, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '2', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
 INSERT INTO `sys_dept` VALUES (103, '000000', 101, '0,100,101', '鐮斿彂閮ㄩ棬', 1, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
-INSERT INTO `sys_dept` VALUES (104, '000000', 101, '0,100,101', '甯傚満閮ㄩ棬', 2, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
-INSERT INTO `sys_dept` VALUES (105, '000000', 101, '0,100,101', '娴嬭瘯閮ㄩ棬', 3, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
-INSERT INTO `sys_dept` VALUES (106, '000000', 101, '0,100,101', '璐㈠姟閮ㄩ棬', 4, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
-INSERT INTO `sys_dept` VALUES (107, '000000', 101, '0,100,101', '杩愮淮閮ㄩ棬', 5, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
-INSERT INTO `sys_dept` VALUES (108, '000000', 102, '0,100,102', '甯傚満閮ㄩ棬', 1, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
-INSERT INTO `sys_dept` VALUES (109, '000000', 102, '0,100,102', '璐㈠姟閮ㄩ棬', 2, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '0', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
-INSERT INTO `sys_dept` VALUES (1729685491964084226, '911866', 0, '0', '5126', 0, 'admin', NULL, NULL, '0', '2', 103, 1, '2023-11-29 10:15:32', 1, '2023-11-29 10:15:32');
+INSERT INTO `sys_dept` VALUES (104, '000000', 101, '0,100,101', '甯傚満閮ㄩ棬', 2, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '2', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
+INSERT INTO `sys_dept` VALUES (105, '000000', 101, '0,100,101', '娴嬭瘯閮ㄩ棬', 3, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '2', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
+INSERT INTO `sys_dept` VALUES (106, '000000', 101, '0,100,101', '璐㈠姟閮ㄩ棬', 4, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '2', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
+INSERT INTO `sys_dept` VALUES (107, '000000', 101, '0,100,101', '杩愮淮閮ㄩ棬', 5, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '2', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
+INSERT INTO `sys_dept` VALUES (108, '000000', 102, '0,100,102', '甯傚満閮ㄩ棬', 1, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '2', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
+INSERT INTO `sys_dept` VALUES (109, '000000', 102, '0,100,102', '璐㈠姟閮ㄩ棬', 2, '鐤媯鐨勭嫯瀛怢i', '15888888888', 'xxx@qq.com', '0', '2', 103, 1, '2023-05-14 15:19:39', NULL, NULL);
 
 -- ----------------------------
 -- Table structure for sys_dict_data
@@ -1046,8 +1045,8 @@
 INSERT INTO `sys_menu` VALUES (100, '鐢ㄦ埛绠$悊', 1775500307898949634, 1, 'user', 'system/user/index', '', 1, 0, 'C', '0', '0', 'system:user:list', 'ph:user-fill', 103, 1, '2023-05-14 15:19:39', 1, '2024-10-07 21:29:29', '鐢ㄦ埛绠$悊鑿滃崟');
 INSERT INTO `sys_menu` VALUES (101, '瑙掕壊绠$悊', 1, 2, 'role', 'system/role/index', '', 1, 0, 'C', '0', '0', 'system:role:list', 'ri:user-3-fill', 103, 1, '2023-05-14 15:19:39', 1, '2024-10-07 21:04:59', '瑙掕壊绠$悊鑿滃崟');
 INSERT INTO `sys_menu` VALUES (102, '鑿滃崟绠$悊', 1, 3, 'menu', 'system/menu/index', '', 1, 0, 'C', '0', '0', 'system:menu:list', 'typcn:th-menu-outline', 103, 1, '2023-05-14 15:19:39', 1, '2024-10-07 21:06:06', '鑿滃崟绠$悊鑿滃崟');
-INSERT INTO `sys_menu` VALUES (103, '閮ㄩ棬绠$悊', 1, 4, 'dept', 'system/dept/index', '', 1, 0, 'C', '1', '1', 'system:dept:list', 'mdi:company', 103, 1, '2023-05-14 15:19:39', 1, '2024-10-07 21:07:38', '閮ㄩ棬绠$悊鑿滃崟');
-INSERT INTO `sys_menu` VALUES (104, '宀椾綅绠$悊', 1, 5, 'post', 'system/post/index', '', 1, 0, 'C', '1', '1', 'system:post:list', 'post', 103, 1, '2023-05-14 15:19:39', 1, '2024-04-04 22:36:15', '宀椾綅绠$悊鑿滃崟');
+INSERT INTO `sys_menu` VALUES (103, '閮ㄩ棬绠$悊', 1, 4, 'dept', 'system/dept/index', '', 1, 0, 'C', '0', '0', 'system:dept:list', 'mdi:company', 103, 1, '2023-05-14 15:19:39', 1, '2025-03-03 16:44:16', '閮ㄩ棬绠$悊鑿滃崟');
+INSERT INTO `sys_menu` VALUES (104, '宀椾綅绠$悊', 1, 5, 'post', 'system/post/index', '', 1, 0, 'C', '0', '0', 'system:post:list', 'post', 103, 1, '2023-05-14 15:19:39', 1, '2025-03-11 13:58:09', '宀椾綅绠$悊鑿滃崟');
 INSERT INTO `sys_menu` VALUES (105, '瀛楀吀绠$悊', 1, 6, 'dict', 'system/dict/index', '', 1, 0, 'C', '0', '0', 'system:dict:list', 'fluent-mdl2:dictionary', 103, 1, '2023-05-14 15:19:40', 1, '2024-10-07 21:14:33', '瀛楀吀绠$悊鑿滃崟');
 INSERT INTO `sys_menu` VALUES (106, '绯荤粺鍙傛暟', 1, 10, 'config', 'system/config/index', '', 1, 0, 'C', '0', '0', 'system:config:list', 'tdesign:system-code', 103, 1, '2023-05-14 15:19:40', 1, '2024-10-07 21:11:07', '鍙傛暟璁剧疆鑿滃崟');
 INSERT INTO `sys_menu` VALUES (107, '閫氱煡鍏憡', 1, 14, 'notice', 'system/notice/index', '', 1, 0, 'C', '0', '0', 'system:notice:list', 'icon-park-solid:volume-notice', 103, 1, '2023-05-14 15:19:40', 1, '2024-10-07 21:11:42', '閫氱煡鍏憡鑿滃崟');
@@ -1058,7 +1057,7 @@
 INSERT INTO `sys_menu` VALUES (1001, '鐢ㄦ埛鏌ヨ', 100, 1, '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 103, 1, '2023-05-14 15:19:40', NULL, NULL, '');
 INSERT INTO `sys_menu` VALUES (1002, '鐢ㄦ埛鏂板', 100, 2, '', '', '', 1, 0, 'F', '0', '0', 'system:user:add', '#', 103, 1, '2023-05-14 15:19:40', NULL, NULL, '');
 INSERT INTO `sys_menu` VALUES (1003, '鐢ㄦ埛淇敼', 100, 3, '', '', '', 1, 0, 'F', '0', '0', 'system:user:edit', '#', 103, 1, '2023-05-14 15:19:40', NULL, NULL, '');
-INSERT INTO `sys_menu` VALUES (1004, '鐢ㄦ埛鍒犻櫎', 100, 4, '', '', '', 1, 0, 'F', '0', '0', 'system:user:remove', '#', 103, 1, '2023-05-14 15:19:40', NULL, NULL, '');
+INSERT INTO `sys_menu` VALUES (1004, '鐢ㄦ埛鍒犻櫎', 100, 1, '', '', '', 1, 0, 'F', '0', '0', 'system:user:remove', '#', 103, 1, '2023-05-14 15:19:40', 1, '2025-03-05 17:27:08', '');
 INSERT INTO `sys_menu` VALUES (1005, '鐢ㄦ埛瀵煎嚭', 100, 5, '', '', '', 1, 0, 'F', '0', '0', 'system:user:export', '#', 103, 1, '2023-05-14 15:19:40', NULL, NULL, '');
 INSERT INTO `sys_menu` VALUES (1006, '鐢ㄦ埛瀵煎叆', 100, 6, '', '', '', 1, 0, 'F', '0', '0', 'system:user:import', '#', 103, 1, '2023-05-14 15:19:40', NULL, NULL, '');
 INSERT INTO `sys_menu` VALUES (1007, '閲嶇疆瀵嗙爜', 100, 7, '', '', '', 1, 0, 'F', '0', '0', 'system:user:resetPwd', '#', 103, 1, '2023-05-14 15:19:40', NULL, NULL, '');
@@ -1126,14 +1125,18 @@
 INSERT INTO `sys_menu` VALUES (1786379590171156484, '鐢ㄦ埛鍏戞崲璁板綍淇敼', 1786379590171156481, 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'system:voucher:edit', '#', 103, 1, '2024-05-03 20:59:55', NULL, NULL, '');
 INSERT INTO `sys_menu` VALUES (1786379590171156485, '鐢ㄦ埛鍏戞崲璁板綍鍒犻櫎', 1786379590171156481, 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'system:voucher:remove', '#', 103, 1, '2024-05-03 20:59:55', NULL, NULL, '');
 INSERT INTO `sys_menu` VALUES (1786379590171156486, '鐢ㄦ埛鍏戞崲璁板綍瀵煎嚭', 1786379590171156481, 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'system:voucher:export', '#', 103, 1, '2024-05-03 20:59:55', NULL, NULL, '');
-INSERT INTO `sys_menu` VALUES (1787078000285122561, '濂楅绠$悊', 1775500307898949634, 3, 'package', 'system/package/index', NULL, 1, 0, 'C', '0', '0', 'system:package:list', 'lets-icons:order', 103, 1, '2024-05-05 19:13:53', 1, '2024-11-02 22:20:36', '濂楅绠$悊鑿滃崟');
-INSERT INTO `sys_menu` VALUES (1810594719028834305, '搴旂敤绠$悊', 1775500307898949634, 4, 'gpts', 'system/gpts/index', NULL, 1, 0, 'C', '0', '0', 'system:gpts:list', 'tdesign:app', 103, 1, '2024-07-09 16:40:18', 1, '2025-03-01 17:12:56', 'gpts绠$悊鑿滃崟');
+INSERT INTO `sys_menu` VALUES (1787078000285122561, '濂楅绠$悊', 1775500307898949634, 3, 'package', 'system/package/index', NULL, 1, 0, 'C', '0', '0', 'system:package:list', 'lets-icons:order', 103, 1, '2024-05-05 19:13:53', 1, '2025-03-05 18:56:22', '濂楅绠$悊鑿滃崟');
+INSERT INTO `sys_menu` VALUES (1810594719028834305, '搴旂敤绠$悊', 1775500307898949634, 4, 'gpts', 'system/gpts/index', NULL, 1, 0, 'C', '0', '0', 'system:gpts:list', 'tdesign:app', 103, 1, '2024-07-09 16:40:18', 1, '2025-03-13 23:59:07', 'gpts绠$悊鑿滃崟');
 INSERT INTO `sys_menu` VALUES (1810594719028834306, 'gpts绠$悊鏌ヨ', 1810594719028834305, 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'system:gpts:query', '#', 103, 1, '2024-07-09 16:40:19', NULL, NULL, '');
 INSERT INTO `sys_menu` VALUES (1810594719028834307, 'gpts绠$悊鏂板', 1810594719028834305, 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'system:gpts:add', '#', 103, 1, '2024-07-09 16:40:19', NULL, NULL, '');
 INSERT INTO `sys_menu` VALUES (1810594719028834308, 'gpts绠$悊淇敼', 1810594719028834305, 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'system:gpts:edit', '#', 103, 1, '2024-07-09 16:40:19', NULL, NULL, '');
-INSERT INTO `sys_menu` VALUES (1810594719028834309, 'gpts绠$悊鍒犻櫎', 1810594719028834305, 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'system:gpts:remove', '#', 103, 1, '2024-07-09 16:40:19', NULL, NULL, '');
+INSERT INTO `sys_menu` VALUES (1810594719028834309, 'gpts绠$悊鍒犻櫎', 1810594719028834305, 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'system:gpts:remove', '#', 103, 1, '2024-07-09 16:40:19', 1, '2025-03-05 19:02:06', '');
 INSERT INTO `sys_menu` VALUES (1810594719028834310, 'gpts绠$悊瀵煎嚭', 1810594719028834305, 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'system:gpts:export', '#', 103, 1, '2024-07-09 16:40:19', NULL, NULL, '');
 INSERT INTO `sys_menu` VALUES (1843281231381852162, '鏂囦欢绠$悊', 1775500307898949634, 20, 'file', 'system/oss/index', NULL, 1, 0, 'C', '0', '0', NULL, 'material-symbols-light:folder', 103, 1, '2024-10-07 21:24:27', 1, '2024-12-27 23:03:04', '');
+INSERT INTO `sys_menu` VALUES (1860690448695549953, '閰嶇疆绠$悊', 1775500307898949634, 9, 'configurationManage', 'system/configurationManage/index', NULL, 1, 0, 'C', '0', '0', NULL, 'mdi:archive-cog-outline', 103, 1, '2024-11-24 22:22:28', 1, '2024-12-30 21:24:01', '');
+INSERT INTO `sys_menu` VALUES (1898286496441393153, '鐭ヨ瘑搴撶鐞�', 1775500307898949634, 10, 'knowledgeBase', 'system/knowledgeBase/index', NULL, 1, 0, 'C', '0', '0', NULL, 'garden:knowledge-base-26', 103, 1, '2025-03-08 16:15:44', 1, '2025-03-09 13:35:32', '');
+INSERT INTO `sys_menu` VALUES (1900172314827739137, '娴佺▼缂栨帓', 1775500307898949634, 11, 'processOrchestration', 'system/processOrchestration/index', NULL, 1, 0, 'C', '0', '0', NULL, '#', 103, 1, '2025-03-13 21:09:18', 1, '2025-03-13 21:09:18', '');
+INSERT INTO `sys_menu` VALUES (1900854435890089985, '鑱婂ぉ娴嬭瘯', 0, 1, '#', '', NULL, 1, 0, 'M', '0', '0', NULL, '#', 103, 1, '2025-03-15 18:19:48', 1, '2025-03-15 18:19:48', '');
 
 -- ----------------------------
 -- Table structure for sys_notice
@@ -1158,7 +1161,7 @@
 -- ----------------------------
 -- Records of sys_notice
 -- ----------------------------
-INSERT INTO `sys_notice` VALUES (1789324923280932865, '000000', '鍏憡', '2', 0x3C703E3C7374726F6E67207374796C653D22636F6C6F723A20726762283235352C203135332C2030293B223EE69CACE7BD91E7AB99E4B88EE4BBBBE4BD95E585B6E4BB96E585ACE58FB8E68896E59586E6A087E6B2A1E69C89E4BBBBE4BD95E585B3E88194E68896E59088E4BD9CE585B3E7B3BB3C2F7374726F6E673E3C2F703E3C703E3C7370616E207374796C653D22636F6C6F723A20726762283233302C20302C2030293B223E4149E4B99FE4BC9AE78AAFE99499E38082E8AFB7E58BBFE5B086E585B6E794A8E4BA8EE9878DE8A681E79BAEE79A843C2F7370616E3E3C2F703E3C703E3C7370616E207374796C653D22636F6C6F723A20726762283235352C203135332C2030293B223EE68891E4BBACE79BAEE5898DE6ADA3E59CA8E4BFAEE5A48DE68891E4BBACE7BD91E7AB99E4B88AE79A84E99499E8AFAFE5B9B6E694B9E8BF9BE7BB86E88A82E38082E5A682E69E9CE682A8E69C89E4BBBBE4BD95E79691E997AEEFBC8CE8AFB7E9809AE8BF87E4BBA5E4B88BE696B9E5BC8FE88194E7B3BBE68891E4BBACEFBC9A61676565726C65403136332E636F6D3C2F7370616E3E3C2F703E3C703E3C62723E3C2F703E, '0', 103, 1, '2024-05-12 00:01:20', 1, '2024-10-28 23:25:21', '');
+INSERT INTO `sys_notice` VALUES (1789324923280932865, '000000', '鍏憡', '1', 0x3C703E3C7374726F6E67207374796C653D22636F6C6F723A20236666393930303B223EE69CACE7BD91E7AB99E4B88EE4BBBBE4BD95E585B6E4BB96E585ACE58FB8E68896E59586E6A087E6B2A1E69C89E4BBBBE4BD95E585B3E88194E68896E59088E4BD9CE585B3E7B3BB3C2F7374726F6E673E3C2F703E0A3C703E3C7370616E207374796C653D22636F6C6F723A20236536303030303B223E4149E4B99FE4BC9AE78AAFE99499E38082E8AFB7E58BBFE5B086E585B6E794A8E4BA8EE9878DE8A681E79BAEE79A843C2F7370616E3E3C2F703E0A3C703E3C7370616E207374796C653D22636F6C6F723A20236666393930303B223EE68891E4BBACE79BAEE5898DE6ADA3E59CA8E4BFAEE5A48DE68891E4BBACE7BD91E7AB99E4B88AE79A84E99499E8AFAFE5B9B6E694B9E8BF9BE7BB86E88A82E38082E5A682E69E9CE682A8E69C89E4BBBBE4BD95E79691E997AEEFBC8CE8AFB7E9809AE8BF87E4BBA5E4B88BE696B9E5BC8FE88194E7B3BBE68891E4BBACEFBC9A61676565726C65403136332E636F6D313434343434353535353C2F7370616E3E3C2F703E0A3C703E266E6273703B3C2F703E, '0', 103, 1, '2024-05-12 00:01:20', 1, '2025-03-11 19:31:59', '');
 INSERT INTO `sys_notice` VALUES (1895352010039119874, '000000', '浣犲ソ', '1', 0x3C703E6E6968616F3C2F703E, '0', 103, 1, '2025-02-28 13:55:08', 1, '2025-02-28 13:55:08', NULL);
 
 -- ----------------------------
@@ -1182,8 +1185,6 @@
 -- ----------------------------
 -- Records of sys_notice_state
 -- ----------------------------
-INSERT INTO `sys_notice_state` VALUES (1895352010437578753, 1, 1895352010039119874, '0', 103, 1, '2025-02-28 13:55:08', 1, '2025-02-28 13:55:08', NULL);
-INSERT INTO `sys_notice_state` VALUES (1895352010437578754, 1714176194496339970, 1895352010039119874, '1', 103, 1, '2025-02-28 13:55:08', 1714176194496339970, '2025-03-01 21:35:20', NULL);
 
 -- ----------------------------
 -- Table structure for sys_oper_log
@@ -1273,11 +1274,11 @@
 -- ----------------------------
 -- Records of sys_oss_config
 -- ----------------------------
-INSERT INTO `sys_oss_config` VALUES (1, '000000', 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', '127.0.0.1:9000', '', 'N', '', '1', '1', '', 103, 1, '2023-05-14 15:19:42', 1, '2023-07-13 23:28:18', NULL);
-INSERT INTO `sys_oss_config` VALUES (2, '000000', 'qiniu', 'ruoyi', 'ruoyi123', 'ruoyi', '', 's3-cn-north-1.qiniucs.com', '', 'N', '', '1', '1', '', 103, 1, '2023-05-14 15:19:42', 1, '2023-05-14 15:19:42', NULL);
-INSERT INTO `sys_oss_config` VALUES (3, '000000', 'aliyun', 'ruoyi', 'ruoyi123', 'ruoyi', '', 'oss-cn-beijing.aliyuncs.com', '', 'N', '', '1', '1', '', 103, 1, '2023-05-14 15:19:42', 1, '2023-07-13 23:35:23', NULL);
-INSERT INTO `sys_oss_config` VALUES (4, '000000', 'qcloud', 'ruoyi', 'ruoyi123', 'ruoyi', 'panda', 'cos.ap-guangzhou.myqcloud.com', '', 'N', 'ap-guangzhou', '1', '0', '', 103, 1, '2023-05-14 15:19:42', 1, '2024-11-04 00:13:35', '');
-INSERT INTO `sys_oss_config` VALUES (5, '000000', 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', '127.0.0.1:9000', '', 'N', '', '1', '1', '', 103, 1, '2023-05-14 15:19:42', 1, '2023-05-14 15:19:42', NULL);
+INSERT INTO `sys_oss_config` VALUES (1, '000000', 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', '127.0.0.1:9000', '', 'N', '', '1', '0', '', 103, 1, '2023-05-14 15:19:42', 1, '2025-03-14 09:55:25', NULL);
+INSERT INTO `sys_oss_config` VALUES (2, '000000', 'qiniu', 'ruoyi', 'ruoyi123', 'ruoyi', '', 's3-cn-north-1.qiniucs.com', '', 'N', '', '1', '1', '', 103, 1, '2023-05-14 15:19:42', 1, '2025-03-14 09:55:22', NULL);
+INSERT INTO `sys_oss_config` VALUES (3, '000000', 'aliyun', 'ruoyi', 'ruoyi123', 'ruoyi', '', 'oss-cn-beijing.aliyuncs.com', '', 'N', '', '1', '1', '', 103, 1, '2023-05-14 15:19:42', 1, '2025-03-13 13:13:04', NULL);
+INSERT INTO `sys_oss_config` VALUES (4, '000000', 'qcloud', 'ruoyi', 'ruoyi123', 'ruoyi', 'panda', 'cos.ap-guangzhou.myqcloud.com', '', 'N', 'ap-guangzhou', '1', '1', '', 103, 1, '2023-05-14 15:19:42', 1, '2025-03-05 14:33:35', '');
+INSERT INTO `sys_oss_config` VALUES (5, '000000', 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', '127.0.0.1:9000', '', 'N', '', '1', '1', '', 103, 1, '2023-05-14 15:19:42', 1, '2025-03-13 13:12:57', NULL);
 
 -- ----------------------------
 -- Table structure for sys_post
@@ -1335,11 +1336,11 @@
 -- Records of sys_role
 -- ----------------------------
 INSERT INTO `sys_role` VALUES (1, '000000', '瓒呯骇绠$悊鍛�', 'superadmin', 1, '1', 1, 1, '0', '0', 103, 1, '2023-05-14 15:19:39', NULL, NULL, '瓒呯骇绠$悊鍛�');
-INSERT INTO `sys_role` VALUES (2, '000000', '鏅�氳鑹�', 'common', 2, '2', 1, 1, '0', '0', 103, 1, '2023-05-14 15:19:39', 1, '2024-10-07 20:59:32', '鏅�氳鑹�');
-INSERT INTO `sys_role` VALUES (3, '000000', '鏈儴闂ㄥ強浠ヤ笅', 'test1', 3, '4', 1, 1, '0', '0', 103, 1, '2023-05-14 15:20:00', 1, '2023-06-04 10:20:43', NULL);
+INSERT INTO `sys_role` VALUES (2, '000000', '鏅�氳鑹�', 'common', 2, '2', 1, 1, '0', '0', 103, 1, '2023-05-14 15:19:39', 1, '2025-03-12 10:07:23', '鏅�氳鑹�');
+INSERT INTO `sys_role` VALUES (3, '000000', '鏈儴闂ㄥ強浠ヤ笅', 'test1', 3, '4', 1, 1, '0', '0', 103, 1, '2023-05-14 15:20:00', 1, '2025-03-17 09:29:25', NULL);
 INSERT INTO `sys_role` VALUES (4, '000000', '浠呮湰浜�', 'test2', 4, '5', 1, 1, '0', '0', 103, 1, '2023-05-14 15:20:00', 1, '2023-06-04 10:21:01', NULL);
-INSERT INTO `sys_role` VALUES (1661661183933177857, '000000', '灏忕▼搴忕鐞嗗憳', 'xcxadmin', 1, '1', 1, 1, '0', '0', 103, 1, '2023-05-25 17:11:13', 1, '2023-05-25 17:11:13', '');
-INSERT INTO `sys_role` VALUES (1729685491108446210, '911866', '绠$悊鍛�', 'admin', 1, '1', 1, 1, '0', '0', 103, 1, '2023-11-29 10:15:32', 1, '2023-11-29 10:15:32', NULL);
+INSERT INTO `sys_role` VALUES (1661661183933177857, '000000', '灏忕▼搴忕鐞嗗憳', 'xcxadmin', 1, '1', 1, 1, '0', '0', 103, 1, '2023-05-25 17:11:13', 1, '2025-03-14 14:26:26', '');
+INSERT INTO `sys_role` VALUES (1729685491108446210, '911866', '绠$悊鍛�', 'admin', 4, '1', 1, 1, '0', '0', 103, 1, '2023-11-29 10:15:32', 1, '2025-03-12 10:07:57', NULL);
 
 -- ----------------------------
 -- Table structure for sys_role_dept
@@ -1372,6 +1373,100 @@
 -- ----------------------------
 -- Records of sys_role_menu
 -- ----------------------------
+INSERT INTO `sys_role_menu` VALUES (2, 1);
+INSERT INTO `sys_role_menu` VALUES (2, 100);
+INSERT INTO `sys_role_menu` VALUES (2, 101);
+INSERT INTO `sys_role_menu` VALUES (2, 102);
+INSERT INTO `sys_role_menu` VALUES (2, 103);
+INSERT INTO `sys_role_menu` VALUES (2, 104);
+INSERT INTO `sys_role_menu` VALUES (2, 105);
+INSERT INTO `sys_role_menu` VALUES (2, 106);
+INSERT INTO `sys_role_menu` VALUES (2, 107);
+INSERT INTO `sys_role_menu` VALUES (2, 108);
+INSERT INTO `sys_role_menu` VALUES (2, 113);
+INSERT INTO `sys_role_menu` VALUES (2, 500);
+INSERT INTO `sys_role_menu` VALUES (2, 501);
+INSERT INTO `sys_role_menu` VALUES (2, 1001);
+INSERT INTO `sys_role_menu` VALUES (2, 1002);
+INSERT INTO `sys_role_menu` VALUES (2, 1003);
+INSERT INTO `sys_role_menu` VALUES (2, 1004);
+INSERT INTO `sys_role_menu` VALUES (2, 1005);
+INSERT INTO `sys_role_menu` VALUES (2, 1006);
+INSERT INTO `sys_role_menu` VALUES (2, 1007);
+INSERT INTO `sys_role_menu` VALUES (2, 1008);
+INSERT INTO `sys_role_menu` VALUES (2, 1009);
+INSERT INTO `sys_role_menu` VALUES (2, 1010);
+INSERT INTO `sys_role_menu` VALUES (2, 1011);
+INSERT INTO `sys_role_menu` VALUES (2, 1012);
+INSERT INTO `sys_role_menu` VALUES (2, 1013);
+INSERT INTO `sys_role_menu` VALUES (2, 1014);
+INSERT INTO `sys_role_menu` VALUES (2, 1015);
+INSERT INTO `sys_role_menu` VALUES (2, 1016);
+INSERT INTO `sys_role_menu` VALUES (2, 1017);
+INSERT INTO `sys_role_menu` VALUES (2, 1018);
+INSERT INTO `sys_role_menu` VALUES (2, 1019);
+INSERT INTO `sys_role_menu` VALUES (2, 1020);
+INSERT INTO `sys_role_menu` VALUES (2, 1021);
+INSERT INTO `sys_role_menu` VALUES (2, 1022);
+INSERT INTO `sys_role_menu` VALUES (2, 1023);
+INSERT INTO `sys_role_menu` VALUES (2, 1024);
+INSERT INTO `sys_role_menu` VALUES (2, 1025);
+INSERT INTO `sys_role_menu` VALUES (2, 1026);
+INSERT INTO `sys_role_menu` VALUES (2, 1027);
+INSERT INTO `sys_role_menu` VALUES (2, 1028);
+INSERT INTO `sys_role_menu` VALUES (2, 1029);
+INSERT INTO `sys_role_menu` VALUES (2, 1030);
+INSERT INTO `sys_role_menu` VALUES (2, 1031);
+INSERT INTO `sys_role_menu` VALUES (2, 1032);
+INSERT INTO `sys_role_menu` VALUES (2, 1033);
+INSERT INTO `sys_role_menu` VALUES (2, 1034);
+INSERT INTO `sys_role_menu` VALUES (2, 1035);
+INSERT INTO `sys_role_menu` VALUES (2, 1036);
+INSERT INTO `sys_role_menu` VALUES (2, 1037);
+INSERT INTO `sys_role_menu` VALUES (2, 1038);
+INSERT INTO `sys_role_menu` VALUES (2, 1039);
+INSERT INTO `sys_role_menu` VALUES (2, 1040);
+INSERT INTO `sys_role_menu` VALUES (2, 1041);
+INSERT INTO `sys_role_menu` VALUES (2, 1042);
+INSERT INTO `sys_role_menu` VALUES (2, 1043);
+INSERT INTO `sys_role_menu` VALUES (2, 1044);
+INSERT INTO `sys_role_menu` VALUES (2, 1045);
+INSERT INTO `sys_role_menu` VALUES (2, 1050);
+INSERT INTO `sys_role_menu` VALUES (2, 1775500307898949634);
+INSERT INTO `sys_role_menu` VALUES (2, 1775895273104068610);
+INSERT INTO `sys_role_menu` VALUES (2, 1775895273104068611);
+INSERT INTO `sys_role_menu` VALUES (2, 1775895273104068612);
+INSERT INTO `sys_role_menu` VALUES (2, 1775895273104068613);
+INSERT INTO `sys_role_menu` VALUES (2, 1775895273104068614);
+INSERT INTO `sys_role_menu` VALUES (2, 1775895273104068615);
+INSERT INTO `sys_role_menu` VALUES (2, 1780240077690507266);
+INSERT INTO `sys_role_menu` VALUES (2, 1780240077690507267);
+INSERT INTO `sys_role_menu` VALUES (2, 1780240077690507268);
+INSERT INTO `sys_role_menu` VALUES (2, 1780240077690507269);
+INSERT INTO `sys_role_menu` VALUES (2, 1780240077690507270);
+INSERT INTO `sys_role_menu` VALUES (2, 1780240077690507271);
+INSERT INTO `sys_role_menu` VALUES (2, 1780255628576018433);
+INSERT INTO `sys_role_menu` VALUES (2, 1780255628576018434);
+INSERT INTO `sys_role_menu` VALUES (2, 1780255628576018435);
+INSERT INTO `sys_role_menu` VALUES (2, 1780255628576018436);
+INSERT INTO `sys_role_menu` VALUES (2, 1780255628576018437);
+INSERT INTO `sys_role_menu` VALUES (2, 1780255628576018438);
+INSERT INTO `sys_role_menu` VALUES (2, 1786379590171156481);
+INSERT INTO `sys_role_menu` VALUES (2, 1786379590171156482);
+INSERT INTO `sys_role_menu` VALUES (2, 1786379590171156483);
+INSERT INTO `sys_role_menu` VALUES (2, 1786379590171156484);
+INSERT INTO `sys_role_menu` VALUES (2, 1786379590171156485);
+INSERT INTO `sys_role_menu` VALUES (2, 1786379590171156486);
+INSERT INTO `sys_role_menu` VALUES (2, 1787078000285122561);
+INSERT INTO `sys_role_menu` VALUES (2, 1810594719028834305);
+INSERT INTO `sys_role_menu` VALUES (2, 1810594719028834306);
+INSERT INTO `sys_role_menu` VALUES (2, 1810594719028834307);
+INSERT INTO `sys_role_menu` VALUES (2, 1810594719028834308);
+INSERT INTO `sys_role_menu` VALUES (2, 1810594719028834309);
+INSERT INTO `sys_role_menu` VALUES (2, 1810594719028834310);
+INSERT INTO `sys_role_menu` VALUES (2, 1843281231381852162);
+INSERT INTO `sys_role_menu` VALUES (2, 1860690448695549953);
+INSERT INTO `sys_role_menu` VALUES (2, 1898286496441393153);
 INSERT INTO `sys_role_menu` VALUES (3, 1);
 INSERT INTO `sys_role_menu` VALUES (3, 100);
 INSERT INTO `sys_role_menu` VALUES (3, 101);
@@ -1382,6 +1477,7 @@
 INSERT INTO `sys_role_menu` VALUES (3, 106);
 INSERT INTO `sys_role_menu` VALUES (3, 107);
 INSERT INTO `sys_role_menu` VALUES (3, 108);
+INSERT INTO `sys_role_menu` VALUES (3, 113);
 INSERT INTO `sys_role_menu` VALUES (3, 500);
 INSERT INTO `sys_role_menu` VALUES (3, 501);
 INSERT INTO `sys_role_menu` VALUES (3, 1001);
@@ -1429,6 +1525,8 @@
 INSERT INTO `sys_role_menu` VALUES (3, 1043);
 INSERT INTO `sys_role_menu` VALUES (3, 1044);
 INSERT INTO `sys_role_menu` VALUES (3, 1045);
+INSERT INTO `sys_role_menu` VALUES (3, 1050);
+INSERT INTO `sys_role_menu` VALUES (3, 1775500307898949634);
 INSERT INTO `sys_role_menu` VALUES (1661661183933177857, 1);
 INSERT INTO `sys_role_menu` VALUES (1661661183933177857, 100);
 INSERT INTO `sys_role_menu` VALUES (1661661183933177857, 107);
@@ -1443,10 +1541,108 @@
 INSERT INTO `sys_role_menu` VALUES (1661661183933177857, 1037);
 INSERT INTO `sys_role_menu` VALUES (1661661183933177857, 1038);
 INSERT INTO `sys_role_menu` VALUES (1661661183933177857, 1039);
-INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1689201668374556674);
-INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1689205943360188417);
-INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1689243465037561858);
-INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1689243466220355585);
+INSERT INTO `sys_role_menu` VALUES (1661661183933177857, 1775500307898949634);
+INSERT INTO `sys_role_menu` VALUES (1661661183933177857, 1775895273104068610);
+INSERT INTO `sys_role_menu` VALUES (1661661183933177857, 1775895273104068611);
+INSERT INTO `sys_role_menu` VALUES (1661661183933177857, 1775895273104068612);
+INSERT INTO `sys_role_menu` VALUES (1661661183933177857, 1775895273104068613);
+INSERT INTO `sys_role_menu` VALUES (1661661183933177857, 1775895273104068614);
+INSERT INTO `sys_role_menu` VALUES (1661661183933177857, 1775895273104068615);
+INSERT INTO `sys_role_menu` VALUES (1661661183933177857, 1787078000285122561);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 100);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 101);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 102);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 103);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 104);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 105);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 106);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 107);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 108);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 113);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 500);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 501);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1001);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1002);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1003);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1004);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1005);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1006);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1007);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1008);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1009);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1010);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1011);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1012);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1013);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1014);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1015);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1016);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1017);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1018);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1019);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1020);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1021);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1022);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1023);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1024);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1025);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1026);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1027);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1028);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1029);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1030);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1031);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1032);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1033);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1034);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1035);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1036);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1037);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1038);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1039);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1040);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1041);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1042);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1043);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1044);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1045);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1050);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1775500307898949634);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1775895273104068610);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1775895273104068611);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1775895273104068612);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1775895273104068613);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1775895273104068614);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1775895273104068615);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1780240077690507266);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1780240077690507267);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1780240077690507268);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1780240077690507269);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1780240077690507270);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1780240077690507271);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1780255628576018433);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1780255628576018434);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1780255628576018435);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1780255628576018436);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1780255628576018437);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1780255628576018438);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1786379590171156481);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1786379590171156482);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1786379590171156483);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1786379590171156484);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1786379590171156485);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1786379590171156486);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1787078000285122561);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1810594719028834305);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1810594719028834306);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1810594719028834307);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1810594719028834308);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1810594719028834309);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1810594719028834310);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1843281231381852162);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1860690448695549953);
+INSERT INTO `sys_role_menu` VALUES (1729685491108446210, 1898286496441393153);
 
 -- ----------------------------
 -- Table structure for sys_tenant
@@ -1545,8 +1741,10 @@
 -- ----------------------------
 -- Records of sys_user
 -- ----------------------------
-INSERT INTO `sys_user` VALUES (1, NULL, '1', 100.00, '00000', 103, 'admin', '鐔婄尗鍔╂墜', 'sys_user', 'Free', 'ageerle@163.com', '15888888888', '0', 'http://panda-1253683406.cos.ap-guangzhou.myqcloud.com/panda/2024/10/07/09bd580f55954b50a3093231945123e0.jpg', NULL, '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2025-03-02 11:05:28', NULL, 103, 1, '2023-05-14 15:19:39', 1, '2025-03-02 11:05:28', '绠$悊鍛�');
-INSERT INTO `sys_user` VALUES (1714176194496339970, NULL, '1', 88.88, '00000', NULL, 'pandarobot@163.com', '闂瓟鍔╂墜', 'sys_user', 'Free', '', '', '0', 'http://panda-1253683406.cos.ap-guangzhou.myqcloud.com/panda/2024/04/28/346796f5c32744c1987bf28d5820325b.jpg', NULL, '$2a$10$rxKsOfft6w7yywmpngroo.2/9y8Rucc9uj1rdc5wPg9dlwe9mITIi', '0', '0', '127.0.0.1', '2025-03-01 21:33:12', NULL, 103, 1713440206715650049, '2023-10-17 15:07:07', 1714176194496339970, '2025-03-01 21:33:12', NULL);
+INSERT INTO `sys_user` VALUES (1, NULL, '1', 100.00, '00000', 103, 'admin', '鐔婄尗鍔╂墜', 'sys_user', 'Free', 'ageerle@163.com', '15888888888', '1', 'http://panda-1253683406.cos.ap-guangzhou.myqcloud.com/panda/2024/10/07/09bd580f55954b50a3093231945123e0.jpg', NULL, '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', '2025-03-17 09:46:22', NULL, 103, 1, '2023-05-14 15:19:39', 1, '2025-03-17 09:46:22', '绠$悊鍛�');
+INSERT INTO `sys_user` VALUES (1714176194496339970, NULL, '1', 88.88, '00000', NULL, 'pandarobot@163.com', '闂瓟鍔╂墜', 'sys_user', 'Free', '', '', '0', 'http://panda-1253683406.cos.ap-guangzhou.myqcloud.com/panda/2024/04/28/346796f5c32744c1987bf28d5820325b.jpg', NULL, '$2a$10$u3LIdNBg6kM3iYqHFJe2IOWCMbT2h5NUI.CeXlF5dyBGcy3nwW836', '1', '2', '127.0.0.1', '2025-03-05 17:18:42', NULL, 103, 1713440206715650049, '2023-10-17 15:07:07', 1714176194496339970, '2025-03-05 17:18:42', NULL);
+INSERT INTO `sys_user` VALUES (1898270044544028674, NULL, '1', 1.00, '00000', NULL, '1150039659@qq.com', '1150039659@qq.com', 'sys_user', 'Free', '', '', '0', NULL, NULL, '$2a$10$Mw9T.kzBuYqvT14ZDP2VoORLU9WMWdaT/iatJxEtCQCZoBYBNmKw6', '0', '2', '127.0.0.1', '2025-03-09 23:01:03', '192.168.20.162', NULL, NULL, '2025-03-08 15:10:21', 1898270044544028674, '2025-03-09 23:01:03', NULL);
+INSERT INTO `sys_user` VALUES (1898283021590552578, NULL, '0', 1.00, '00000', NULL, '1434841024@qq.com', '1434841024@qq.com', 'sys_user', 'Free', '', '', '0', NULL, NULL, '$2a$10$R6rClsJdJK5Ovhp14Xc0w.IITFBDyocgxWqsJ9SS7AhWW6.vCKiAa', '0', '2', '192.168.20.161', '2025-03-08 17:04:37', '127.0.0.1', NULL, NULL, '2025-03-08 16:01:55', 1898283021590552578, '2025-03-08 17:04:37', NULL);
 
 -- ----------------------------
 -- Table structure for sys_user_post
@@ -1589,7 +1787,6 @@
 INSERT INTO `sys_user_role` VALUES (1713427806956404738, 1);
 INSERT INTO `sys_user_role` VALUES (1713439839684689921, 1);
 INSERT INTO `sys_user_role` VALUES (1713440206715650049, 1);
-INSERT INTO `sys_user_role` VALUES (1714176194496339970, 1);
 INSERT INTO `sys_user_role` VALUES (1714267685998907393, 1);
 INSERT INTO `sys_user_role` VALUES (1714269581270667265, 1);
 INSERT INTO `sys_user_role` VALUES (1714270420659949569, 1);
@@ -2570,5 +2767,6 @@
 INSERT INTO `sys_user_role` VALUES (1846455089220632577, 1);
 INSERT INTO `sys_user_role` VALUES (1847910185208987649, 1);
 INSERT INTO `sys_user_role` VALUES (1871910972567822337, 1);
+INSERT INTO `sys_user_role` VALUES (1897620177094057985, 1);
 
 SET FOREIGN_KEY_CHECKS = 1;

--
Gitblit v1.9.3