Bläddra i källkod

知识库管理和知识片段管理整合新代码

linyang 1 månad sedan
förälder
incheckning
332f6c2278

+ 3 - 2
src/app/config/config.ini

@@ -16,13 +16,14 @@ RELOAD=True
 # 注意:如果密码包含特殊字符(如@),需要进行URL编码
 # @ 编码为 %40
 # 例如:密码 lq@123 应该写成 lq%40123
-DATABASE_URL=mysql+aiomysql://root:admin@localhost:3306/lq_db
-#DATABASE_URL=mysql+aiomysql://root:lq%40123@192.168.92.61:13306/lq_oauth_db
+#DATABASE_URL=mysql+aiomysql://root:admin@localhost:3306/lq_db
+DATABASE_URL=mysql+aiomysql://root:lq123@192.168.92.61:13306/lq_oauth_db
 DATABASE_ECHO=False
 
 # Milvus向量数据库配置信息
 MILVUS_HOST=192.168.92.61
 MILVUS_PORT=19530
+MILVUS_DB=lq_db
 MILVUS_USER=
 MILVUS_PASSWORD=
 

+ 5 - 11
src/app/sample/models/__init__.py

@@ -1,18 +1,12 @@
 """
 样本中心模块 - 数据模型
 """
-from app.models.knowledge_base import (
-    KnowledgeBase,
-    Document,
-    DocumentChunk,
-    Tag,
-    DocumentTag,
-)
+from app.sample.models.knowledge_base import KnowledgeBase
+
+# Document, DocumentChunk, Tag, DocumentTag 暂时未迁移或不存在
+# from app.sample.models.document import Document
+# ...
 
 __all__ = [
     "KnowledgeBase",
-    "Document",
-    "DocumentChunk",
-    "Tag",
-    "DocumentTag",
 ]

+ 24 - 2
src/app/sample/schemas/__init__.py

@@ -1,6 +1,28 @@
 """
 样本中心模块 - 数据结构
 """
-# 这里将来添加样本中心相关的schema定义
+from app.sample.schemas.knowledge_base import (
+    KnowledgeBaseBase,
+    KnowledgeBaseCreate,
+    KnowledgeBaseUpdate,
+    KnowledgeBaseResponse,
+    DescriptionUpdate
+)
+from app.sample.schemas.sample_schemas import (
+    BatchEnterRequest,
+    BatchDeleteRequest,
+    ConvertRequest,
+    DocumentAdd
+)
 
-__all__ = []
+__all__ = [
+    "KnowledgeBaseBase",
+    "KnowledgeBaseCreate",
+    "KnowledgeBaseUpdate",
+    "KnowledgeBaseResponse",
+    "DescriptionUpdate",
+    "BatchEnterRequest",
+    "BatchDeleteRequest",
+    "ConvertRequest",
+    "DocumentAdd"
+]

+ 20 - 1
src/app/server/app.py

@@ -46,6 +46,8 @@ from views.system_view import router as system_router
 from views.oauth_view import router as oauth_router
 from views.sample_view import router as sample_router
 from views.auth_view import router as auth_router
+from views.knowledge_base_view import router as knowledge_base_router
+from views.snippet_view import router as snippet_router
 
 # 导入现有API路由
 from app.api.v1.api_router import api_router
@@ -125,13 +127,28 @@ app.add_middleware(
         "http://127.0.0.1:3000",
         "http://127.0.0.1:3001",
         "http://127.0.0.1:5173",
-        "http://127.0.0.1:8080"
+        "http://127.0.0.1:8080",
+        "*" # 临时允许所有,方便调试
     ],
     allow_credentials=True,
     allow_methods=["GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH"],
     allow_headers=["*"],
 )
 
+# --- 调试中间件 ---
+@app.middleware("http")
+async def log_requests(request: Request, call_next):
+    # logger.info(f"收到请求: {request.method} {request.url}")
+    try:
+        response = await call_next(request)
+        # logger.info(f"请求响应: {response.status_code}")
+        return response
+    except Exception as e:
+        logger.error(f"请求处理异常: {e}")
+        raise
+# ------------------
+
+
 
 # 全局异常处理
 @app.exception_handler(BaseAPIException)
@@ -228,6 +245,8 @@ app.include_router(system_router, prefix="/api/v1")
 app.include_router(oauth_router, prefix="")
 app.include_router(auth_router, prefix="/api/v1")
 app.include_router(sample_router, prefix="/api/v1")
+app.include_router(knowledge_base_router, prefix="/api/v1")
+app.include_router(snippet_router, prefix="/api/v1")
 
 
 def create_app() -> FastAPI:

+ 27 - 0
src/app/services/milvus_service.py

@@ -23,6 +23,33 @@ class MilvusService:
     def __init__(self):
         self.client = get_milvus_manager().client
 
+    def create_collection(self, name: str, dimension: int = 768, description: str = "") -> None:
+        """创建 Milvus 集合"""
+        if self.client.has_collection(name):
+            logger.info(f"Collection {name} already exists.")
+            return
+        
+        # 使用简化的 create_collection API
+        self.client.create_collection(
+            collection_name=name,
+            dimension=dimension,
+            description=description,
+            auto_id=True,  # 自动生成 ID
+            id_type="int", # ID 类型
+            metric_type="COSINE" # 默认使用余弦相似度
+        )
+        logger.info(f"Created collection {name} with dimension {dimension}")
+
+    def drop_collection(self, name: str) -> None:
+        """删除 Milvus 集合"""
+        if self.client.has_collection(name):
+            self.client.drop_collection(name)
+            logger.info(f"Dropped collection {name}")
+
+    def has_collection(self, name: str) -> bool:
+        """检查集合是否存在"""
+        return self.client.has_collection(name)
+
     def get_collection_details(self) -> List[Dict[str, Any]]:
         """
         获取所有 Collections 详细信息

+ 2 - 2
test/run_server.py

@@ -9,9 +9,9 @@ import socket
 import logging
 
 # 添加项目根目录到Python路径
-project_root = os.path.dirname(os.path.abspath(__file__))
+current_dir = os.path.dirname(os.path.abspath(__file__))
+project_root = os.path.dirname(current_dir)
 sys.path.insert(0, project_root)
-sys.path.insert(0, os.path.join(project_root, 'src'))
 
 # 导入配置
 from src.app.core.config import config_handler