From 6d89dafcaf7dfd5df389c58f90c310212efa5264 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Fri, 24 Jul 2026 00:29:46 +0800 Subject: [PATCH] =?UTF-8?q?refactor(#779):=20=E6=B6=88=E9=99=A4=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E6=9E=9A=E4=B8=BE=E5=AE=9A=E4=B9=89=EF=BC=8C=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E5=88=B0classification=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AssetLibraryKind: 从entities.py+classification.py双份定义,统一到classification.py - IngestJobStatus: 同上 - ClassificationStatus/ClassificationJobStatus: 合并为ClassificationJobStatus,保留_missing_兼容方法,ClassificationStatus作为别名 - entities.py改为re-export兼容层,107处import不受影响 - 补齐classification.py中AssetLibraryKind缺失的IMAGE值 - 净减8行 --- packages/domain/classification.py | 22 ++++++++++++++++ packages/domain/entities.py | 42 +++++-------------------------- 2 files changed, 28 insertions(+), 36 deletions(-) diff --git a/packages/domain/classification.py b/packages/domain/classification.py index f79475e8c..c424aac31 100644 --- a/packages/domain/classification.py +++ b/packages/domain/classification.py @@ -19,6 +19,7 @@ from uuid import uuid4 class AssetLibraryKind(StrEnum): VIDEO = "video" VOICE = "voice" + IMAGE = "image" class IngestJobStatus(StrEnum): @@ -34,6 +35,27 @@ class ClassificationJobStatus(StrEnum): COMPLETED = "completed" FAILED = "failed" + @classmethod + def _missing_(cls, value: object) -> "ClassificationJobStatus": + """兼容历史数据,避免枚举转换失败导致500。 + + - done → COMPLETED(早期版本用 done 表示完成) + - 其他未知值 → PENDING(兜底,不阻塞业务) + """ + if isinstance(value, str): + normalized = value.strip().lower() + if normalized in ("done", "success", "finished", "complete"): + return cls.COMPLETED + if normalized in ("fail", "error", "err"): + return cls.FAILED + if normalized in ("process", "processing", "running", "run"): + return cls.PROCESSING + return cls.PENDING + + +# 向后兼容别名 +ClassificationStatus = ClassificationJobStatus + class AssetClassification(StrEnum): """Asset classification categories.""" diff --git a/packages/domain/entities.py b/packages/domain/entities.py index 079fc3af1..4df342e4d 100755 --- a/packages/domain/entities.py +++ b/packages/domain/entities.py @@ -16,18 +16,12 @@ else: from typing import Any from uuid import uuid4 - -class AssetLibraryKind(StrEnum): - VIDEO = "video" - VOICE = "voice" - IMAGE = "image" - - -class IngestJobStatus(StrEnum): - PENDING = "pending" - PROCESSING = "processing" - COMPLETED = "completed" - FAILED = "failed" +# 枚举统一从 classification 模块导入,消除重复定义 +from packages.domain.classification import ( + AssetLibraryKind, + ClassificationStatus, + IngestJobStatus, +) @dataclass(slots=True) @@ -160,30 +154,6 @@ class AssetStatus(StrEnum): return cls.READY -class ClassificationStatus(StrEnum): - PENDING = "pending" - PROCESSING = "processing" - COMPLETED = "completed" - FAILED = "failed" - - @classmethod - def _missing_(cls, value: object) -> "ClassificationStatus": - """兼容历史数据,避免枚举转换失败导致500。 - - - done → COMPLETED(早期版本用 done 表示完成) - - 其他未知值 → PENDING(兜底,不阻塞业务) - """ - if isinstance(value, str): - normalized = value.strip().lower() - if normalized in ("done", "success", "finished", "complete"): - return cls.COMPLETED - if normalized in ("fail", "error", "err"): - return cls.FAILED - if normalized in ("process", "processing", "running", "run"): - return cls.PROCESSING - return cls.PENDING - - @dataclass(slots=True) class Asset: id: str -- 2.54.0