完善视频复刻

This commit is contained in:
Azmat@qq.com
2026-08-27 15:56:44 +08:00
parent 3fbc2f2dab
commit d2b786a3cf
10 changed files with 722 additions and 164 deletions
+6 -5
View File
@@ -874,6 +874,8 @@ class VideoReplaceView(APIView):
"user_credit_insufficient" if "余额不足" in message
else "model_unavailable" if "模型未配置" in message
else "provider_rate_limited" if "任务进行中" in message
else "provider_unavailable" if "审核服务" in message
else "content_rejected" if "合规审核" in message
else "invalid_input"
)
public_error = classify_generation_error(
@@ -911,19 +913,18 @@ class VideoReplaceView(APIView):
class VideoReplacePollView(APIView):
"""POST /api/ai/video-replace/<id>/poll/ —— 与自由创作共用 finalize,只认复刻任务。"""
"""POST /api/ai/video-replace/<id>/poll/ —— 审核中推进送审,生成中走 finalize。"""
def post(self, request, task_id):
from .free_video import finalize_free_video
from .video_replace import is_video_replace_task, serialize_video_replace_task
from .video_replace import advance_video_replace, is_video_replace_task, serialize_video_replace_task
team = get_current_team(request.user)
task = _free_video_task_queryset(team).filter(id=task_id).first()
if task is None or not is_video_replace_task(task):
return Response({"detail": "任务不存在"}, status=status.HTTP_404_NOT_FOUND)
if task.status in (AITask.Status.SUBMITTED, AITask.Status.POLLING):
if task.status in (AITask.Status.CREATED, AITask.Status.SUBMITTED, AITask.Status.POLLING):
try:
task = finalize_free_video(task=task)
task = advance_video_replace(task)
except Exception: # noqa: BLE001 — 单次轮询失败不终结任务
logger.warning("video replace poll failed for %s", task_id, exc_info=True)
task = _free_video_task_queryset(team).get(id=task.id)