ソースを参照

更改了数据库结构

linyang 3 週間 前
コミット
f545a82e27

+ 9 - 0
scripts/t_samp_knowledge_base_update_2026_02_04.sql

@@ -0,0 +1,9 @@
+ALTER TABLE t_samp_knowledge_base
+  MODIFY COLUMN collection_name_parent VARCHAR(100) NULL COMMENT 'Milvus集合名称(Table Name)(父)',
+  ADD COLUMN has_parent_collection TINYINT NOT NULL DEFAULT 1 COMMENT '是否有父集合: 1-有, 0-无' AFTER collection_name_children;
+
+UPDATE t_samp_knowledge_base
+SET has_parent_collection = CASE
+  WHEN collection_name_parent IS NULL OR collection_name_parent = '' THEN 0
+  ELSE 1
+END;

+ 1 - 0
src/app/sample/models/knowledge_base.py

@@ -14,6 +14,7 @@ class KnowledgeBase(BaseModel):
     name = Column(String(100), nullable=False, comment="知识库名称")
     collection_name_parent = Column(String(100), nullable=True, unique=True, comment="Milvus集合名称(Table Name)(父)")
     collection_name_children = Column(String(100), nullable=True, comment="Milvus集合名称(Table Name)(子)")
+    has_parent_collection = Column(TINYINT, default=1, comment="是否有父集合: 1-有, 0-无")
     description = Column(String(500), nullable=True, comment="描述")
     # 默认禁用,只有同步成功后才置为 normal
     status = Column(String(20), default="disabled", comment="状态: normal(正常), test(测试), disabled(禁用)")

+ 1 - 0
src/app/sample/schemas/knowledge_base.py

@@ -50,6 +50,7 @@ class KnowledgeBaseResponse(BaseModelSchema):
     name: str
     collection_name_parent: Optional[str] = None
     collection_name_children: Optional[str]
+    has_parent_collection: bool = Field(True, description="是否有父集合")
     description: Optional[str]
     status: str
     document_count: int

+ 2 - 1
src/app/services/knowledge_base_service.py

@@ -282,7 +282,7 @@ class KnowledgeBaseService:
         milvus_names_set = set(milvus_service.client.list_collections())
         for item in items:
             # 父集合可能为空(未勾选创建父集合),此时只要子集合存在也算已同步
-            c1_ok = True if not item.collection_name_parent else item.collection_name_parent in milvus_names_set
+            c1_ok = True if not getattr(item, "has_parent_collection", 1) else item.collection_name_parent in milvus_names_set
             c2_ok = True
             if item.collection_name_children:
                 c2_ok = item.collection_name_children in milvus_names_set
@@ -339,6 +339,7 @@ class KnowledgeBaseService:
                 name=payload.name,
                 collection_name_parent=parent_name,
                 collection_name_children=child_name,
+                has_parent_collection=1 if parent_name else 0,
                 description=payload.description,
                 # 默认创建为禁用状态,待同步成功后再启用
                 status="disabled",