linyang il y a 3 semaines
Parent
commit
a0bb6db282

+ 5 - 3
src/app/sample/models/knowledge_base.py

@@ -14,12 +14,14 @@ class KnowledgeBase(BaseModel):
     name = Column(String(100), nullable=False, comment="知识库名称")
     collection_name_parent = Column(String(100), nullable=False, unique=True, comment="Milvus集合名称(Table Name)(父)")
     collection_name_children = Column(String(100), nullable=True, comment="Milvus集合名称(Table Name)(子)")
-    description = Column(Text, nullable=True, comment="描述")
+    description = Column(String(500), nullable=True, comment="描述")
     status = Column(String(20), default="normal", comment="状态: normal(正常), test(测试), disabled(禁用)")
     document_count = Column(Integer, default=0, comment="文档数量")
     is_deleted = Column(TINYINT, default=0, comment="是否删除")
-    created_by = Column(String(128), nullable=True, comment="创建人")
-    updated_by = Column(String(128), nullable=True, comment="修改人")
+    created_by = Column(String(500), nullable=True, comment="创建人")
+    updated_by = Column(String(500), nullable=True, comment="修改人")
+    created_time = Column(String(500), nullable=True, comment="创建时间")
+    updated_time = Column(String(500), nullable=True, comment="修改时间")
 
     def __repr__(self):
         return f"<KnowledgeBase {self.name}>"

+ 7 - 7
src/app/sample/schemas/knowledge_base.py

@@ -55,13 +55,13 @@ class KnowledgeBaseResponse(BaseModelSchema):
     is_synced: bool = Field(False, description="是否已同步到Milvus")
     created_by: Optional[str] = None
     updated_by: Optional[str] = None
-    created_at: Optional[datetime] = None
-    updated_at: Optional[datetime] = None
-    created_time: Optional[datetime] = None
-    updated_time: Optional[datetime] = None
+    created_at: Optional[str] = None
+    updated_at: Optional[str] = None
+    created_time: Optional[str] = None
+    updated_time: Optional[str] = None
 
     class Config:
         from_attributes = True
-        json_encoders = {
-            datetime: lambda v: v.strftime("%Y-%m-%d %H:%M:%S") if v else None
-        }
+        # json_encoders = {
+        #     datetime: lambda v: v.strftime("%Y-%m-%d %H:%M:%S") if v else None
+        # }

+ 7 - 7
src/app/services/knowledge_base_service.py

@@ -523,18 +523,18 @@ class KnowledgeBaseService:
         
         try:
             # 创建 collection1
-            if kb.collection_name1 and not milvus_service.has_collection(kb.collection_name1):
+            if kb.collection_name_parent and not milvus_service.has_collection(kb.collection_name_parent):
                 milvus_service.create_collection(
-                    name=kb.collection_name1,
+                    name=kb.collection_name_parent,
                     dimension=milvus_service.DENSE_DIM, 
                     description=kb.description or "",
                     fields=fields
                 )
             
             # 创建 collection2
-            if kb.collection_name2 and not milvus_service.has_collection(kb.collection_name2):
+            if kb.collection_name_children and not milvus_service.has_collection(kb.collection_name_children):
                 milvus_service.create_collection(
-                    name=kb.collection_name2,
+                    name=kb.collection_name_children,
                     dimension=milvus_service.DENSE_DIM, 
                     description=kb.description or "",
                     fields=fields
@@ -557,8 +557,8 @@ class KnowledgeBaseService:
         meta_result = await db.execute(meta_query)
         metadata_fields = [f.to_dict() for f in meta_result.scalars().all()]
         
-        # 自动推断逻辑:如果 DB 中没有定义元数据,且 Milvus 中有数据,尝试推断 (优先推断 collection1)
-        target_col = kb.collection_name1
+        # 自动推断逻辑:如果 DB 中没有定义元数据,且 Milvus 中有数据,尝试推断 (优先推断 collection_name_parent)
+        target_col = kb.collection_name_parent
         if not metadata_fields and target_col and milvus_service.has_collection(target_col):
             try:
                 # 采样查询 (获取前10条)
@@ -682,7 +682,7 @@ class KnowledgeBaseService:
                     await db.commit()
                 return total_count
             except Exception as e:
-                print(f"Failed to update doc count for {collection_name}: {e}")
+                logger.exception(f"Failed to update doc count for {collection_name}: {e}")
                 return 0
         return 0
 

+ 3 - 3
src/app/services/search_engine_service.py

@@ -472,7 +472,7 @@ class SearchEngineService:
                     # [Updated] 通用逻辑:无论是否 PDR 模式,只要有 parent_id 且能找到父表,就尝试获取父段内容
                     # 首先确定父表名:
                     # 1. 如果有 PDR 标记,则 parent_col 已知
-                    # 2. 如果没有,需要查询 KnowledgeBase 表获取 collection_name1 (父表)
+                    # 2. 如果没有,需要查询 KnowledgeBase 表获取 collection_name_parent (父表)
                     
                     final_parent_content = None
                     parent_id = entity.get("metadata", {}).get("parent_id") if entity.get("metadata") else entity.get("parent_id")
@@ -491,10 +491,10 @@ class SearchEngineService:
                             # 我们可以查询 KnowledgeBase 表
                             try:
                                 from app.sample.models.knowledge_base import KnowledgeBase
-                                # 假设 kb_id 是子表名 (collection_name_children)
+                                # 假设 kb_id 是子表名 (collection_name)
                                 kb_stmt = select(KnowledgeBase.collection_name_parent).where(
                                     or_(
-                                        KnowledgeBase.collection_name_children == kb_id,
+                                        KnowledgeBase.collection_name == kb_id,
                                         KnowledgeBase.collection_name_parent == kb_id # 兼容
                                     )
                                 )

+ 5 - 5
src/app/services/snippet_service.py

@@ -807,18 +807,18 @@ class SnippetService:
                     from sqlalchemy import select, or_
                     from app.sample.models.knowledge_base import KnowledgeBase
                     
-                    # 假设当前 kb 是 collection_name_children (子表),我们要找 collection_name_parent (父表)
+                    # 假设当前 kb 是 collection_name2 (子表),我们要找 collection_name1 (父表)
                     stmt = select(KnowledgeBase).where(
                         or_(
-                            KnowledgeBase.collection_name_children == kb,
-                            KnowledgeBase.collection_name_parent == kb # 兼容处理
+                            KnowledgeBase.collection_name2 == kb,
+                            KnowledgeBase.collection_name1 == kb # 兼容处理
                         )
                     )
                     res = await db.execute(stmt)
                     kb_record = res.scalars().first()
                     
-                    if kb_record and kb_record.collection_name_parent:
-                        parent_kb = kb_record.collection_name_parent
+                    if kb_record and kb_record.collection_name1:
+                        parent_kb = kb_record.collection_name1
                         print(f"DEBUG: Found parent KB: {parent_kb} for child {kb}nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn")
                         
                         # 2. 在父表中查询 parent_id