fix: workflow_finish_to_stream_response assert exception with celery … (#24674)
Some checks failed
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Has been cancelled
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Has been cancelled
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Has been cancelled
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Has been cancelled
Main CI Pipeline / Check Changed Files (push) Has been cancelled
Main CI Pipeline / Style Check (push) Has been cancelled
Check i18n Files and Create PR / check-and-update (push) Has been cancelled
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Has been cancelled
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Has been cancelled
Main CI Pipeline / API Tests (push) Has been cancelled
Main CI Pipeline / Web Tests (push) Has been cancelled
Main CI Pipeline / VDB Tests (push) Has been cancelled
Main CI Pipeline / DB Migration Test (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
horochx
2025-08-30 00:59:21 +08:00
committed by GitHub
parent d9420c7224
commit 0fe078d25e
3 changed files with 18 additions and 23 deletions

View File

@@ -144,6 +144,7 @@ class AdvancedChatAppGenerateTaskPipeline:
self._workflow_response_converter = WorkflowResponseConverter( self._workflow_response_converter = WorkflowResponseConverter(
application_generate_entity=application_generate_entity, application_generate_entity=application_generate_entity,
user=user,
) )
self._task_state = WorkflowTaskState() self._task_state = WorkflowTaskState()

View File

@@ -3,7 +3,6 @@ from collections.abc import Mapping, Sequence
from datetime import UTC, datetime from datetime import UTC, datetime
from typing import Any, Optional, Union, cast from typing import Any, Optional, Union, cast
from sqlalchemy import select
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from core.app.entities.app_invoke_entities import AdvancedChatAppGenerateEntity, WorkflowAppGenerateEntity from core.app.entities.app_invoke_entities import AdvancedChatAppGenerateEntity, WorkflowAppGenerateEntity
@@ -53,9 +52,7 @@ from core.workflow.workflow_type_encoder import WorkflowRuntimeTypeConverter
from libs.datetime_utils import naive_utc_now from libs.datetime_utils import naive_utc_now
from models import ( from models import (
Account, Account,
CreatorUserRole,
EndUser, EndUser,
WorkflowRun,
) )
@@ -64,8 +61,10 @@ class WorkflowResponseConverter:
self, self,
*, *,
application_generate_entity: Union[AdvancedChatAppGenerateEntity, WorkflowAppGenerateEntity], application_generate_entity: Union[AdvancedChatAppGenerateEntity, WorkflowAppGenerateEntity],
user: Union[Account, EndUser],
) -> None: ) -> None:
self._application_generate_entity = application_generate_entity self._application_generate_entity = application_generate_entity
self._user = user
def workflow_start_to_stream_response( def workflow_start_to_stream_response(
self, self,
@@ -92,27 +91,21 @@ class WorkflowResponseConverter:
workflow_execution: WorkflowExecution, workflow_execution: WorkflowExecution,
) -> WorkflowFinishStreamResponse: ) -> WorkflowFinishStreamResponse:
created_by = None created_by = None
workflow_run = session.scalar(select(WorkflowRun).where(WorkflowRun.id == workflow_execution.id_))
assert workflow_run is not None user = self._user
if workflow_run.created_by_role == CreatorUserRole.ACCOUNT: if isinstance(user, Account):
stmt = select(Account).where(Account.id == workflow_run.created_by) created_by = {
account = session.scalar(stmt) "id": user.id,
if account: "name": user.name,
created_by = { "email": user.email,
"id": account.id, }
"name": account.name, elif isinstance(user, EndUser):
"email": account.email, created_by = {
} "id": user.id,
elif workflow_run.created_by_role == CreatorUserRole.END_USER: "user": user.session_id,
stmt = select(EndUser).where(EndUser.id == workflow_run.created_by) }
end_user = session.scalar(stmt)
if end_user:
created_by = {
"id": end_user.id,
"user": end_user.session_id,
}
else: else:
raise NotImplementedError(f"unknown created_by_role: {workflow_run.created_by_role}") raise NotImplementedError(f"User type not supported: {type(user)}")
# Handle the case where finished_at is None by using current time as default # Handle the case where finished_at is None by using current time as default
finished_at_timestamp = ( finished_at_timestamp = (

View File

@@ -131,6 +131,7 @@ class WorkflowAppGenerateTaskPipeline:
self._workflow_response_converter = WorkflowResponseConverter( self._workflow_response_converter = WorkflowResponseConverter(
application_generate_entity=application_generate_entity, application_generate_entity=application_generate_entity,
user=user,
) )
self._application_generate_entity = application_generate_entity self._application_generate_entity = application_generate_entity