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", "")