Quellcode durchsuchen

调整分支功能

wanggaokun vor 1 Monat
Ursprung
Commit
f25a949100
34 geänderte Dateien mit 54 neuen und 1304 gelöschten Zeilen
  1. 0 17
      eco-ai/ai-knowledge-api/pom.xml
  2. 0 40
      eco-ai/ai-knowledge-biz/pom.xml
  3. 0 81
      eco-ai/ai-knowledge-biz/src/main/java/org/eco/vip/ai/knowledge/controller/KnowledgeController.java
  4. 0 17
      eco-ai/ai-ollama-api/pom.xml
  5. 0 17
      eco-ai/ai-ollama-api/src/main/java/org/eco/vip/ai/ollama/api/api/IOllamaApi.java
  6. 0 39
      eco-ai/ai-ollama-biz/pom.xml
  7. 0 30
      eco-ai/ai-ollama-biz/src/main/java/org/eco/vip/ai/ollama/api/OllamaApi.java
  8. 0 60
      eco-ai/ai-ollama-biz/src/main/java/org/eco/vip/ai/ollama/controller/OllamaController.java
  9. 0 75
      eco-ai/ai-ollama-biz/src/main/java/org/eco/vip/ai/ollama/service/IOllamaService.java
  10. 0 198
      eco-ai/ai-ollama-biz/src/main/java/org/eco/vip/ai/ollama/service/OllamaService.java
  11. 0 23
      eco-ai/ai-text-sql-api/pom.xml
  12. 0 21
      eco-ai/ai-text-sql-api/src/main/java/org/eco/vip/text2sql/api/IText2sqlApi.java
  13. 0 23
      eco-ai/ai-text-sql-api/src/main/java/org/eco/vip/text2sql/domain/ContentVo.java
  14. 0 42
      eco-ai/ai-text-sql-biz/pom.xml
  15. 0 37
      eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/api/Text2sqlApi.java
  16. 0 37
      eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/config/TableMapPropertiesConfig.java
  17. 0 55
      eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/controller/ChatSqlController.java
  18. 0 21
      eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/domain/CommentVo.java
  19. 0 39
      eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/mapper/Text2SqlMapper.java
  20. 0 28
      eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/properties/TableMapProperties.java
  21. 0 68
      eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/service/IText2SqlService.java
  22. 0 45
      eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/service/TableNameService.java
  23. 0 122
      eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/service/Text2SqlService.java
  24. 0 31
      eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/utils/SqlValidator.java
  25. 0 1
      eco-ai/ai-text-sql-biz/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  26. 0 15
      eco-ai/ai-text-sql-biz/src/main/resources/mapper/Text2SqlMapper.xml
  27. 0 25
      eco-ai/pom.xml
  28. 0 26
      eco-bom/pom.xml
  29. 0 15
      eco-start/pom.xml
  30. 8 8
      eco-start/src/main/resources/application-local.yml
  31. 2 2
      eco-start/src/main/resources/application.yml
  32. 40 41
      eco-start/src/main/resources/db/mysql/V1_0_0_1__sys-init-ddl.sql
  33. 4 4
      eco-start/src/main/resources/db/mysql/V1_0_0_2__sys-init-dml.sql
  34. 0 1
      pom.xml

+ 0 - 17
eco-ai/ai-knowledge-api/pom.xml

@@ -1,17 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.eco.vip</groupId>
-        <artifactId>eco-ai</artifactId>
-        <version>${revision}</version>
-    </parent>
-
-    <artifactId>ai-knowledge-api</artifactId>
-    <name>${project.artifactId}</name>
-    <packaging>jar</packaging>
-    <description>
-        调用知识库 API,暴露给其它模块调用
-    </description>
-
-</project>

+ 0 - 40
eco-ai/ai-knowledge-biz/pom.xml

@@ -1,40 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.eco.vip</groupId>
-        <artifactId>eco-ai</artifactId>
-        <version>${revision}</version>
-    </parent>
-
-    <artifactId>ai-knowledge-biz</artifactId>
-    <name>${project.artifactId}</name>
-    <packaging>jar</packaging>
-
-    <description>
-        知识库实现
-    </description>
-    <dependencies>
-        <dependency>
-            <groupId>org.eco.vip</groupId>
-            <artifactId>ai-knowledge-api</artifactId>
-            <version>${revision}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.eco.vip</groupId>
-            <artifactId>com-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.github.pig-mesh.ai</groupId>
-            <artifactId>deepseek-spring-boot-starter</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>io.milvus</groupId>
-            <artifactId>milvus-sdk-java</artifactId>
-        </dependency>
-
-    </dependencies>
-
-</project>

+ 0 - 81
eco-ai/ai-knowledge-biz/src/main/java/org/eco/vip/ai/knowledge/controller/KnowledgeController.java

@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.knowledge.controller;
-
-
-import io.github.pigmesh.ai.deepseek.core.DeepSeekClient;
-import io.github.pigmesh.ai.deepseek.core.EmbeddingClient;
-import io.github.pigmesh.ai.deepseek.core.chat.ChatCompletionRequest;
-import io.github.pigmesh.ai.deepseek.core.chat.ChatCompletionResponse;
-import io.milvus.v2.client.ConnectConfig;
-import io.milvus.v2.client.MilvusClientV2;
-import io.milvus.v2.service.vector.request.SearchReq;
-import io.milvus.v2.service.vector.request.data.FloatVec;
-import io.milvus.v2.service.vector.response.SearchResp;
-import jakarta.annotation.Resource;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import reactor.core.publisher.Flux;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * @description KnowledgeController
- *
- * @author GaoKunW
- * @date 2025/3/16 22:41
- */
-@RestController
-@RequestMapping("/ai/ollama")
-public class KnowledgeController {
-
-    @Resource
-    private EmbeddingClient embeddingClient;
-
-    @Resource
-    private DeepSeekClient deepSeekClient;
-
-    @GetMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
-    public Flux<ChatCompletionResponse> chat(String prompt) {
-        ConnectConfig connectConfig = ConnectConfig.builder()
-                .uri("") // 1.2 获取的 Milvus 链接端点
-                .token("")  // 1.2 获取的 Milvus 链接信息
-                .build();
-
-
-        MilvusClientV2 milvusClientV2 = new MilvusClientV2(connectConfig);
-
-        List<Float> floatList = embeddingClient.embed(prompt);
-
-        SearchReq searchReq = SearchReq.builder()
-                .collectionName("deepseek4j_test")
-                .data(Collections.singletonList(new FloatVec(floatList)))
-                .outputFields(Collections.singletonList("text"))
-                .topK(3)
-                .build();
-
-        SearchResp searchResp = milvusClientV2.search(searchReq);
-
-        List<String> resultList = new ArrayList<>();
-        List<List<SearchResp.SearchResult>> searchResults = searchResp.getSearchResults();
-        for (List<SearchResp.SearchResult> results : searchResults) {
-            System.out.println("TopK results:");
-            for (SearchResp.SearchResult result : results) {
-                resultList.add(result.getEntity().get("text").toString());
-            }
-        }
-
-
-        ChatCompletionRequest request = ChatCompletionRequest.builder()
-                .addUserMessage(String.format("你要根据用户输入的问题:%s \n \n 参考如下内容: %s  \n\n 整理处理最终结果", prompt, resultList)).build();
-
-        return deepSeekClient.chatFluxCompletion(request);
-    }
-}

+ 0 - 17
eco-ai/ai-ollama-api/pom.xml

@@ -1,17 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.eco.vip</groupId>
-        <artifactId>eco-ai</artifactId>
-        <version>${revision}</version>
-    </parent>
-
-    <artifactId>ai-ollama-api</artifactId>
-    <name>${project.artifactId}</name>
-    <packaging>jar</packaging>
-
-    <description>
-        调用ollama API,暴露给其它模块调用
-    </description>
-</project>

+ 0 - 17
eco-ai/ai-ollama-api/src/main/java/org/eco/vip/ai/ollama/api/api/IOllamaApi.java

@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.ollama.api.api;
-
-
-/**
- * @description IOllamaApi
- *
- * @author GaoKunW
- * @date 2025/3/12 23:10
- */
-public interface IOllamaApi {
-    String syncChat(String prompt);
-}

+ 0 - 39
eco-ai/ai-ollama-biz/pom.xml

@@ -1,39 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.eco.vip</groupId>
-        <artifactId>eco-ai</artifactId>
-        <version>${revision}</version>
-    </parent>
-
-    <artifactId>ai-ollama-biz</artifactId>
-    <packaging>jar</packaging>
-    <name>${project.artifactId}</name>
-    <description>
-        ollama本地大模型服务
-    </description>
-    <dependencies>
-        <dependency>
-            <groupId>org.eco.vip</groupId>
-            <artifactId>ai-ollama-api</artifactId>
-            <version>${revision}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.eco.vip</groupId>
-            <artifactId>com-web</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.eco.vip</groupId>
-            <artifactId>ai-text-sql-api</artifactId>
-            <version>${revision}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>io.github.pig-mesh.ai</groupId>
-            <artifactId>deepseek-spring-boot-starter</artifactId>
-        </dependency>
-    </dependencies>
-
-</project>

+ 0 - 30
eco-ai/ai-ollama-biz/src/main/java/org/eco/vip/ai/ollama/api/OllamaApi.java

@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.ollama.api;
-
-
-import jakarta.annotation.Resource;
-import org.eco.vip.ai.ollama.api.api.IOllamaApi;
-import org.eco.vip.ai.ollama.service.IOllamaService;
-import org.springframework.stereotype.Service;
-
-/**
- * @description IOllamaApi
- *
- * @author GaoKunW
- * @date 2025/3/12 23:11
- */
-@Service
-public class OllamaApi implements IOllamaApi {
-
-    @Resource
-    private IOllamaService ollamaService;
-
-    @Override
-    public String syncChat(String prompt) {
-        return ollamaService.syncChatContent(prompt);
-    }
-}

+ 0 - 60
eco-ai/ai-ollama-biz/src/main/java/org/eco/vip/ai/ollama/controller/OllamaController.java

@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.ollama.controller;
-
-
-import cn.hutool.json.JSONArray;
-import io.github.pigmesh.ai.deepseek.core.chat.ChatCompletionResponse;
-import jakarta.annotation.Resource;
-import org.eco.vip.ai.ollama.service.IOllamaService;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import reactor.core.publisher.Flux;
-
-/**
- * @description OllamaController
- *
- * @author GaoKunW
- * @date 2025/3/12 17:53
- */
-@RestController
-@RequestMapping("/ai/ollama")
-public class OllamaController {
-
-    @Resource
-    private IOllamaService ollamaService;
-
-    @GetMapping(value = "/multiple/chat/advanced", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
-    public Flux<ChatCompletionResponse> chatAdvanced(String prompt, String cacheCode) {
-        return ollamaService.multipleRoundChatAdvanced(prompt, cacheCode);
-    }
-
-    @GetMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
-    public Flux<ChatCompletionResponse> chat(String prompt) {
-        return ollamaService.chat(prompt);
-    }
-    @GetMapping(value = "/syncChat")
-    public String syncChat(String prompt) {
-        return ollamaService.syncChat(prompt);
-    }
-
-    @GetMapping(value = "/syncChatArr")
-    public JSONArray syncChatArr(String prompt) {
-        return ollamaService.syncChatArr(prompt);
-    }
-
-    @GetMapping(value = "/chatBase")
-    public String chat1(String prompt) {
-        return ollamaService.syncChatContent(prompt);
-    }
-
-    @GetMapping(value = "/chat/chatAdvanced", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
-    public Flux<ChatCompletionResponse> chatAdvanced(String prompt) {
-        return ollamaService.chatAdvanced(prompt);
-    }
-}

+ 0 - 75
eco-ai/ai-ollama-biz/src/main/java/org/eco/vip/ai/ollama/service/IOllamaService.java

@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.ollama.service;
-
-
-import cn.hutool.json.JSONArray;
-import io.github.pigmesh.ai.deepseek.core.chat.ChatCompletionResponse;
-import reactor.core.publisher.Flux;
-
-/**
- * @description IOllamaService
- *
- * @author GaoKunW
- * @date 2025/3/12 23:02
- */
-public interface IOllamaService {
-    /**
-     * @description: 同步返回
-     *
-     * @param: prompt 问题
-     * @return String 内同
-     **/
-    String syncChatContent(String prompt);
-
-    /**
-     * @description: 同步返回
-     *
-     * @param: prompt 问题
-     * @return String 内同
-     **/
-    String syncChat(String prompt);
-    /**
-     * @description: 同步返回
-     *
-     * @param: prompt 问题
-     * @return String 内同
-     **/
-    JSONArray syncChatArr(String prompt);
-
-    /**
-     * @description: 流式输出多轮对话
-     *
-     * @param: prompt 问题
-     * @param: cacheCode 缓存
-     * @return Flux<ChatCompletionResponse> 流结构结果
-     **/
-    Flux<ChatCompletionResponse> multipleRoundChatAdvanced(String prompt, String cacheCode);
-
-    /**
-     * @description: 流式输出基础单轮对话
-     *
-     * @param: prompt  问题
-     * @return Flux<ChatCompletionResponse>
-     **/
-    Flux<ChatCompletionResponse> chatBase(String prompt);
-
-    /**
-     * @description: 流式输出基础单轮对话
-     *
-     * @param: prompt  问题
-     * @return Flux<ChatCompletionResponse>
-     **/
-    Flux<ChatCompletionResponse> chat(String prompt);
-
-    /**
-     * @description: 流式输出高级单轮对话
-     *
-     * @param: prompt  问题
-     * @return Flux<ChatCompletionResponse>
-     **/
-    Flux<ChatCompletionResponse> chatAdvanced(String prompt);
-}

+ 0 - 198
eco-ai/ai-ollama-biz/src/main/java/org/eco/vip/ai/ollama/service/OllamaService.java

@@ -1,198 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.ollama.service;
-
-
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
-import io.github.pigmesh.ai.deepseek.core.DeepSeekClient;
-import io.github.pigmesh.ai.deepseek.core.Json;
-import io.github.pigmesh.ai.deepseek.core.chat.ChatCompletionChoice;
-import io.github.pigmesh.ai.deepseek.core.chat.ChatCompletionRequest;
-import io.github.pigmesh.ai.deepseek.core.chat.ChatCompletionResponse;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.eco.vip.text2sql.api.IText2sqlApi;
-import org.eco.vip.text2sql.domain.ContentVo;
-import org.springframework.stereotype.Service;
-import reactor.core.publisher.Flux;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-
-/**
- * @description OllamaService
- *
- * @author GaoKunW
- * @date 2025/3/12 23:02
- */
-@Slf4j
-@Service
-public class OllamaService implements IOllamaService {
-
-    public final static HashMap<String, String> CACHE = new HashMap<>();
-
-    Function<String, String> elt = s -> s.replaceAll("<think>[\\s\\S]*?</think>", "").replaceAll("\n", "");
-
-    Function<List<ChatCompletionChoice>, String> choicesProcess = list -> list.stream().map(e -> e.delta().content())
-            .collect(Collectors.joining());
-
-    @Resource
-    private DeepSeekClient deepSeekClient;
-
-    @Resource
-    private IText2sqlApi text2sqlApi;
-
-    @Override
-    public String syncChatContent(String prompt) {
-        ChatCompletionRequest request = ChatCompletionRequest.builder()
-                // 根据渠道模型名称动态修改这个参数
-//                .model("qwen2.5:1.5b")
-//                .addAssistantMessage("我是一个sql生成专家,根据用户需求,生成mysql可执行的sql语句,只输出sql语句不需要任何格式")
-                .addUserMessage(prompt).build();
-        ChatCompletionResponse response = deepSeekClient.chatCompletion(request).execute();
-        ChatCompletionChoice completionChoice = response.choices().getFirst();
-        return completionChoice.message().content();
-    }
-
-    @Override
-    public String syncChat(String prompt) {
-        ContentVo contentVo = text2sqlApi.getQuestion(prompt);
-        if (contentVo != null) {
-            String content = this.syncChatContent(contentVo.getContent());
-            contentVo.setContent(content);
-            JSONArray answer = text2sqlApi.getAnswer(contentVo);
-            log.info("\nanswer: {}", answer);
-            String md = convertJsonArrayToMd(answer);
-            log.info("\nmd {}", md);
-            return md;
-        }
-        return null;
-    }
-
-    @Override
-    public JSONArray syncChatArr(String prompt) {
-        ContentVo contentVo = text2sqlApi.getQuestion(prompt);
-        if (contentVo != null) {
-            String content = this.syncChatContent(contentVo.getContent());
-            contentVo.setContent(content);
-            return text2sqlApi.getAnswer(contentVo);
-        }
-        return null;
-    }
-
-    @Override
-    public Flux<ChatCompletionResponse> multipleRoundChatAdvanced(String prompt, String cacheCode) {
-        log.info("cacheCode {}", cacheCode);
-        ChatCompletionRequest request = ChatCompletionRequest.builder()
-                .addUserMessage(prompt)
-                .addAssistantMessage(elt.apply(CACHE.getOrDefault(cacheCode, "")))
-                .addSystemMessage("你是一个专业的助手").maxCompletionTokens(5000).build();
-        log.info("request {}", Json.toJson(request));
-        // 只保留上一次回答内容
-        CACHE.remove(cacheCode);
-        return deepSeekClient.chatFluxCompletion(request).doOnNext(i -> {
-            String content = choicesProcess.apply(i.choices());
-            // 其他ELT流程
-            CACHE.merge(cacheCode, content, String::concat);
-        }).doOnError(e -> log.error("chatAdvanced error:{}", e.getMessage()));
-    }
-
-    @Override
-    public Flux<ChatCompletionResponse> chatBase(String prompt) {
-        return deepSeekClient.chatFluxCompletion(prompt);
-    }
-
-    @Override
-    public Flux<ChatCompletionResponse> chat(String prompt) {
-        ContentVo contentVo = text2sqlApi.getQuestion(prompt);
-        if (contentVo != null) {
-            String content = this.syncChatContent(contentVo.getContent());
-            contentVo.setContent(content);
-            JSONArray answer = text2sqlApi.getAnswer(contentVo);
-            log.info("\nanswer {}", answer);
-            String md = convertJsonArrayToMd(answer);
-            log.info("\nmd {}", md);
-//            Flux<ChatCompletionResponse> flux = deepSeekClient.c
-//            return deepSeekClient.chatFluxCompletion("问题:" + prompt + ";\n答案:" + answer.toString() + "\n" + "请将问题和答案汇总,答案按照列表格式完整输出,不要输出其他内容");
-//            return deepSeekClient.chatFluxCompletion(answer.toString() + "\n" + "以上内容转换表格格式输出,不要输出其他内容");
-            return deepSeekClient.chatFluxCompletion(md + "\n直接输出以上内容,不要输出其他内容");
-//            return deepSeekClient.chatFluxCompletion(answer.toString() + "\n" + "请将以上 JSON 数据转换为规范的 Markdown 表格格式,要求:" +
-//                    "\n1. 第一行为表头(自动提取 JSON 的键名)\n" +
-//                    "2. 第二行为分隔符行(|---|---|...)\n" +
-//                    "3. 后续行展示数据内容\n" +
-//                    "4. 所有列保持左对齐\n" +
-//                    "5. 如果值为空则显示为 -" +
-//                    "6. 只输出数据内容,不要输出其他内容" +
-//                    "7. 以```Markdown 代码格式展示");
-//            return deepSeekClient.chatFluxCompletion(answer.toString() + "\n" + "请将以上 JSON 数据转换为规范的 Markdown 表格格式,要求:\n" +
-//                    "1. 所有列保持左对齐\n" +
-//                    "2. 不要修改原数据的值" +
-//                    "3. 如果值为空则''显示为 -" +
-//                    "4. 只输出数据内容,不要输出其他内容" +
-//                    "5. 以```Markdown 代码格式展示");
-        }
-        return null;
-    }
-
-    public String convertJsonArrayToMd(JSONArray array) {
-        if (array.isEmpty()) {
-            return "";
-        }
-
-        // 2. 提取表头(假设所有对象的键相同)
-        JSONObject firstObj = array.getJSONObject(0);
-        String[] headers = firstObj.keySet().toArray(new String[0]);
-
-        // 3. 构建Markdown表格
-        StringBuilder md = new StringBuilder();
-
-        // 3.1 表头行
-        md.append("|").append(String.join("|", headers)).append("|\n");
-
-        // 3.2 分隔线行(左对齐)
-        md.append("|").append(String.join("|", Arrays.stream(headers)
-                .map(h -> "---")
-                .toArray(String[]::new))).append("|\n");
-
-        // 3.3 数据行
-        for (int i = 0; i < array.size(); i++) {
-            JSONObject obj = array.getJSONObject(i);
-            String[] row = Arrays.stream(headers)
-                    // 空值默认显示为 "-"
-                    .map(key -> obj.getStr(key, "-")
-//                            .replace("|", "\\|")
-//                            .replace("\n", "<br>")
-                    )
-                    .toArray(String[]::new);
-            md.append("|").append(String.join("|", row)).append("|\n");
-        }
-
-        return md.toString();
-    }
-
-    @Override
-    public Flux<ChatCompletionResponse> chatAdvanced(String prompt) {
-        ChatCompletionRequest request = ChatCompletionRequest.builder()
-                // 模型选择,支持 DEEPSEEK_CHAT、DEEPSEEK_REASONER 等
-//                .model("qwen2.5:1.5b")
-                // 添加用户消息
-                .addUserMessage(prompt)
-                // 设置最大生成 token 数,默认 2048
-                .maxCompletionTokens(1000)
-                // 设置响应格式,支持 JSON 结构化输出
-//                .responseFormat(...) // 可选
-                // function calling
-//        .tools(...) // 可选
-                .build();
-
-        return deepSeekClient.chatFluxCompletion(request);
-    }
-}

+ 0 - 23
eco-ai/ai-text-sql-api/pom.xml

@@ -1,23 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.eco.vip</groupId>
-        <artifactId>eco-ai</artifactId>
-        <version>${revision}</version>
-    </parent>
-
-    <artifactId>ai-text-sql-api</artifactId>
-    <name>${project.artifactId}</name>
-    <packaging>jar</packaging>
-    <description>
-        text2sql API,暴露给其它模块调用
-    </description>
-    <dependencies>
-        <dependency>
-            <groupId>org.eco.vip</groupId>
-            <artifactId>com-core</artifactId>
-        </dependency>
-    </dependencies>
-
-</project>

+ 0 - 21
eco-ai/ai-text-sql-api/src/main/java/org/eco/vip/text2sql/api/IText2sqlApi.java

@@ -1,21 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.text2sql.api;
-
-
-import cn.hutool.json.JSONArray;
-import org.eco.vip.text2sql.domain.ContentVo;
-
-/**
- * @description Text2sqlApi
- *
- * @author GaoKunW
- * @date 2025/3/13 15:04
- */
-public interface IText2sqlApi {
-    ContentVo getQuestion(String question);
-    JSONArray getAnswer(ContentVo question);
-}

+ 0 - 23
eco-ai/ai-text-sql-api/src/main/java/org/eco/vip/text2sql/domain/ContentVo.java

@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.text2sql.domain;
-
-
-import lombok.Builder;
-import lombok.Data;
-
-/**
- * @description QuestionVo
- *
- * @author GaoKunW
- * @date 2025/3/13 14:52
- */
-@Builder
-@Data
-public class ContentVo {
-    private String content;
-    private String tableName;
-}

+ 0 - 42
eco-ai/ai-text-sql-biz/pom.xml

@@ -1,42 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.eco.vip</groupId>
-        <artifactId>eco-ai</artifactId>
-        <version>${revision}</version>
-    </parent>
-
-    <artifactId>ai-text-sql-biz</artifactId>
-    <name>${project.artifactId}</name>
-    <packaging>jar</packaging>
-    <description>
-        text2sql功能实现,包含自然语言转sql,执行sql
-    </description>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.eco.vip</groupId>
-            <artifactId>ai-text-sql-api</artifactId>
-            <version>${revision}</version>
-        </dependency>
-<!--        <dependency>-->
-<!--            <groupId>org.eco.vip</groupId>-->
-<!--            <artifactId>ai-ollama-api</artifactId>-->
-<!--            <version>${revision}</version>-->
-<!--        </dependency>-->
-        <dependency>
-            <groupId>org.eco.vip</groupId>
-            <artifactId>com-web</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.github.jsqlparser</groupId>
-            <artifactId>jsqlparser</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.eco.vip</groupId>
-            <artifactId>com-orm</artifactId>
-        </dependency>
-    </dependencies>
-</project>

+ 0 - 37
eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/api/Text2sqlApi.java

@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.text2sql.api;
-
-
-import cn.hutool.json.JSONArray;
-import jakarta.annotation.Resource;
-import org.eco.vip.ai.text2sql.service.IText2SqlService;
-import org.eco.vip.text2sql.api.IText2sqlApi;
-import org.eco.vip.text2sql.domain.ContentVo;
-import org.springframework.stereotype.Service;
-
-/**
- * @description Text2sqlApi
- *
- * @author GaoKunW
- * @date 2025/3/13 15:05
- */
-@Service
-public class Text2sqlApi implements IText2sqlApi {
-
-    @Resource
-    private IText2SqlService text2SqlService;
-
-    @Override
-    public ContentVo getQuestion(String question) {
-        return text2SqlService.getQuestion(question);
-    }
-
-    @Override
-    public JSONArray getAnswer(ContentVo question) {
-        return text2SqlService.getAnswer(question);
-    }
-}

+ 0 - 37
eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/config/TableMapPropertiesConfig.java

@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.text2sql.config;
-
-
-import jakarta.annotation.PostConstruct;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-import org.eco.vip.ai.text2sql.properties.TableMapProperties;
-import org.springframework.boot.autoconfigure.AutoConfiguration;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * @description TableMapPropertiesConfig
- *
- * @author GaoKunW
- * @date 2025/3/16 02:04
- */
-@Data
-@AutoConfiguration
-@ConfigurationProperties(prefix = "table")
-@Slf4j
-public class TableMapPropertiesConfig {
-
-    private List<TableMapProperties> mappings = Collections.emptyList();
-
-    @PostConstruct
-    public void init() {
-        log.info("\n*************表映射加载数据:{}", mappings);
-    }
-}

+ 0 - 55
eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/controller/ChatSqlController.java

@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.text2sql.controller;
-
-import cn.hutool.json.JSONArray;
-import jakarta.annotation.Resource;
-import org.eco.vip.ai.text2sql.service.IText2SqlService;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @description ChatSqlController
- *
- * @author GaoKunW
- * @date 2025/3/12 10:09
- */
-@RestController
-@RequestMapping("/ai/sql")
-public class ChatSqlController {
-
-    @Resource
-    private IText2SqlService text2SqlService;
-
-    /**
-     * @description: text2sql
-     * @param map 问题
-     * @return List<Map<String,Object>>
-     **/
-    @PostMapping("/chat")
-    public JSONArray chatSql(@RequestBody Map<String, String> map) {
-        return null;
-    }
-
-    @GetMapping("/test")
-    public List<Map<String, Object>> test() {
-        return text2SqlService.executeSql("show create table sys_dept");
-    }
-
-    @PostMapping("/getTableName")
-    public String test1(@RequestBody Map<String, String> map) {
-        String question = map.get("question");
-        return text2SqlService.tableNameByNl(question);
-    }
-
-    @PostMapping("/show/create/table")
-    public List<Map<String, Object>> test2(@RequestBody Map<String, String> map) {
-        String question = map.get("question");
-        return text2SqlService.executeSql("show create table "+question);
-    }
-}

+ 0 - 21
eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/domain/CommentVo.java

@@ -1,21 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.text2sql.domain;
-
-
-import lombok.Data;
-
-/**
- * @description CommentVo
- *
- * @author GaoKunW
- * @date 2025/3/12 16:56
- */
-@Data
-public class CommentVo {
-    String name;
-    String comment;
-}

+ 0 - 39
eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/mapper/Text2SqlMapper.java

@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.text2sql.mapper;
-
-
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
-import org.eco.vip.ai.text2sql.domain.CommentVo;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @description Text2SqlMapper
- *
- * @author GaoKunW
- * @date 2025/3/12 10:56
- */
-@Mapper
-public interface Text2SqlMapper {
-
-    List<Map<String, Object>> executeSql(@Param("sqlText") String sqlText);
-
-    @Select("show create table ${tableName} ")
-    Map<String, String> selectTableDdlByMysql(@Param("tableName") String tableName);
-
-    @Select("select convert(varchar(5000), dbms_metadata.get_ddl('TABLE','${tableName}','${schema}')) as \"create table\" from dual")
-    Map<String, String> selectTableDdlDm(@Param("schema") String schema, @Param("tableName") String tableName);
-
-    @Select("select column_name as name, column_comment as comment  from information_schema.COLUMNS where table_schema = #{schema} and table_name = #{tableName}")
-    List<CommentVo> selectCommentsByMysql(@Param("schema") String schema, @Param("tableName") String tableName);
-
-    @Select("select column_name as name, comments as \"comment\"  from USER_COL_COMMENTS where OWNER = #{schema} and TABLE_NAME = #{tableName}")
-    List<CommentVo> selectCommentsByDm(@Param("schema") String schema, @Param("tableName") String tableName);
-}

+ 0 - 28
eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/properties/TableMapProperties.java

@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.text2sql.properties;
-
-
-import lombok.Data;
-
-/**
- * @description TableMapProperties
- *
- * @author GaoKunW
- * @date 2025/3/16 01:35
- */
-@Data
-public class TableMapProperties {
-    /**
-     * 关键字
-     */
-    private String pattern;
-    /**
-     * 表名
-     */
-    private String tableName;
-
-}

+ 0 - 68
eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/service/IText2SqlService.java

@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.text2sql.service;
-
-
-import cn.hutool.json.JSONArray;
-import org.eco.vip.ai.text2sql.domain.CommentVo;
-import org.eco.vip.text2sql.domain.ContentVo;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author GaoKunW
- * @description IText2SqlService
- * @date 2025/3/12 10:29
- */
-public interface IText2SqlService {
-
-    /**
-     * @description: 直接执行sql语句
-     * @param sqlText sql
-     *
-     * @return List<Map<Object,Object>>
-     **/
-    List<Map<String, Object>> executeSql(String sqlText);
-
-    /**
-     * @description: 通过自然语言生成SQL语句
-     * @param question 问题
-     *
-     * @return List<Map<Object,Object>>
-     **/
-    String tableNameByNl(String question);
-
-    /**
-     * @description: 通过表查询字段注释
-     * @param schema schema
-     * @param tableName 表明
-     * @return List<Map<Object,Object>>
-     **/
-    List<CommentVo> commentByTableName(String schema, String tableName);
-
-    /**
-     * @description: 获取带字段注释的表数据
-     * @param mapList 数据
-     * @param tableNames 表头信息
-     * @return List<Map<Object,Object>>
-     **/
-    JSONArray getCommentData(List<Map<String, Object>> mapList, List<CommentVo> tableNames);
-
-    /**
-     * @description: 获取答案
-     * @param question 问题
-     * @return List<Map<Object,Object>>
-     **/
-    JSONArray getAnswer(ContentVo question);
-
-    /**
-     * @description: 获取答案
-     * @param question 问题
-     * @return 组装好的问题
-     **/
-    ContentVo getQuestion(String question);
-}

+ 0 - 45
eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/service/TableNameService.java

@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.text2sql.service;
-
-
-import org.eco.vip.ai.text2sql.config.TableMapPropertiesConfig;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.regex.Pattern;
-
-/**
- * @description TableNameService
- *
- * @author GaoKunW
- * @date 2025/3/16 02:07
- */
-@Service
-public class TableNameService {
-    private final LinkedHashMap<Pattern, String> patternMappings = new LinkedHashMap<>();
-
-    @Autowired
-    public TableNameService(TableMapPropertiesConfig config) {
-        config.getMappings().forEach(mapping -> {
-            Pattern pattern = Pattern.compile(mapping.getPattern());
-            patternMappings.put(pattern, mapping.getTableName());
-        });
-    }
-
-    public String extractTableName(String query) {
-        String cleaned = query.replaceAll("[^\\w\\u4e00-\\u9fff]", "");
-        for (Map.Entry<Pattern, String> entry : patternMappings.entrySet()) {
-            if (entry.getKey().matcher(cleaned).find()) {
-                return entry.getValue();
-            }
-        }
-        return null;
-    }
-
-}

+ 0 - 122
eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/service/Text2SqlService.java

@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.text2sql.service;
-
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONArray;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.eco.vip.ai.text2sql.domain.CommentVo;
-import org.eco.vip.ai.text2sql.mapper.Text2SqlMapper;
-import org.eco.vip.ai.text2sql.utils.SqlValidator;
-import org.eco.vip.orm.utils.DBaseHelper;
-import org.eco.vip.text2sql.domain.ContentVo;
-import org.springframework.stereotype.Service;
-
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author GaoKunW
- * @description Text2SqlService
- * @date 2025/3/12 10:54
- */
-@Slf4j
-@Service
-public class Text2SqlService implements IText2SqlService {
-    @Resource
-    private Text2SqlMapper text2SqlMapper;
-
-    @Resource
-    private TableNameService tableNameService;
-
-    @Override
-    public List<Map<String, Object>> executeSql(String sql) {
-        return text2SqlMapper.executeSql(sql);
-    }
-
-    @Override
-    public String tableNameByNl(String question) {
-        return tableNameService.extractTableName(question);
-    }
-
-    @Override
-    public List<CommentVo> commentByTableName(String schema, String tableName) {
-        if (DBaseHelper.isMySql()) {
-            return text2SqlMapper.selectCommentsByMysql(schema, tableName);
-        } else if (DBaseHelper.isDmSql()) {
-            return text2SqlMapper.selectCommentsByDm(schema, tableName);
-        }
-        return Collections.emptyList();
-    }
-
-    @Override
-    public JSONArray getCommentData(List<Map<String, Object>> mapList, List<CommentVo> tableNames) {
-        JSONArray jsonArray = new JSONArray();
-        Map<String, Object> commentMap = new LinkedHashMap<>();
-        for (Map<String, Object> map : mapList) {
-            for (String key : map.keySet()) {
-                if (StrUtil.contains("tenantId,delFlag,status,createBy,updateBy,createTime,updateTime", key)) {
-                    continue;
-                }
-                CommentVo commentVo = CollUtil.findOne(tableNames, tableName -> StrUtil.equals(StrUtil.toCamelCase(tableName.getName()), key));
-                if (ObjUtil.isNotEmpty(commentVo)) {
-                    commentMap.put(commentVo.getComment(), map.get(key));
-                } else {
-                    commentMap.put(key, map.get(key));
-                }
-            }
-            jsonArray.add(commentMap);
-        }
-        return jsonArray;
-    }
-
-    @Override
-    public JSONArray getAnswer(ContentVo question) {
-        log.info("\n模型返回的SQL:\n{}", question.getContent());
-        String sql = cleanRawSql(question.getContent());
-        if (!SqlValidator.isSelectQuery(sql)) {
-            return new JSONArray().put("只支持查询");
-        }
-        List<Map<String, Object>> mapList = text2SqlMapper.executeSql(sql);
-        List<CommentVo> tableNames = this.commentByTableName(DBaseHelper.getSchema(), question.getTableName());
-        return this.getCommentData(mapList, tableNames);
-    }
-
-    @Override
-    public ContentVo getQuestion(String question) {
-        String tableName = this.tableNameByNl(question);
-        Map<String, String> map = Collections.emptyMap();
-        if (DBaseHelper.isMySql()) {
-            map = text2SqlMapper.selectTableDdlByMysql(tableName);
-        } else if (DBaseHelper.isDmSql()) {
-            map = text2SqlMapper.selectTableDdlDm(DBaseHelper.getSchema(), tableName);
-        }
-        String ddl = map.get("create table");
-        return ContentVo.builder().content(ddl + "\n" + question + ",根据需求生成" + DBaseHelper.getDbType() + "的查询SQL.\n" +
-                        "1.不要需求外的条件.\n" +
-                        "2.只输出sql语句不需要任何格式样式,就是一串sql.\n" +
-                        "3.不需要带Schema:" + DBaseHelper.getSchema()).
-                tableName(tableName).build();
-
-    }
-
-    private String cleanRawSql(String rawSql) {
-        // 1. 去除代码块标记(如 ```sql)和语言标识
-        String cleaned = rawSql.replaceAll("(?i).*```sql\\s*", "")
-                .replaceAll("\\s*```.*", "")
-                .trim();
-
-        // 2. 去除末尾分号(MySQL允许不带分号执行)
-        cleaned = cleaned.replaceAll(";\\s*$", "");
-        return cleaned;
-    }
-}

+ 0 - 31
eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/utils/SqlValidator.java

@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2025 GaoKunW
- *
- */
-
-package org.eco.vip.ai.text2sql.utils;
-
-
-import lombok.extern.slf4j.Slf4j;
-import net.sf.jsqlparser.JSQLParserException;
-import net.sf.jsqlparser.parser.CCJSqlParserUtil;
-import net.sf.jsqlparser.statement.Statement;
-import net.sf.jsqlparser.statement.select.Select;
-
-/**
- * @author GaoKunW
- * @description SqlValidatorAdvanced
- * @date 2025/3/13 10:34
- */
-@Slf4j
-public class SqlValidator {
-    public static boolean isSelectQuery(String sql) {
-        try {
-            Statement statement = CCJSqlParserUtil.parse(sql);
-            return statement instanceof Select;
-        } catch (JSQLParserException e) {
-            log.error("SQL解析异常:{}", e.getMessage());
-        }
-        return false;
-    }
-}

+ 0 - 1
eco-ai/ai-text-sql-biz/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -1 +0,0 @@
-org.eco.vip.ai.text2sql.config.TableMapPropertiesConfig

+ 0 - 15
eco-ai/ai-text-sql-biz/src/main/resources/mapper/Text2SqlMapper.xml

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Copyright (c) 2025 GaoKunW
-  ~
-  -->
-
-<!DOCTYPE mapper
-        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.eco.vip.ai.text2sql.mapper.Text2SqlMapper">
-    <select id="executeSql" parameterType="String" resultType="map">
-        ${sqlText}
-    </select>
-
-</mapper>

+ 0 - 25
eco-ai/pom.xml

@@ -1,25 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.eco.vip</groupId>
-        <artifactId>eco-boot</artifactId>
-        <version>${revision}</version>
-    </parent>
-
-    <artifactId>eco-ai</artifactId>
-    <name>${project.artifactId}</name>
-    <modules>
-        <module>ai-text-sql-api</module>
-        <module>ai-text-sql-biz</module>
-        <module>ai-ollama-api</module>
-        <module>ai-ollama-biz</module>
-        <module>ai-knowledge-api</module>
-        <module>ai-knowledge-biz</module>
-    </modules>
-    <packaging>pom</packaging>
-    <description>
-        Ai 模块包含:
-        chat、text2Sql、RAG等等
-    </description>
-</project>

+ 0 - 26
eco-bom/pom.xml

@@ -67,13 +67,6 @@
                 <version>${revision}</version>
             </dependency>
 
-            <!-- com-core -->
-            <dependency>
-                <groupId>org.eco.vip</groupId>
-                <artifactId>eco-ai</artifactId>
-                <version>${revision}</version>
-            </dependency>
-
             <!-- lombok -->
             <dependency>
                 <groupId>org.projectlombok</groupId>
@@ -122,18 +115,6 @@
                 <artifactId>easy-trans-mybatis-flex-extend</artifactId>
                 <version>${easy-trans.version}</version>
             </dependency>
-            <dependency>
-                <groupId>io.github.pig-mesh.ai</groupId>
-                <artifactId>deepseek-spring-boot-starter</artifactId>
-                <version>${deepseek4j.version}</version>
-            </dependency>
-
-            <!-- https://mvnrepository.com/artifact/com.github.jsqlparser/jsqlparser -->
-            <dependency>
-                <groupId>com.github.jsqlparser</groupId>
-                <artifactId>jsqlparser</artifactId>
-                <version>${jsqlparser.version}</version>
-            </dependency>
 
             <!-- https://mvnrepository.com/artifact/com.dameng/DmJdbcDriver18 -->
             <dependency>
@@ -142,13 +123,6 @@
                 <version>${DmJdbcDriver18.version}</version>
             </dependency>
 
-            <!-- https://mvnrepository.com/artifact/io.milvus/milvus-sdk-java -->
-            <dependency>
-                <groupId>io.milvus</groupId>
-                <artifactId>milvus-sdk-java</artifactId>
-                <version>${milvus.version}</version>
-            </dependency>
-
         </dependencies>
     </dependencyManagement>
 

+ 0 - 15
eco-start/pom.xml

@@ -12,26 +12,11 @@
     <description>eco-start web 服务入口</description>
     <packaging>jar</packaging>
     <dependencies>
-        <dependency>
-            <groupId>org.eco.vip</groupId>
-            <artifactId>ai-text-sql-biz</artifactId>
-            <version>${revision}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.eco.vip</groupId>
-            <artifactId>ai-ollama-biz</artifactId>
-            <version>${revision}</version>
-        </dependency>
         <dependency>
             <groupId>org.eco.vip</groupId>
             <artifactId>auth-biz</artifactId>
             <version>${revision}</version>
         </dependency>
-        <dependency>
-            <groupId>org.eco.vip</groupId>
-            <artifactId>ai-knowledge-biz</artifactId>
-            <version>${revision}</version>
-        </dependency>
     </dependencies>
 
     <build>

+ 8 - 8
eco-start/src/main/resources/application-local.yml

@@ -13,15 +13,15 @@ mybatis-flex:
     ds1:
       type: ${spring.datasource.type}
       # MySql
-#      driver-class-name: com.mysql.cj.jdbc.Driver
-#      url: jdbc:mysql://localhost:3306/eco-boot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
-#      username: root
-#      password: root123
+      driver-class-name: com.mysql.cj.jdbc.Driver
+      url: jdbc:mysql://localhost:3306/eco-boot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
+      username: root
+      password: root123
       #DM8数据库
-      driver-class-name: dm.jdbc.driver.DmDriver
-      url: jdbc:dm://127.0.0.1:5236?schema=eco-boot&useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
-      username: SYSDBA
-      password: SYSdba123
+#      driver-class-name: dm.jdbc.driver.DmDriver
+#      url: jdbc:dm://127.0.0.1:5236?schema=eco-boot&useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
+#      username: SYSDBA
+#      password: SYSdba123
       # 最大连接池数量
       maximum-pool-size: 20
       # 最小空闲线程数量

+ 2 - 2
eco-start/src/main/resources/application.yml

@@ -67,9 +67,9 @@ mybatis-flex:
     cacheEnabled: true
   global-config:
     # 逻辑删除存在0
-    normal-value-of-logic-delete: 0
+    normal-value-of-logic-delete: '0'
     # 逻辑已删除1
-    deleted-value-of-logic-delete: 1
+    deleted-value-of-logic-delete: '1'
     # 默认的逻辑删除字段
     logic-delete-column: del_flag
     # 默认的多租户字段

+ 40 - 41
eco-start/src/main/resources/db/mysql/V1_0_0_1__sys-init-ddl.sql

@@ -1,53 +1,52 @@
 drop table if exists system_user_t;
 create table system_user_t
 (
-    id      bigint                   not null comment '用户ID'
+    user_id           varchar(20) not null comment '用户ID'
         primary key,
-    dept_id      bigint              null comment '部门ID',
-    account      varchar(30)         null comment '用户账号',
-    user_name    varchar(30)         null comment '用户姓名',
-    nick_name    varchar(30)         null comment '用户昵称',
-    user_type    varchar(10)         null comment '用户类型(sys_user系统用户)',
-    email        varchar(50)         null comment '用户邮箱',
-    phone_number varchar(11)         null comment '手机号码',
-    gender       tinyint             null comment '用户性别(0男 1女 2未知)',
-    avatar       bigint              null comment '头像地址',
-    password     varchar(100)        null comment '密码',
-    login_ip     varchar(128)        null comment '最后登陆IP',
-    login_date   datetime            null comment '最后登陆时间',
-    tenant_id    bigint              null comment '租户编号',
-    status       tinyint default 1   null comment '帐号状态(1正常 0停用)',
-    version      int                 null comment '乐观锁',
-    del_flag     tinyint             null comment '删除标志(1代表已删除 0代表存在)',
-    create_by    bigint              null comment '创建者',
-    create_time  datetime            null comment '创建时间',
-    update_by    bigint              null comment '更新者',
-    update_time  datetime            null comment '更新时间',
-    remark       varchar2(1000)      null comment '备注'
-)
-    comment '用户信息表' collate = utf8mb4_bin
+    dept_id      varchar(20) not null comment '部门ID',
+    account      varchar(50) null comment '用户账号',
+    user_name    varchar(50) null comment '用户姓名',
+    nick_name    varchar(50) null comment '用户昵称',
+    user_type    varchar(30) null comment '用户类型(sys_user系统用户)',
+    email        varchar(50) null comment '用户邮箱',
+    phone_number varchar(11) null comment '手机号码',
+    gender       varchar(20) null comment '用户性别(0男 1女 2未知)',
+    avatar       longtext null comment '头像地址',
+    password     varchar(255) null comment '密码',
+    login_ip     varchar(128) null comment '最后登陆IP',
+    login_date   datetime null comment '最后登陆时间',
+    tenant_id    varchar(20) null comment '租户编号',
+    status       varchar(20) null comment '帐号状态(1正常 0停用)',
+    version      int null comment '乐观锁',
+    del_flag     varchar(20) null comment '删除标志(1代表已删除 0代表存在)',
+    create_by    varchar(20) null comment '创建者',
+    create_time  datetime null comment '创建时间',
+    update_by    varchar(20) null comment '更新者',
+    update_time  datetime null comment '更新时间',
+    remark       varchar(1000)      null comment '备注'
+) comment '用户信息表' collate = utf8mb4_bin
                          row_format = DYNAMIC;
 
 
 drop table if exists system_dept_t;
 create table system_dept_t
 (
-    id     bigint                   not null comment '部门ID'
+    dept_id          varchar(20) not null comment '部门ID'
         primary key,
-    parent_id   bigint              null comment '父部门ID',
-    dept_name   varchar(30)         null comment '部门名称',
-    order_num   tinyint                 null comment '显示顺序',
-    leader_id   bigint              null comment '负责人',
-    phone       varchar(11)         null comment '联系电话',
-    email       varchar(50)         null comment '邮箱',
-    tenant_id   bigint              null comment '租户编号',
-    status      tinyint default 1   null comment '部门状态(1正常 0停用)',
-    version     int                 null comment '乐观锁',
-    del_flag    tinyint             null comment '删除标志(1代表已删除 0代表存在)',
-    create_by   bigint              null comment '创建者',
-    create_time datetime            null comment '创建时间',
-    update_by   bigint              null comment '更新者',
-    update_time datetime            null comment '更新时间'
-)
-    comment '部门表' collate = utf8mb4_bin
+    parent_id   varchar(20) null comment '父部门ID',
+    dept_name   varchar(100) null comment '部门名称',
+    order_num   int null comment '显示顺序',
+    leader_id   varchar(20) null comment '负责人',
+    phone       varchar(11) null comment '联系电话',
+    email       varchar(50) null comment '邮箱',
+    tenant_id   varchar(20) null comment '租户编号',
+    status      varchar(20) null comment '帐号状态(1正常 0停用)',
+    version     int null comment '乐观锁',
+    del_flag    varchar(20) null comment '删除标志(1代表已删除 0代表存在)',
+    create_by   varchar(20) null comment '创建者',
+    create_time datetime null comment '创建时间',
+    update_by   varchar(20) null comment '更新者',
+    update_time datetime null comment '更新时间',
+    remark      varchar(1000)      null comment '备注'
+) comment '部门表' collate = utf8mb4_bin
                      row_format = DYNAMIC;

+ 4 - 4
eco-start/src/main/resources/db/mysql/V1_0_0_2__sys-init-dml.sql

@@ -1,7 +1,7 @@
 insert into system_user_t (user_id, dept_id, account, user_name, nick_name, user_type, email, phone_number, gender, avatar, password, login_ip, login_date, tenant_id, status, version, del_flag, create_by, create_time, update_by, update_time, remark)
-values  (1, 1, 'superAdmin', '王大明', '超级管理员', 'sys_user', 'eco@eco.com', '15888888888', 1, null, '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0:0:0:0:0:0:0:1', '2024-07-02 18:10:18', 1, '1', 0, 0, 1, '2025-03-10 21:32:28', 1, '2025-03-10 21:32:28', '超级管理员'),
-        (2, 1, 'admin', '王小明', '管理员', 'sys_user', 'eco@eco.com', '15888888888', 1, null, '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0:0:0:0:0:0:0:1', '2024-07-02 18:10:18', 1, '1', 0, 0, 1, '2025-03-10 21:32:28', 1, '2025-03-10 21:32:28', '管理员');
+values  ('1', '1', 'superAdmin', '王大明', '超级管理员', 'sys_user', 'eco@eco.com', '15888888888', '1', null, '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0:0:0:0:0:0:0:1', '2024-07-02 18:10:18', '1', '1', 0, '0', '1', '2025-03-10 21:32:28', 1, '2025-03-10 21:32:28', '超级管理员'),
+        ('2', '1', 'admin', '王小明', '管理员', 'sys_user', 'eco@eco.com', '15888888888', '1', null, '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0:0:0:0:0:0:0:1', '2024-07-02 18:10:18', '1', '1', 0, '0', '1', '2025-03-10 21:32:28', 1, '2025-03-10 21:32:28', '管理员');
 
 insert into system_dept_t (dept_id, parent_id, dept_name, order_num, leader_id, phone, email, tenant_id, status, version, del_flag, create_by, create_time, update_by, update_time)
-values  (1, 0, '集团', 0, 1, '18888888888', 'ecoadmin@wo.cn', 1, '1', 0, 0, 1, '2025-03-10 21:32:28', 1, '2025-03-10 21:32:28'),
-        (2, 1, '研发部', 2, 1, '', null, 1, '1', 0, 0, 2, '2025-03-10 21:32:28', 2, '2025-03-10 21:32:28');
+values  ('1', '0', '集团', 0, '1', '18888888888', 'ecoadmin@wo.cn', '20', '1', 0, '0', '1', '2025-03-10 21:32:28', '1', '2025-03-10 21:32:28'),
+        ('2', '1', '研发部', 2, '2', '', null, '20', '1', 0, '0', '2', '2025-03-10 21:32:28', '2', '2025-03-10 21:32:28');

+ 0 - 1
pom.xml

@@ -16,7 +16,6 @@
         <module>eco-common</module>
         <module>eco-bom</module>
         <module>eco-nexus-core</module>
-        <module>eco-ai</module>
     </modules>
     <!-- 版本 -->
     <properties>