refactor: 将 services 和 adapters 移动到 graphs 目录
- 将 src/knowledge/services/upload_graph_service.py 移动到 src/knowledge/graphs/ - 将 src/knowledge/adapters/ 整个目录移动到 src/knowledge/graphs/adapters/ - 更新所有导入路径:src.knowledge.adapters → src.knowledge.graphs.adapters - 保持原有的延迟导入设计以解决循环依赖问题 - 保持向后兼容性:src.knowledge.__init__ 仍然导出 UploadGraphService 和 GraphDatabase 影响范围: - server/routers/graph_router.py - src/knowledge/__init__.py
This commit is contained in:
parent
a963241088
commit
b19fdcb9f5
@ -4,8 +4,8 @@ from fastapi import APIRouter, Body, Depends, HTTPException, Query
|
|||||||
|
|
||||||
from server.utils.auth_middleware import get_admin_user
|
from server.utils.auth_middleware import get_admin_user
|
||||||
from src import graph_base, knowledge_base
|
from src import graph_base, knowledge_base
|
||||||
from src.knowledge.adapters.base import GraphAdapter
|
from src.knowledge.graphs.adapters.base import GraphAdapter
|
||||||
from src.knowledge.adapters.factory import GraphAdapterFactory
|
from src.knowledge.graphs.adapters.factory import GraphAdapterFactory
|
||||||
from src.storage.postgres.models_business import User
|
from src.storage.postgres.models_business import User
|
||||||
from src.storage.minio.client import StorageError
|
from src.storage.minio.client import StorageError
|
||||||
from src.utils.logging_config import logger
|
from src.utils.logging_config import logger
|
||||||
@ -64,7 +64,7 @@ async def get_graphs(current_user: User = Depends(get_admin_user)):
|
|||||||
neo4j_info = graph_base.get_graph_info()
|
neo4j_info = graph_base.get_graph_info()
|
||||||
if neo4j_info:
|
if neo4j_info:
|
||||||
# 直接使用 Upload 适配器的默认 metadata
|
# 直接使用 Upload 适配器的默认 metadata
|
||||||
from src.knowledge.adapters.upload import UploadGraphAdapter
|
from src.knowledge.graphs.adapters.upload import UploadGraphAdapter
|
||||||
|
|
||||||
capabilities = _get_capabilities_from_metadata(UploadGraphAdapter._get_metadata(None))
|
capabilities = _get_capabilities_from_metadata(UploadGraphAdapter._get_metadata(None))
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ async def get_graphs(current_user: User = Depends(get_admin_user)):
|
|||||||
# 2. 获取 LightRAG 数据库信息
|
# 2. 获取 LightRAG 数据库信息
|
||||||
lightrag_dbs = await knowledge_base.get_lightrag_databases()
|
lightrag_dbs = await knowledge_base.get_lightrag_databases()
|
||||||
# 直接使用 LightRAG 适配器的默认 metadata
|
# 直接使用 LightRAG 适配器的默认 metadata
|
||||||
from src.knowledge.adapters.lightrag import LightRAGGraphAdapter
|
from src.knowledge.graphs.adapters.lightrag import LightRAGGraphAdapter
|
||||||
|
|
||||||
capabilities = _get_capabilities_from_metadata(LightRAGGraphAdapter._get_metadata(None))
|
capabilities = _get_capabilities_from_metadata(LightRAGGraphAdapter._get_metadata(None))
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ from .implementations.dify import DifyKB
|
|||||||
from .implementations.lightrag import LightRagKB
|
from .implementations.lightrag import LightRagKB
|
||||||
from .implementations.milvus import MilvusKB
|
from .implementations.milvus import MilvusKB
|
||||||
from .manager import KnowledgeBaseManager
|
from .manager import KnowledgeBaseManager
|
||||||
from .services.upload_graph_service import UploadGraphService
|
from .graphs.upload_graph_service import UploadGraphService
|
||||||
|
|
||||||
# 注册知识库类型
|
# 注册知识库类型
|
||||||
KnowledgeBaseFactory.register("milvus", MilvusKB, {"description": "基于 Milvus 的生产级向量知识库,适合高性能部署"})
|
KnowledgeBaseFactory.register("milvus", MilvusKB, {"description": "基于 Milvus 的生产级向量知识库,适合高性能部署"})
|
||||||
|
|||||||
4
src/knowledge/graphs/__init__.py
Normal file
4
src/knowledge/graphs/__init__.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# graphs 目录的包初始化文件
|
||||||
|
from .adapters import GraphAdapter, UploadGraphAdapter, LightRAGGraphAdapter, GraphAdapterFactory
|
||||||
|
|
||||||
|
__all__ = ["GraphAdapter", "UploadGraphAdapter", "LightRAGGraphAdapter", "GraphAdapterFactory"]
|
||||||
@ -1,6 +1,6 @@
|
|||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
from src.knowledge.adapters.base import BaseNeo4jAdapter
|
from src.knowledge.graphs.adapters.base import BaseNeo4jAdapter
|
||||||
|
|
||||||
from .base import GraphAdapter, GraphMetadata
|
from .base import GraphAdapter, GraphMetadata
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ class UploadGraphAdapter(GraphAdapter):
|
|||||||
super().__init__(config)
|
super().__init__(config)
|
||||||
|
|
||||||
# 延迟导入以避免循环导入
|
# 延迟导入以避免循环导入
|
||||||
from src.knowledge.services.upload_graph_service import UploadGraphService
|
from src.knowledge.graphs.upload_graph_service import UploadGraphService
|
||||||
|
|
||||||
# 初始化业务逻辑服务
|
# 初始化业务逻辑服务
|
||||||
if graph_db_instance and hasattr(graph_db_instance, "_service"):
|
if graph_db_instance and hasattr(graph_db_instance, "_service"):
|
||||||
@ -6,7 +6,7 @@ import warnings
|
|||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
from src import config
|
from src import config
|
||||||
from src.knowledge.adapters.base import Neo4jConnectionManager
|
from src.knowledge.graphs.adapters.base import Neo4jConnectionManager
|
||||||
from src.models import select_embedding_model
|
from src.models import select_embedding_model
|
||||||
from src.storage.minio.client import get_minio_client
|
from src.storage.minio.client import get_minio_client
|
||||||
from src.utils import logger
|
from src.utils import logger
|
||||||
@ -95,10 +95,14 @@
|
|||||||
<a-tabs v-model:activeKey="detailTab" class="detail-tabs">
|
<a-tabs v-model:activeKey="detailTab" class="detail-tabs">
|
||||||
<a-tab-pane key="general">
|
<a-tab-pane key="general">
|
||||||
<template #tab>
|
<template #tab>
|
||||||
<span class="tab-title"><Settings2 :size="14" />通用</span>
|
<span class="tab-title"><Settings2 :size="14" />信息</span>
|
||||||
</template>
|
</template>
|
||||||
<div class="tab-content">
|
<div class="tab-content">
|
||||||
<div class="info-grid">
|
<div class="info-grid">
|
||||||
|
<div class="info-item" v-if="currentServer.description">
|
||||||
|
<label>描述</label>
|
||||||
|
<span>{{ currentServer.description }}</span>
|
||||||
|
</div>
|
||||||
<div class="info-item">
|
<div class="info-item">
|
||||||
<label>传输类型</label>
|
<label>传输类型</label>
|
||||||
<span>
|
<span>
|
||||||
@ -107,6 +111,12 @@
|
|||||||
</a-tag>
|
</a-tag>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="info-item" v-if="Array.isArray(currentServer.tags) && currentServer.tags.length > 0">
|
||||||
|
<label>标签</label>
|
||||||
|
<span>
|
||||||
|
<a-tag v-for="tag in currentServer.tags" :key="tag">{{ tag }}</a-tag>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- HTTP 类型显示 URL -->
|
<!-- HTTP 类型显示 URL -->
|
||||||
<template v-if="currentServer.transport === 'streamable_http' || currentServer.transport === 'sse'">
|
<template v-if="currentServer.transport === 'streamable_http' || currentServer.transport === 'sse'">
|
||||||
@ -148,16 +158,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<div class="info-item" v-if="currentServer.description">
|
|
||||||
<label>描述</label>
|
|
||||||
<span>{{ currentServer.description }}</span>
|
|
||||||
</div>
|
|
||||||
<div class="info-item" v-if="Array.isArray(currentServer.tags) && currentServer.tags.length > 0">
|
|
||||||
<label>标签</label>
|
|
||||||
<span>
|
|
||||||
<a-tag v-for="tag in currentServer.tags" :key="tag">{{ tag }}</a-tag>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="info-item">
|
<div class="info-item">
|
||||||
<label>创建时间</label>
|
<label>创建时间</label>
|
||||||
<span>{{ formatTime(currentServer.created_at) }}</span>
|
<span>{{ formatTime(currentServer.created_at) }}</span>
|
||||||
|
|||||||
@ -607,7 +607,7 @@ defineExpose({
|
|||||||
|
|
||||||
/* 依赖配置 */
|
/* 依赖配置 */
|
||||||
.config-view {
|
.config-view {
|
||||||
padding: 32px; flex: 1; overflow-y: auto;
|
padding: 16px; flex: 1; overflow-y: auto;
|
||||||
.config-header {
|
.config-header {
|
||||||
display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 32px;
|
display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 32px;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user