From dcacd8753f8b78fad1a22fe2a8882ef71d829ff1 Mon Sep 17 00:00:00 2001 From: Administrator <1037463791@qq.com> Date: Fri, 7 Nov 2025 16:15:35 +0800 Subject: [PATCH] =?UTF-8?q?fix(billing):=20=E5=BD=93=20knowledge.graph.ena?= =?UTF-8?q?bled=3Dfalse=20=E6=97=B6=EF=BC=9A=E6=89=80=E6=9C=89=E7=9F=A5?= =?UTF-8?q?=E8=AF=86=E5=9B=BE=E8=B0=B1=E7=9B=B8=E5=85=B3=E7=9A=84=20Bean?= =?UTF-8?q?=20=E9=83=BD=E4=B8=8D=E4=BC=9A=E8=A2=AB=E5=88=9B=E5=BB=BANeo4j?= =?UTF-8?q?=20=E9=85=8D=E7=BD=AE=E4=B8=8D=E4=BC=9A=E8=A2=AB=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E5=8D=B3=E4=BD=BF=E6=B2=A1=E6=9C=89=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=20Neo4j=20=E8=BF=9E=E6=8E=A5=E4=BF=A1=E6=81=AF=EF=BC=8C?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E7=A6=81=E7=94=A8=E4=BA=86=E7=9F=A5=E8=AF=86?= =?UTF-8?q?=E5=9B=BE=E8=B0=B1=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-dev.yml | 56 ++----------------- .../src/main/resources/application.yml | 56 +++++++++++++++++++ .../ruoyi/graph/config/GraphAsyncConfig.java | 2 + .../org/ruoyi/graph/config/Neo4jConfig.java | 2 + .../controller/GraphInstanceController.java | 2 + .../controller/GraphQueryController.java | 2 + .../impl/GraphBuildTaskServiceImpl.java | 2 + .../impl/GraphExtractionServiceImpl.java | 2 + .../impl/GraphInstanceServiceImpl.java | 2 + .../service/impl/GraphRAGServiceImpl.java | 2 + .../service/impl/GraphStoreServiceImpl.java | 2 + .../org/ruoyi/graph/util/Neo4jTestUtil.java | 2 + 12 files changed, 80 insertions(+), 52 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index cb082f50..9511aa60 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -16,7 +16,7 @@ spring: master: type: ${spring.datasource.type} driverClassName: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/ruoyi-ai?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true + url: jdbc:mysql://117.72.192.162:2369/ruoyi-ai2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true username: root password: root @@ -44,12 +44,13 @@ spring: spring.data: redis: # 地址 - host: 127.0.0.1 + host: 117.72.192.162 # 端口,默认为6379 - port: 6379 + port: 6380 # 数据库索引 database: 2 # 密码(如没有密码请注释掉) + password: wt123 # password: 123456 # 连接超时时间 timeout: 10S @@ -114,54 +115,5 @@ local: ---- # Neo4j 知识图谱配置 -neo4j: - uri: bolt://127.0.0.1:7687 - username: neo4j - password: MySecurePass123! - database: neo4j - max-connection-pool-size: 50 - connection-timeout-seconds: 30 -# 知识图谱配置 -knowledge: - graph: - # 是否启用知识图谱功能 - enabled: true - # 图数据库类型: neo4j 或 apache-age - database-type: neo4j - # 是否自动创建索引 - auto-create-index: true - # 批量处理大小 - batch-size: 1000 - # 最大重试次数 - max-retry-count: 3 - - # 实体抽取配置 - extraction: - # 置信度阈值(低于此值的实体将被过滤) - confidence-threshold: 0.7 - # 最大实体数量(每个文档) - max-entities-per-doc: 100 - # 最大关系数量(每个文档) - max-relations-per-doc: 200 - # 文本分片大小(用于长文档) - chunk-size: 2000 - # 分片重叠大小 - chunk-overlap: 200 - - # 查询配置 - query: - # 默认查询限制数量 - default-limit: 100 - # 最大查询限制数量 - max-limit: 1000 - # 路径查询最大深度 - max-path-depth: 5 - # 查询超时时间(秒) - timeout-seconds: 30 - # 是否启用查询缓存 - cache-enabled: true - # 缓存过期时间(分钟) - cache-expire-minutes: 60 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 4c6d38a0..2db05f71 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -303,6 +303,10 @@ management: show-details: ALWAYS logfile: external-file: ./logs/sys-console.log + health: + # 禁用 Neo4j 健康检查(当知识图谱功能未启用时) + neo4j: + enabled: false # websocket # websocket @@ -346,3 +350,55 @@ vector-store: url: http://localhost:19530 collectionname: LocalKnowledge + +--- # Neo4j 知识图谱配置 +#neo4j: +# uri: bolt://117.72.192.162:7687 +# username: neo4j +# password: MySecurePass123! +# database: neo4j +# max-connection-pool-size: 50 +# connection-timeout-seconds: 30 + +# 知识图谱配置 +knowledge: + graph: + # 是否启用知识图谱功能 + enabled: false + # 图数据库类型: neo4j 或 apache-age + database-type: neo4j + # 是否自动创建索引 + auto-create-index: true + # 批量处理大小 + batch-size: 1000 + # 最大重试次数 + max-retry-count: 3 + + # 实体抽取配置 + extraction: + # 置信度阈值(低于此值的实体将被过滤) + confidence-threshold: 0.7 + # 最大实体数量(每个文档) + max-entities-per-doc: 100 + # 最大关系数量(每个文档) + max-relations-per-doc: 200 + # 文本分片大小(用于长文档) + chunk-size: 2000 + # 分片重叠大小 + chunk-overlap: 200 + + # 查询配置 + query: + # 默认查询限制数量 + default-limit: 100 + # 最大查询限制数量 + max-limit: 1000 + # 路径查询最大深度 + max-path-depth: 5 + # 查询超时时间(秒) + timeout-seconds: 30 + # 是否启用查询缓存 + cache-enabled: true + # 缓存过期时间(分钟) + cache-expire-minutes: 60 + diff --git a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/config/GraphAsyncConfig.java b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/config/GraphAsyncConfig.java index 894600c3..6c8976fc 100644 --- a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/config/GraphAsyncConfig.java +++ b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/config/GraphAsyncConfig.java @@ -1,6 +1,7 @@ package org.ruoyi.graph.config; import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; @@ -18,6 +19,7 @@ import java.util.concurrent.ThreadPoolExecutor; @Slf4j @EnableAsync @Configuration +@ConditionalOnProperty(prefix = "knowledge.graph", name = "enabled", havingValue = "true") public class GraphAsyncConfig { /** diff --git a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/config/Neo4jConfig.java b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/config/Neo4jConfig.java index 626021b5..e9e28253 100644 --- a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/config/Neo4jConfig.java +++ b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/config/Neo4jConfig.java @@ -4,6 +4,7 @@ import lombok.Data; import org.neo4j.driver.AuthTokens; import org.neo4j.driver.Driver; import org.neo4j.driver.GraphDatabase; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -16,6 +17,7 @@ import org.springframework.context.annotation.Configuration; */ @Data @Configuration +@ConditionalOnProperty(prefix = "knowledge.graph", name = "enabled", havingValue = "true") @ConfigurationProperties(prefix = "neo4j") public class Neo4jConfig { diff --git a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/controller/GraphInstanceController.java b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/controller/GraphInstanceController.java index 871eb2fe..788422fa 100644 --- a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/controller/GraphInstanceController.java +++ b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/controller/GraphInstanceController.java @@ -11,6 +11,7 @@ import org.ruoyi.graph.domain.GraphInstance; import org.ruoyi.graph.enums.GraphStatusEnum; import org.ruoyi.graph.service.IGraphBuildTaskService; import org.ruoyi.graph.service.IGraphInstanceService; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -29,6 +30,7 @@ import java.util.Map; @RestController @RequestMapping("/graph/instance") @Tag(name = "图谱实例管理", description = "知识图谱实例的创建、查询、更新、删除") +@ConditionalOnProperty(prefix = "knowledge.graph", name = "enabled", havingValue = "true") public class GraphInstanceController extends BaseController { private final IGraphInstanceService graphInstanceService; diff --git a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/controller/GraphQueryController.java b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/controller/GraphQueryController.java index 86796f47..7a1c0429 100644 --- a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/controller/GraphQueryController.java +++ b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/controller/GraphQueryController.java @@ -11,6 +11,7 @@ import org.ruoyi.graph.dto.GraphExtractionResult; import org.ruoyi.graph.service.IGraphExtractionService; import org.ruoyi.graph.service.IGraphRAGService; import org.ruoyi.graph.service.IGraphStoreService; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -29,6 +30,7 @@ import java.util.Map; @RestController @RequestMapping("/graph/query") @Tag(name = "图谱查询", description = "知识图谱查询相关接口") +@ConditionalOnProperty(prefix = "knowledge.graph", name = "enabled", havingValue = "true") public class GraphQueryController extends BaseController { private final IGraphStoreService graphStoreService; diff --git a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphBuildTaskServiceImpl.java b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphBuildTaskServiceImpl.java index 7dfcff09..147a9f8e 100644 --- a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphBuildTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphBuildTaskServiceImpl.java @@ -17,6 +17,7 @@ import org.ruoyi.graph.service.IGraphBuildTaskService; import org.ruoyi.graph.service.IGraphInstanceService; import org.ruoyi.graph.service.IGraphRAGService; import org.ruoyi.service.IKnowledgeAttachService; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -36,6 +37,7 @@ import java.util.concurrent.CompletableFuture; @Slf4j @Service @RequiredArgsConstructor +@ConditionalOnProperty(prefix = "knowledge.graph", name = "enabled", havingValue = "true") public class GraphBuildTaskServiceImpl implements IGraphBuildTaskService { private final GraphBuildTaskMapper taskMapper; diff --git a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphExtractionServiceImpl.java b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphExtractionServiceImpl.java index 3ef53ba1..09b34fb2 100644 --- a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphExtractionServiceImpl.java +++ b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphExtractionServiceImpl.java @@ -13,6 +13,7 @@ import org.ruoyi.graph.prompt.GraphExtractPrompt; import org.ruoyi.graph.service.IGraphExtractionService; import org.ruoyi.graph.service.llm.IGraphLLMService; import org.ruoyi.service.IChatModelService; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -31,6 +32,7 @@ import java.util.regex.Pattern; @Slf4j @Service @RequiredArgsConstructor +@ConditionalOnProperty(prefix = "knowledge.graph", name = "enabled", havingValue = "true") public class GraphExtractionServiceImpl implements IGraphExtractionService { private final IChatModelService chatModelService; diff --git a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphInstanceServiceImpl.java b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphInstanceServiceImpl.java index 71101b10..e544d2e7 100644 --- a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphInstanceServiceImpl.java @@ -14,6 +14,7 @@ import org.ruoyi.graph.domain.GraphInstance; import org.ruoyi.graph.mapper.GraphInstanceMapper; import org.ruoyi.graph.service.IGraphInstanceService; import org.ruoyi.graph.service.IGraphStoreService; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +31,7 @@ import java.util.Map; @Slf4j @Service @RequiredArgsConstructor +@ConditionalOnProperty(prefix = "knowledge.graph", name = "enabled", havingValue = "true") public class GraphInstanceServiceImpl implements IGraphInstanceService { private final GraphInstanceMapper graphInstanceMapper; diff --git a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphRAGServiceImpl.java b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphRAGServiceImpl.java index 7423499f..eb246616 100644 --- a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphRAGServiceImpl.java +++ b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphRAGServiceImpl.java @@ -13,6 +13,7 @@ import org.ruoyi.graph.dto.GraphExtractionResult; import org.ruoyi.graph.service.IGraphExtractionService; import org.ruoyi.graph.service.IGraphRAGService; import org.ruoyi.graph.service.IGraphStoreService; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; import java.util.*; @@ -26,6 +27,7 @@ import java.util.*; @Slf4j @Service @RequiredArgsConstructor +@ConditionalOnProperty(prefix = "knowledge.graph", name = "enabled", havingValue = "true") public class GraphRAGServiceImpl implements IGraphRAGService { private final IGraphExtractionService graphExtractionService; diff --git a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphStoreServiceImpl.java b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphStoreServiceImpl.java index bff03c07..59c98c0b 100644 --- a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphStoreServiceImpl.java +++ b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/service/impl/GraphStoreServiceImpl.java @@ -13,6 +13,7 @@ import org.ruoyi.graph.config.GraphProperties; import org.ruoyi.graph.domain.GraphEdge; import org.ruoyi.graph.domain.GraphVertex; import org.ruoyi.graph.service.IGraphStoreService; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; import java.util.*; @@ -30,6 +31,7 @@ import static org.neo4j.driver.Values.parameters; @Slf4j @Service @RequiredArgsConstructor +@ConditionalOnProperty(prefix = "knowledge.graph", name = "enabled", havingValue = "true") public class GraphStoreServiceImpl implements IGraphStoreService { private final Driver neo4jDriver; diff --git a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/util/Neo4jTestUtil.java b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/util/Neo4jTestUtil.java index 23b0fee8..3d355370 100644 --- a/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/util/Neo4jTestUtil.java +++ b/ruoyi-modules/ruoyi-graph/src/main/java/org/ruoyi/graph/util/Neo4jTestUtil.java @@ -6,6 +6,7 @@ import org.neo4j.driver.Record; import org.neo4j.driver.Result; import org.neo4j.driver.Session; import org.neo4j.driver.types.Node; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Component; import java.util.HashMap; @@ -21,6 +22,7 @@ import static org.neo4j.driver.Values.parameters; */ @Slf4j @Component +@ConditionalOnProperty(prefix = "knowledge.graph", name = "enabled", havingValue = "true") public class Neo4jTestUtil { private final Driver driver;