From e50c36526e2debefd0ab8c908bef416de15e4e37 Mon Sep 17 00:00:00 2001 From: Yansong Zhang <916125788@qq.com> Date: Thu, 9 Apr 2026 17:27:41 +0800 Subject: [PATCH] fix(api): fix transparent upgrade SSE channel mismatch and chat mode routing - workflow_execute_task: add AppMode.CHAT/AGENT_CHAT/COMPLETION to the AdvancedChatAppGenerator routing branch so transparently upgraded old apps can execute through the workflow engine. - app_generate_service: use app_model.mode (not hardcoded AppMode.AGENT) for SSE event subscription channel, ensuring the subscriber and Celery publisher use the same Redis channel key. Made-with: Cursor --- api/services/app_generate_service.py | 3 ++- api/tasks/app_generate/workflow_execute_task.py | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/api/services/app_generate_service.py b/api/services/app_generate_service.py index 520cb4f9cf..4b98a47963 100644 --- a/api/services/app_generate_service.py +++ b/api/services/app_generate_service.py @@ -165,10 +165,11 @@ class AppGenerateService: on_subscribe = cls._build_streaming_task_on_subscribe(on_subscribe) generator = AdvancedChatAppGenerator() + subscribe_mode = AppMode.value_of(app_model.mode) return rate_limit.generate( generator.convert_to_event_stream( generator.retrieve_events( - AppMode.AGENT, + subscribe_mode, payload.workflow_run_id, on_subscribe=on_subscribe, ), diff --git a/api/tasks/app_generate/workflow_execute_task.py b/api/tasks/app_generate/workflow_execute_task.py index ffea1d8ca0..df0b00355e 100644 --- a/api/tasks/app_generate/workflow_execute_task.py +++ b/api/tasks/app_generate/workflow_execute_task.py @@ -183,7 +183,13 @@ class _AppRunner: pause_state_config: PauseStateLayerConfig, ): exec_params = self._exec_params - if exec_params.app_mode in {AppMode.ADVANCED_CHAT, AppMode.AGENT}: + if exec_params.app_mode in { + AppMode.ADVANCED_CHAT, + AppMode.AGENT, + AppMode.CHAT, + AppMode.AGENT_CHAT, + AppMode.COMPLETION, + }: return AdvancedChatAppGenerator().generate( app_model=app, workflow=workflow,