From 04196288f82deb281baa981cb317981e08fab94d Mon Sep 17 00:00:00 2001 From: Yansong Zhang <916125788@qq.com> Date: Tue, 14 Oct 2025 11:35:20 +0800 Subject: [PATCH] fix --- api/controllers/console/app/error.py | 5 +++ api/controllers/console/explore/trial.py | 45 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/api/controllers/console/app/error.py b/api/controllers/console/app/error.py index fbd7901646..5fde51cfb9 100644 --- a/api/controllers/console/app/error.py +++ b/api/controllers/console/app/error.py @@ -115,3 +115,8 @@ class InvokeRateLimitError(BaseHTTPException): error_code = "rate_limit_error" description = "Rate Limit Error" code = 429 + +class NeedAddIdsError(BaseHTTPException): + error_code = "need_add_ids" + description = "Need to add ids." + code = 400 \ No newline at end of file diff --git a/api/controllers/console/explore/trial.py b/api/controllers/console/explore/trial.py index cd45ae5645..e8f226f1d3 100644 --- a/api/controllers/console/explore/trial.py +++ b/api/controllers/console/explore/trial.py @@ -18,6 +18,7 @@ from controllers.console.app.error import ( ProviderNotInitializeError, ProviderNotSupportSpeechToTextError, ProviderQuotaExceededError, + NeedAddIdsError, UnsupportedAudioTypeError, ) from controllers.console.app.wraps import get_app_model_with_trial @@ -42,6 +43,7 @@ from core.model_runtime.errors.invoke import InvokeError from core.workflow.graph_engine.manager import GraphEngineManager from extensions.ext_database import db from fields.app_fields import app_detail_fields_with_site +from fields.workflow_fields import workflow_fields from libs import helper from libs.helper import uuid_value from libs.login import current_user @@ -65,6 +67,11 @@ from services.errors.message import ( ) from services.message_service import MessageService from services.recommended_app_service import RecommendedAppService +from models.workflow import Workflow +from services.dataset_service import DatasetService +from fields.dataset_fields import dataset_fields +from flask_restx import marshal +from typing import Any, cast logger = logging.getLogger(__name__) @@ -442,6 +449,41 @@ class AppApi(Resource): return app_model +class AppWorkflowApi(Resource): + @trial_feature_enable + @get_app_model_with_trial + @marshal_with(workflow_fields) + def get(self, app_model): + """Get workflow detail""" + if not app_model.workflow_id: + raise AppUnavailableError() + + workflow = ( + db.session.query(Workflow) + .where( + Workflow.id == app_model.workflow_id, + ) + .first() + ) + return workflow + +class DatasetListApi(Resource): + def get(self, app_model): + page = request.args.get("page", default=1, type=int) + limit = request.args.get("limit", default=20, type=int) + ids = request.args.getlist("ids") + + tenant_id = app_model.tenant_id + if ids: + datasets, total = DatasetService.get_datasets_by_ids(ids, tenant_id) + else: + raise NeedAddIdsError() + + + data = cast(list[dict[str, Any]], marshal(datasets, dataset_fields)) + + response = {"data": data, "has_more": len(datasets) == limit, "limit": limit, "total": total, "page": page} + return response api.add_resource(TrialChatApi, "/trial-apps//chat-messages", endpoint="trial_app_chat_completion") @@ -464,3 +506,6 @@ api.add_resource(AppApi, "/trial-apps/", endpoint="trial_app") api.add_resource(TrialAppWorkflowRunApi, "/trial-apps//workflows/run", endpoint="trial_app_workflow_run") api.add_resource(TrialAppWorkflowTaskStopApi, "/trial-apps//workflows/tasks//stop") + +api.add_resource(AppWorkflowApi, "/trial-apps//workflows", endpoint="trial_app_workflow") +api.add_resource(DatasetListApi, "/trial-apps//datasets", endpoint="trial_app_datasets")