From 744a7259bc53bf40f5464c503fd7a0795defed43 Mon Sep 17 00:00:00 2001 From: FFXN Date: Tue, 7 Apr 2026 17:39:14 +0800 Subject: [PATCH] feat: add workflow_type (workflow, chat, evaluation) when get apps and app detail. --- api/controllers/console/app/app.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/api/controllers/console/app/app.py b/api/controllers/console/app/app.py index 357697ed30..80816bbdb8 100644 --- a/api/controllers/console/app/app.py +++ b/api/controllers/console/app/app.py @@ -348,6 +348,7 @@ class AppPartial(ResponseModel): create_user_name: str | None = None author_name: str | None = None has_draft_trigger: bool | None = None + workflow_type: str | None = None @computed_field(return_type=str | None) # type: ignore @property @@ -382,6 +383,7 @@ class AppDetail(ResponseModel): updated_by: str | None = None updated_at: int | None = None access_mode: str | None = None + workflow_type: str | None = None tags: list[Tag] = Field(default_factory=list) @field_validator("created_at", "updated_at", mode="before") @@ -524,6 +526,17 @@ class AppListApi(Resource): for app in app_pagination.items: app.has_draft_trigger = str(app.id) in draft_trigger_app_ids + workflow_ids = [str(app.workflow_id) for app in app_pagination.items if app.workflow_id] + workflow_type_map: dict[str, str] = {} + if workflow_ids: + rows = db.session.execute( + select(Workflow.id, Workflow.type).where(Workflow.id.in_(workflow_ids)) + ).all() + workflow_type_map = {str(row.id): row.type for row in rows} + + for app in app_pagination.items: + app.workflow_type = workflow_type_map.get(str(app.workflow_id)) if app.workflow_id else None + pagination_model = AppPagination.model_validate(app_pagination, from_attributes=True) return pagination_model.model_dump(mode="json"), 200 @@ -570,6 +583,14 @@ class AppApi(Resource): app_setting = EnterpriseService.WebAppAuth.get_app_access_mode_by_id(app_id=str(app_model.id)) app_model.access_mode = app_setting.access_mode + if app_model.workflow_id: + row = db.session.execute( + select(Workflow.type).where(Workflow.id == app_model.workflow_id) + ).scalar() + app_model.workflow_type = row if row else None + else: + app_model.workflow_type = None + response_model = AppDetailWithSite.model_validate(app_model, from_attributes=True) return response_model.model_dump(mode="json")