From 9376382791f7d1947d05e48b841af4220e275715 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 22 Jan 2026 20:18:42 +0800 Subject: [PATCH] =?UTF-8?q?refactor(annotation):=20=E7=AE=80=E5=8C=96?= =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=BA=93=E9=9B=86=E6=9F=A5=E6=89=BE=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除项目参数依赖,简化 _find_knowledge_set_by_name 方法 - 删除不再使用的 _parse_metadata 和 _metadata_matches_project 方法 - 更新知识库集创建流程中的查找调用方式 - 统一所有知识库集查找操作的参数结构 --- .../annotation/service/knowledge_sync.py | 36 +++---------------- 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/runtime/datamate-python/app/module/annotation/service/knowledge_sync.py b/runtime/datamate-python/app/module/annotation/service/knowledge_sync.py index 4c904a8..fcbce0b 100644 --- a/runtime/datamate-python/app/module/annotation/service/knowledge_sync.py +++ b/runtime/datamate-python/app/module/annotation/service/knowledge_sync.py @@ -85,7 +85,7 @@ class KnowledgeSyncService: base_name = dataset_name.strip() or "annotation-project" metadata = self._build_set_metadata(project) - existing = await self._find_knowledge_set_by_name(base_name, project) + existing = await self._find_knowledge_set_by_name(base_name) if existing: await self._update_project_config( project, @@ -98,17 +98,17 @@ class KnowledgeSyncService: created = await self._create_knowledge_set(base_name, metadata) if not created: - created = await self._find_knowledge_set_by_name(base_name, project) + created = await self._find_knowledge_set_by_name(base_name) if not created: fallback_name = self._build_fallback_set_name(base_name, project.id) - existing = await self._find_knowledge_set_by_name(fallback_name, project) + existing = await self._find_knowledge_set_by_name(fallback_name) if existing: created = existing else: created = await self._create_knowledge_set(fallback_name, metadata) if not created: - created = await self._find_knowledge_set_by_name(fallback_name, project) + created = await self._find_knowledge_set_by_name(fallback_name) if not created: return None @@ -153,30 +153,7 @@ class KnowledgeSyncService: return [] return [item for item in content if isinstance(item, dict)] - def _parse_metadata(self, metadata: Any) -> Optional[Dict[str, Any]]: - if not isinstance(metadata, str) or not metadata.strip(): - return None - try: - parsed = json.loads(metadata) - except Exception: - return None - return parsed if isinstance(parsed, dict) else None - - def _metadata_matches_project(self, metadata: Any, project: LabelingProject) -> bool: - parsed = self._parse_metadata(metadata) - if not parsed: - return False - return ( - parsed.get("source") == "annotation" - and parsed.get("project_id") == project.id - and parsed.get("dataset_id") == project.dataset_id - ) - - async def _find_knowledge_set_by_name( - self, - name: str, - project: LabelingProject, - ) -> Optional[Dict[str, Any]]: + async def _find_knowledge_set_by_name(self, name: str) -> Optional[Dict[str, Any]]: if not name: return None items = await self._list_knowledge_sets(name) @@ -185,9 +162,6 @@ class KnowledgeSyncService: exact_matches = [item for item in items if item.get("name") == name] if not exact_matches: return None - for item in exact_matches: - if self._metadata_matches_project(item.get("metadata"), project): - return item return exact_matches[0] async def _create_knowledge_set(self, name: str, metadata: str) -> Optional[Dict[str, Any]]: