From 9c2ffb32fc8bab7a7fa338499bef5ae262c45338 Mon Sep 17 00:00:00 2001 From: CI Bot Date: Thu, 16 Jul 2026 10:06:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20worker=E6=B8=B2=E6=9F=93=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=8F=96=E6=B6=88=E6=A3=80=E6=9F=A5=E7=82=B9=20-=20?= =?UTF-8?q?=E7=B4=A0=E6=9D=90=E4=B8=8B=E8=BD=BD=E5=90=8E=E6=A3=80=E6=B5=8B?= =?UTF-8?q?cancelled=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在渲染主流程中增加取消检查点: - 素材下载完成后、启动FFmpeg前,检查generation_task状态 - 如果已被取消(cancelled),立即中止,不启动渲染 - 计划状态从 rendering 切回 editing,用户可继续编辑 - 与 API 层的取消接口配套 不修改 FFmpeg 运行时取消(后续迭代),覆盖排队/下载期间取消的场景 --- .../worker_app/tasks/edit_plan_generation.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/apps/worker/worker_app/tasks/edit_plan_generation.py b/apps/worker/worker_app/tasks/edit_plan_generation.py index 3eb54cc93..19ce9d826 100755 --- a/apps/worker/worker_app/tasks/edit_plan_generation.py +++ b/apps/worker/worker_app/tasks/edit_plan_generation.py @@ -491,6 +491,23 @@ def render_edit_plan(self, plan_id: str) -> dict: gen_task_repo.update(gen_task) # 4. 根据引擎选择渲染方式 + # 取消检查:素材下载完后,确认任务没有被用户取消 + if generation_task_id: + current_task = gen_task_repo.get(generation_task_id) + if current_task: + task_status = current_task.status.value if hasattr(current_task.status, "value") else str(current_task.status) + if task_status == "cancelled": + logger.info("任务已被取消,中止渲染: plan_id=%s task_id=%s", plan_id, generation_task_id) + # 计划回到 editing 状态,用户可以继续编辑 + from packages.domain.edit_plan import EditPlanStatus + if plan.status.value == "rendering": + try: + plan.resume_editing() + plan_repo.update(plan) + except ValueError: + pass + return {"status": "cancelled", "plan_id": plan_id, "message": "任务已取消"} + if engine == "unified": result = _render_with_unified( plan=plan,