diff --git a/apps/worker/worker_app/tasks/viral_video.py b/apps/worker/worker_app/tasks/viral_video.py index a6b77f3c6..d4b7bb937 100644 --- a/apps/worker/worker_app/tasks/viral_video.py +++ b/apps/worker/worker_app/tasks/viral_video.py @@ -137,7 +137,16 @@ def _step_image_analysis(job: ViralVideoJob) -> dict: from packages.shared.ai_service import call_vision except ImportError: logger.warning("[爆款视频] ai_service.call_vision 不可用,使用占位结果") - return {"products": [{"name": "产品", "features": ["特征1", "特征2"], "scene": "通用场景", "_source": "fallback_import_error"}]} + return { + "products": [ + { + "name": "产品", + "features": ["特征1", "特征2"], + "scene": "通用场景", + "_source": "fallback_import_error", + } + ] + } if not job.images: logger.warning("[爆款视频] 任务无 images,跳过图片分析") @@ -150,18 +159,44 @@ def _step_image_analysis(job: ViralVideoJob) -> dict: result = call_vision(image_url=img_url, prompt=_IMAGE_ANALYSIS_PROMPT) if result is None: logger.warning("[爆款视频] 图片 #%d call_vision 返回 None(模型超时/Key未配置)", idx) - results.append({"name": "未识别", "category": "无法判断", "key_features": [], "scene": "通用", "_source": "vision_none"}) + results.append( + { + "name": "未识别", + "category": "无法判断", + "key_features": [], + "scene": "通用", + "_source": "vision_none", + } + ) elif isinstance(result, str): # JSON 解析失败返回的原文,包装一下防止后续 .get 报错 logger.warning("[爆款视频] 图片 #%d VLM 返回非 JSON 文本,包装为 features: %s", idx, result[:200]) - results.append({"name": "未识别", "category": "无法判断", "key_features": [], "scene": "通用", "_raw": result[:500], "_source": "vision_text"}) + results.append( + { + "name": "未识别", + "category": "无法判断", + "key_features": [], + "scene": "通用", + "_raw": result[:500], + "_source": "vision_text", + } + ) else: # dict 正常 result.setdefault("_source", "vision") results.append(result) except Exception as e: logger.warning("[爆款视频] 图片分析失败 img=%s err=%s", img_url[:120], e, exc_info=True) - results.append({"name": "未识别", "category": "无法判断", "key_features": [], "scene": "通用", "_source": "vision_exception", "_error": str(e)[:200]}) + results.append( + { + "name": "未识别", + "category": "无法判断", + "key_features": [], + "scene": "通用", + "_source": "vision_exception", + "_error": str(e)[:200], + } + ) return {"products": results}