13 小时以前 9e2b928459ccee885104635ade2314f868d11f8f
refactor(ai): 移除多个AI相关依赖和配置

- 移除Qdrant和Redis向量存储的自动配置及相关属性
- 移除多种AI模型启动器依赖包括Anthropic、DeepSeek、Google GenAI、Ollama、Stability AI
- 移除Tika文档读取器依赖和TinyFlow工作流依赖
- 移除MCP服务端和客户端相关配置及依赖
- 从应用配置文件中移除向量存储相关配置项
- 更新菜单权限中质检功能的权限标识和排序
- 移除多数据库驱动依赖减少项目体积
已修改11个文件
227 ■■■■■ 文件已修改
sql/mysql/mes_seed_quality_init.sql 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-ai/pom.xml 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/config/AiAutoConfiguration.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-server/src/main/resources/application-dev.yaml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-server/src/main/resources/application-jhhg.yaml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-server/src/main/resources/application-local.yaml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-server/src/main/resources/application-test.yaml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-server/src/main/resources/application-thzy.yaml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-server/src/main/resources/application-yzfx.yaml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-server/src/main/resources/application.yaml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/mysql/mes_seed_quality_init.sql
@@ -14,7 +14,18 @@
WHERE NOT EXISTS (SELECT 1 FROM system_menu WHERE parent_id = 5500 AND path = 'seed-quality' AND deleted = 0);
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT '提交质检', 'mes:qc-seed-quality:submit', 3, 1, id, '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
SELECT '查询质检', 'mes:qc-seed-quality:query', 3, 1, id, '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM system_menu
WHERE parent_id = 5500 AND path = 'seed-quality' AND deleted = 0
  AND NOT EXISTS (
    SELECT 1 FROM system_menu child
    WHERE child.parent_id = system_menu.id
      AND child.permission = 'mes:qc-seed-quality:query'
      AND child.deleted = 0
  );
INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted)
SELECT '提交质检', 'mes:qc-seed-quality:submit', 3, 2, id, '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'
FROM system_menu
WHERE parent_id = 5500 AND path = 'seed-quality' AND deleted = 0
  AND NOT EXISTS (
yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml
@@ -33,41 +33,6 @@
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>
        <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc8</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.dameng</groupId>
            <artifactId>DmJdbcDriver18</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>cn.com.kingbase</groupId>
            <artifactId>kingbase8</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.opengauss</groupId>
            <artifactId>opengauss-jdbc</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.taosdata.jdbc</groupId>
            <artifactId>taos-jdbcdriver</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
yudao-module-ai/pom.xml
@@ -22,7 +22,6 @@
        <spring-ai.version>2.0.0</spring-ai.version>
        <!-- https://mvnrepository.com/artifact/com.alibaba.cloud.ai/spring-ai-alibaba -->
        <alibaba-ai.version>2.0.0-M1.1</alibaba-ai.version>
        <tinyflow.version>1.2.6</tinyflow.version>
    </properties>
    <dependencies>
@@ -91,45 +90,7 @@
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-anthropic</artifactId>
            <version>${spring-ai.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-deepseek</artifactId>
            <version>${spring-ai.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-google-genai</artifactId>
            <version>${spring-ai.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-ollama</artifactId>
            <version>${spring-ai.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-stability-ai</artifactId>
            <version>${spring-ai.version}</version>
        </dependency>
        <!-- 向量存储:https://db-engines.com/en/ranking/vector+dbms -->
        <dependency>
            <!-- Qdrant:https://qdrant.tech/ -->
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-vector-store-qdrant</artifactId>
            <version>${spring-ai.version}</version>
        </dependency>
        <dependency>
            <!-- Redis:https://redis.io/docs/latest/develop/get-started/vector-database/ -->
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-vector-store-redis</artifactId>
            <version>${spring-ai.version}</version>
        </dependency>
        <dependency>
            <groupId>cn.iocoder.boot</groupId>
            <artifactId>yudao-spring-boot-starter-redis</artifactId>
@@ -149,105 +110,18 @@
            </exclusions>
        </dependency>
        <dependency>
            <!-- Tika:负责内容的解析 -->
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-tika-document-reader</artifactId>
            <version>${spring-ai.version}</version>
            <!-- TODO 芋艿:boot 项目里,不引入 cloud 依赖!!!另外,这样也是为了解决启动报错的问题! -->
            <exclusions>
                <exclusion>
                    <artifactId>spring-cloud-function-context</artifactId>
                    <groupId>org.springframework.cloud</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>spring-cloud-function-core</artifactId>
                    <groupId>org.springframework.cloud</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- Apache POI:负责 .doc/.docx 文件内容提取,比 Tika 对中文支持更好 -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.4.0</version>
        </dependency>
        <!-- MCP 相关 -->
        <!--
            特殊说明:不能使用 spring-ai-starter-mcp-server-webflux 或 spring-ai-starter-mcp-client-webflux !!!
            原因:项目使用了 SpringMVC,而不是 WebFlux。引入上述 2 个,会导致 SSE Server 失效。
        -->
        <dependency>
            <!-- 服务端 -->
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
            <version>${spring-ai.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>io.swagger.core.v3</groupId>
                    <artifactId>swagger-annotations-jakarta</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-autoconfigure-mcp-server-common</artifactId>
            <version>${spring-ai.version}</version>
        </dependency>
        <dependency>
            <!-- 客户端 -->
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-mcp-client</artifactId>
            <version>${spring-ai.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-autoconfigure-mcp-client-common</artifactId>
            <version>${spring-ai.version}</version>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-scratchpad</artifactId>
            <version>5.4.0</version>
        </dependency>
        <!-- TinyFlow:AI 工作流 -->
        <dependency>
            <groupId>dev.tinyflow</groupId>
            <artifactId>tinyflow-java-core</artifactId>
            <version>${tinyflow.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>com.jfinal</groupId>
                    <artifactId>enjoy</artifactId>
                </exclusion>
                <exclusion>
                    <!-- 解决 https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/1318/ 问题 -->
                    <groupId>com.agentsflex</groupId>
                    <artifactId>agents-flex-store-elasticsearch</artifactId>
                </exclusion>
                <exclusion>
                    <!-- 解决 https://t.zsxq.com/pCBZC 问题 -->
                    <groupId>com.agentsflex</groupId>
                    <artifactId>agents-flex-search-engine-es</artifactId>
                </exclusion>
                <exclusion>
                    <!-- TODO @芋艿:暂时移除 groovy,和 iot 冲突 -->
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-all</artifactId>
                </exclusion>
                <!-- 解决和 logback 的日志冲突 -->
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-simple</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-slf4j-impl</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-reload4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</project>
yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/config/AiAutoConfiguration.java
@@ -13,11 +13,8 @@
import org.springframework.ai.openai.OpenAiChatOptions;
import org.springframework.ai.openai.OpenAiEmbeddingModel;
import org.springframework.ai.openai.OpenAiEmbeddingOptions;
import org.springframework.ai.retry.RetryUtils;
import org.springframework.ai.tokenizer.JTokkitTokenCountEstimator;
import org.springframework.ai.tokenizer.TokenCountEstimator;
import org.springframework.ai.vectorstore.qdrant.autoconfigure.QdrantVectorStoreProperties;
import org.springframework.ai.vectorstore.redis.autoconfigure.RedisVectorStoreProperties;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -31,9 +28,7 @@
 */
@Configuration
@EnableConfigurationProperties({
        YudaoAiProperties.class,
        QdrantVectorStoreProperties.class,
        RedisVectorStoreProperties.class
        YudaoAiProperties.class
})
@Slf4j
public class AiAutoConfiguration {
yudao-server/src/main/resources/application-dev.yaml
@@ -7,12 +7,9 @@
  autoconfigure:
    # noinspection SpringBootApplicationYaml
    exclude:
      - org.springframework.ai.vectorstore.qdrant.autoconfigure.QdrantVectorStoreAutoConfiguration # 禁用 AI 模块的 Qdrant,手动创建
      - org.springframework.ai.vectorstore.redis.autoconfigure.RedisVectorStoreAutoConfiguration # 禁用 AI 模块的 Redis,手动创建
      - org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreAutoConfiguration # 禁用 AI 模块的 Milvus,手动创建
      - org.dromara.trans.config.TransServiceConfig # TODO 芋艿:easy-trans 兼容 Spring Boot 4 后移除(TransServiceConfig 引用了已移除的 RestTemplateBuilder)
      # 禁用未配置 API Key 的模型自动配置
      - org.springframework.ai.model.deepseek.autoconfigure.DeepSeekChatAutoConfiguration
  # 数据源配置项
  datasource:
    druid: # Druid 【监控】相关的全局配置
yudao-server/src/main/resources/application-jhhg.yaml
@@ -7,8 +7,6 @@
    # noinspection SpringBootApplicationYaml
    exclude:
      - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置
      - org.springframework.ai.vectorstore.qdrant.autoconfigure.QdrantVectorStoreAutoConfiguration # 禁用 AI 模块的 Qdrant,手动创建
      - org.springframework.ai.vectorstore.redis.autoconfigure.RedisVectorStoreAutoConfiguration # 禁用 AI 模块的 Redis,手动创建
      - org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreAutoConfiguration # 禁用 AI 模块的 Milvus,手动创建
      - org.dromara.trans.config.TransServiceConfig # TODO 芋艿:easy-trans 兼容 Spring Boot 4 后移除(TransServiceConfig 引用了已移除的 RestTemplateBuilder)
      # 禁用未配置 API Key 的模型自动配置(只保留通义千问 Embedding 的手动配置)
yudao-server/src/main/resources/application-local.yaml
@@ -7,8 +7,6 @@
    # noinspection SpringBootApplicationYaml
    exclude:
      - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置
      - org.springframework.ai.vectorstore.qdrant.autoconfigure.QdrantVectorStoreAutoConfiguration # 禁用 AI 模块的 Qdrant,手动创建
      - org.springframework.ai.vectorstore.redis.autoconfigure.RedisVectorStoreAutoConfiguration # 禁用 AI 模块的 Redis,手动创建
      - org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreAutoConfiguration # 禁用 AI 模块的 Milvus,手动创建
      - org.dromara.trans.config.TransServiceConfig # TODO 芋艿:easy-trans 兼容 Spring Boot 4 后移除(TransServiceConfig 引用了已移除的 RestTemplateBuilder)
      # 禁用未配置 API Key 的模型自动配置(只保留通义千问 Embedding 的手动配置)
yudao-server/src/main/resources/application-test.yaml
@@ -7,8 +7,6 @@
    # noinspection SpringBootApplicationYaml
    exclude:
      - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置
      - org.springframework.ai.vectorstore.qdrant.autoconfigure.QdrantVectorStoreAutoConfiguration # 禁用 AI 模块的 Qdrant,手动创建
      - org.springframework.ai.vectorstore.redis.autoconfigure.RedisVectorStoreAutoConfiguration # 禁用 AI 模块的 Redis,手动创建
      - org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreAutoConfiguration # 禁用 AI 模块的 Milvus,手动创建
      - org.dromara.trans.config.TransServiceConfig # TODO 芋艿:easy-trans 兼容 Spring Boot 4 后移除(TransServiceConfig 引用了已移除的 RestTemplateBuilder)
      # 禁用未配置 API Key 的模型自动配置(只保留通义千问 Embedding 的手动配置)
yudao-server/src/main/resources/application-thzy.yaml
@@ -7,8 +7,6 @@
    # noinspection SpringBootApplicationYaml
    exclude:
      - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置
      - org.springframework.ai.vectorstore.qdrant.autoconfigure.QdrantVectorStoreAutoConfiguration # 禁用 AI 模块的 Qdrant,手动创建
      - org.springframework.ai.vectorstore.redis.autoconfigure.RedisVectorStoreAutoConfiguration # 禁用 AI 模块的 Redis,手动创建
      - org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreAutoConfiguration # 禁用 AI 模块的 Milvus,手动创建
      - org.dromara.trans.config.TransServiceConfig # TODO 芋艿:easy-trans 兼容 Spring Boot 4 后移除(TransServiceConfig 引用了已移除的 RestTemplateBuilder)
      # 禁用未配置 API Key 的模型自动配置(只保留通义千问 Embedding 的手动配置)
yudao-server/src/main/resources/application-yzfx.yaml
@@ -7,8 +7,6 @@
    # noinspection SpringBootApplicationYaml
    exclude:
      - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置
      - org.springframework.ai.vectorstore.qdrant.autoconfigure.QdrantVectorStoreAutoConfiguration # 禁用 AI 模块的 Qdrant,手动创建
      - org.springframework.ai.vectorstore.redis.autoconfigure.RedisVectorStoreAutoConfiguration # 禁用 AI 模块的 Redis,手动创建
      - org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreAutoConfiguration # 禁用 AI 模块的 Milvus,手动创建
      - org.dromara.trans.config.TransServiceConfig # TODO 芋艿:easy-trans 兼容 Spring Boot 4 后移除(TransServiceConfig 引用了已移除的 RestTemplateBuilder)
      # 禁用未配置 API Key 的模型自动配置(只保留通义千问 Embedding 的手动配置)
yudao-server/src/main/resources/application.yaml
@@ -137,15 +137,6 @@
spring:
  ai:
    vectorstore: # 向量存储
      redis:
        initialize-schema: true
        index-name: knowledge_index # Redis 中向量索引的名称:用于存储和检索向量数据的索引标识符,所有相关的向量搜索操作都会基于这个索引进行
        prefix: "knowledge_segment:" # Redis 中存储向量数据的键名前缀:这个前缀会添加到每个存储在 Redis 中的向量数据键名前,每个 document 都是一个 hash 结构
      qdrant:
        initialize-schema: true
        collection-name: knowledge_segment # Qdrant 中向量集合的名称:用于存储向量数据的集合标识符,所有相关的向量操作都会在这个集合中进行
        host: 127.0.0.1
        port: 6334
      milvus:
        initialize-schema: true
        database-name: default # Milvus 中数据库的名称
@@ -155,24 +146,6 @@
          port: 19530
    model:
      rerank: false # 是否开启 Rerank 模型
    mcp:
      server:
        enabled: false
        name: yudao-mcp-server
        version: 1.0.0
        instructions: 一个 MCP 示例服务
        sse-endpoint: /sse
      client:
        enabled: false
        name: mcp
        sse:
          connections:
            filesystem:
              url: http://127.0.0.1:8089
              sse-endpoint: /sse
        annotation-scanner:
          enabled: false # TODO @芋艿:有 bug https://github.com/spring-projects/spring-ai/issues/4917 需要官方修复
yudao:
  ai:
    web-search: