diff --git a/packages/adapters/sqlalchemy_impl/viral_video_repository.py b/packages/adapters/sqlalchemy_impl/viral_video_repository.py index fdcf03386..6265c0fa5 100755 --- a/packages/adapters/sqlalchemy_impl/viral_video_repository.py +++ b/packages/adapters/sqlalchemy_impl/viral_video_repository.py @@ -12,16 +12,27 @@ from packages.domain.viral_video import ViralVideoJob, ViralVideoStatus def _to_domain(model: ViralVideoJobModel) -> ViralVideoJob: - """ORM → 领域实体。""" + """ORM → 领域实体。pre_trusted_images 兼容脏数据:双序列化字符串/字符数组/list[str]。""" + import json as _pti_json + + _raw_pti = getattr(model, "pre_trusted_images", None) + _pti: list[str] | None = None + if _raw_pti is not None: + if isinstance(_raw_pti, str): + try: + _p = _pti_json.loads(_raw_pti) + if isinstance(_p, list): + _pti = [u for u in _p if isinstance(u, str) and u] or None + except Exception: + _pti = None + elif isinstance(_raw_pti, list): + _f = [u for u in _raw_pti if isinstance(u, str) and len(u) > 5] + _pti = _f if _f else None return ViralVideoJob( id=model.id, user_id=model.user_id, images=list(model.images or []), - pre_trusted_images=( - list(getattr(model, "pre_trusted_images", None) or []) - if getattr(model, "pre_trusted_images", None) is not None - else None - ), + pre_trusted_images=_pti, industry=model.industry or "", target_customer=model.target_customer or "", persona_id=model.persona_id or "",