diff --git a/apps/api/app/api/routes/templates_editor/cover.py b/apps/api/app/api/routes/templates_editor/cover.py index a112942d7..59a5a6ad9 100755 --- a/apps/api/app/api/routes/templates_editor/cover.py +++ b/apps/api/app/api/routes/templates_editor/cover.py @@ -137,6 +137,12 @@ def editor_generate_cover( storage_svc = get_shared_storage_service() primary_video_url = storage_svc.get_url(rendered_storage_key) + # 防御性规范化:合并路径中的双斜杠(// -> /),但保留协议头的 :// + # 历史数据中 project_id 为空时会产生 projects//tasks/ 路径, + # MediaKit 的 HTTP 客户端会规范化 URL 导致 404 + if primary_video_url: + import re as _re + primary_video_url = _re.sub(r'(? str: use_case = ListGeneratedVideosByTaskUseCase(video_repo) videos = use_case.execute(task.id) if videos: - return getattr(videos[0], "file_url", "") or "" + url = getattr(videos[0], "file_url", "") or "" + # 规范化:合并路径中的双斜杠(保留协议头 ://) + if url: + import re as _re + url = _re.sub(r"(?