From 68fa7fd163ff0543de7f9f551d0edc17c8d17ccb Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Thu, 13 Aug 2026 17:51:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(cover):=20=E4=BF=AE=E5=A4=8D=20OSS=20?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E5=8F=8C=E6=96=9C=E6=9D=A0=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=20MediaKit=20404=20(#1357)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: xiaoxia Co-committed-by: xiaoxia --- .../app/api/routes/templates_editor/cover.py | 6 +++++ .../api/routes/templates_editor/generation.py | 7 ++++- apps/worker/worker_app/tasks/generation.py | 4 ++- packages/shared/ai_service.py | 6 +++++ tests/unit/test_mediakit_cover.py | 27 +++++++++++++++++++ 5 files changed, 48 insertions(+), 2 deletions(-) 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"(?