From 3aa0be36a223f8abe9a3e81e8fd8d56060c202d2 Mon Sep 17 00:00:00 2001 From: xiaoxia Date: Fri, 17 Jul 2026 13:39:12 +0800 Subject: [PATCH] =?UTF-8?q?#454=20=E5=89=AA=E8=BE=91=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E7=94=9F=E6=88=90=E7=8A=B6=E6=80=81=E6=8E=A5=E5=8F=A3video=5Fu?= =?UTF-8?q?rl=E6=94=B9=E4=B8=BA=E7=AD=BE=E5=90=8DURL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes #454 --- apps/api/app/api/routes/edit_plans_generation.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/api/app/api/routes/edit_plans_generation.py b/apps/api/app/api/routes/edit_plans_generation.py index 2d61302d9..fbd21f518 100755 --- a/apps/api/app/api/routes/edit_plans_generation.py +++ b/apps/api/app/api/routes/edit_plans_generation.py @@ -20,6 +20,7 @@ from app.api.routes.edit_plans import ( ) from app.auth import AuthenticatedUser, get_current_user from app.core.celery_app import celery_app +from app.core.storage import OSSStorageService, get_storage_service from app.core.task_enqueue import GLOBAL_PENDING_LIMIT, USER_PENDING_LIMIT from app.dependencies import get_asset_library_repository, get_asset_repository, get_db_session, get_project_repository from app.services import EditPlanService @@ -308,6 +309,7 @@ def get_generation_status( db: Session = Depends(get_db_session), current_user: AuthenticatedUser = Depends(get_current_user), project_repository: Any = Depends(get_project_repository), + storage_service: OSSStorageService = Depends(get_storage_service), ) -> EditPlanGenerationStatusResponse: """查询剪辑计划生成进度""" svc = EditPlanService(db) @@ -334,8 +336,15 @@ def get_generation_status( for c in clips ] - # 从 plan.config 中取渲染结果 URL - video_url = (plan.config or {}).get("rendered_url", "") + # 从 plan.config 中取渲染结果 URL,转换为签名 URL + raw_video_url = (plan.config or {}).get("rendered_url", "") + video_url = "" + if raw_video_url: + try: + video_url = storage_service.get_download_url(raw_video_url, expires_seconds=86400) + except Exception as e: + logger.warning("生成视频签名URL失败,返回原始URL: plan_id=%s error=%s", plan_id, e) + video_url = raw_video_url # 从 gen_status 中取进度、错误信息、任务状态 progress = gen_status.get("progress", 0.0) error_message = gen_status.get("error_message", "")