From 88349f600df147a34967195994d8644bf783aa7f Mon Sep 17 00:00:00 2001 From: CI Bot Date: Sun, 19 Jul 2026 09:58:50 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(P1):=20=E4=B8=80=E9=94=AE=E7=94=9F?= =?UTF-8?q?=E6=88=90=E9=85=8D=E9=9F=B3=E6=94=AF=E6=8C=81=E4=BB=8E=E9=85=8D?= =?UTF-8?q?=E9=9F=B3=E7=B4=A0=E6=9D=90=E5=BA=93=E9=80=89=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E7=9A=84=E9=9F=B3=E9=A2=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit voice_library_id字段支持传入配音素材库的asset_id: - 先查asset表取storage_key下载(用户上传的配音) - 查不到再fallback旧版voice/{id}.mp3路径(向后兼容) --- apps/worker/worker_app/tasks/generation.py | 36 +++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/apps/worker/worker_app/tasks/generation.py b/apps/worker/worker_app/tasks/generation.py index 1a3fc6e7e..5fb80e5eb 100755 --- a/apps/worker/worker_app/tasks/generation.py +++ b/apps/worker/worker_app/tasks/generation.py @@ -473,9 +473,43 @@ def _mux_audio_track(video_path: Path, audio_path: str, output_path: Path) -> No def _download_voice_asset(voice_library_id: str, local_path: Path) -> bool: - """下载配音文件""" + """下载配音文件。 + + 支持两种来源(按优先级): + 1. 配音素材库 asset — 将 voice_library_id 当 asset_id 查 asset 表, + 找到则用 asset.storage_key 下载(用户上传到配音库的音频) + 2. 旧版 voice/{id}.mp3 路径 — 向后兼容 + """ if not voice_library_id: return False + + # 方式1:先尝试当 asset_id 查素材库(用户上传到配音库的音频) + try: + from worker_app.db import SessionLocal + from packages.adapters.sqlalchemy_impl.asset_repository import ( + SQLAlchemyAssetRepository, + ) + + session = SessionLocal() + try: + repo = SQLAlchemyAssetRepository(session) + asset = repo.find_by_id(voice_library_id) + if asset and asset.storage_key: + # 是素材库的配音 asset,用 storage_key 下载 + logger.info( + "配音素材来自素材库: asset_id=%s storage_key=%s", + voice_library_id, + asset.storage_key, + ) + ok = download_asset(asset.storage_key, local_path) + if ok and local_path.exists() and local_path.stat().st_size > 0: + return True + finally: + session.close() + except Exception as e: + logger.warning("查询配音asset失败,fallback旧路径: %s", e) + + # 方式2:旧版路径(向后兼容) storage_key = f"voice/{voice_library_id}.mp3" return download_asset(storage_key, local_path) -- 2.54.0 From b487a2b30663caa0a959930c36342efd713b7a37 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Sun, 19 Jul 2026 10:24:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20isort=20import=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/worker/worker_app/tasks/generation.py | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/worker/worker_app/tasks/generation.py b/apps/worker/worker_app/tasks/generation.py index 5fb80e5eb..c876bdce7 100755 --- a/apps/worker/worker_app/tasks/generation.py +++ b/apps/worker/worker_app/tasks/generation.py @@ -486,6 +486,7 @@ def _download_voice_asset(voice_library_id: str, local_path: Path) -> bool: # 方式1:先尝试当 asset_id 查素材库(用户上传到配音库的音频) try: from worker_app.db import SessionLocal + from packages.adapters.sqlalchemy_impl.asset_repository import ( SQLAlchemyAssetRepository, ) -- 2.54.0