From 735cd78dc2b495b6b2f17bcf4a289e52fc483ab6 Mon Sep 17 00:00:00 2001 From: hjlarry Date: Sat, 17 Jan 2026 12:44:26 +0800 Subject: [PATCH] fix api --- .../console/app/workflow_draft_variable.py | 65 ++++++++++--------- api/services/workflow_comment_service.py | 1 - 2 files changed, 36 insertions(+), 30 deletions(-) diff --git a/api/controllers/console/app/workflow_draft_variable.py b/api/controllers/console/app/workflow_draft_variable.py index a5bc69e013..16f16731a1 100644 --- a/api/controllers/console/app/workflow_draft_variable.py +++ b/api/controllers/console/app/workflow_draft_variable.py @@ -43,6 +43,18 @@ class WorkflowDraftVariableUpdatePayload(BaseModel): value: Any | None = Field(default=None, description="Variable value") +class ConversationVariableUpdatePayload(BaseModel): + conversation_variables: list[dict[str, Any]] = Field( + ..., description="Conversation variables for the draft workflow" + ) + + +class EnvironmentVariableUpdatePayload(BaseModel): + environment_variables: list[dict[str, Any]] = Field( + ..., description="Environment variables for the draft workflow" + ) + + console_ns.schema_model( WorkflowDraftVariableListQuery.__name__, WorkflowDraftVariableListQuery.model_json_schema(ref_template=DEFAULT_REF_TEMPLATE_SWAGGER_2_0), @@ -51,6 +63,14 @@ console_ns.schema_model( WorkflowDraftVariableUpdatePayload.__name__, WorkflowDraftVariableUpdatePayload.model_json_schema(ref_template=DEFAULT_REF_TEMPLATE_SWAGGER_2_0), ) +console_ns.schema_model( + ConversationVariableUpdatePayload.__name__, + ConversationVariableUpdatePayload.model_json_schema(ref_template=DEFAULT_REF_TEMPLATE_SWAGGER_2_0), +) +console_ns.schema_model( + EnvironmentVariableUpdatePayload.__name__, + EnvironmentVariableUpdatePayload.model_json_schema(ref_template=DEFAULT_REF_TEMPLATE_SWAGGER_2_0), +) def _convert_values_to_json_serializable_object(value: Segment): @@ -476,22 +496,22 @@ class ConversationVariableCollectionApi(Resource): db.session.commit() return _get_variable_list(app_model, CONVERSATION_VARIABLE_NODE_ID) + @console_ns.expect(console_ns.models[ConversationVariableUpdatePayload.__name__]) + @console_ns.doc("update_conversation_variables") + @console_ns.doc(description="Update conversation variables for workflow draft") + @console_ns.doc(params={"app_id": "Application ID"}) + @console_ns.response(200, "Conversation variables updated successfully") @setup_required @login_required @account_initialization_required + @edit_permission_required @get_app_model(mode=AppMode.ADVANCED_CHAT) def post(self, app_model: App): - # The role of the current user in the ta table must be admin, owner, or editor - if not current_user.is_editor: - raise Forbidden() - - parser = reqparse.RequestParser() - parser.add_argument("conversation_variables", type=list, required=True, location="json") - args = parser.parse_args() + payload = ConversationVariableUpdatePayload.model_validate(console_ns.payload or {}) workflow_service = WorkflowService() - conversation_variables_list = args.get("conversation_variables") or [] + conversation_variables_list = payload.conversation_variables conversation_variables = [ variable_factory.build_conversation_variable_from_mapping(obj) for obj in conversation_variables_list ] @@ -555,22 +575,22 @@ class EnvironmentVariableCollectionApi(Resource): return {"items": env_vars_list} + @console_ns.expect(console_ns.models[EnvironmentVariableUpdatePayload.__name__]) + @console_ns.doc("update_environment_variables") + @console_ns.doc(description="Update environment variables for workflow draft") + @console_ns.doc(params={"app_id": "Application ID"}) + @console_ns.response(200, "Environment variables updated successfully") @setup_required @login_required @account_initialization_required + @edit_permission_required @get_app_model(mode=[AppMode.ADVANCED_CHAT, AppMode.WORKFLOW]) def post(self, app_model: App): - # The role of the current user in the ta table must be admin, owner, or editor - if not current_user.is_editor: - raise Forbidden() - - parser = reqparse.RequestParser() - parser.add_argument("environment_variables", type=list, required=True, location="json") - args = parser.parse_args() + payload = EnvironmentVariableUpdatePayload.model_validate(console_ns.payload or {}) workflow_service = WorkflowService() - environment_variables_list = args.get("environment_variables") or [] + environment_variables_list = payload.environment_variables environment_variables = [ variable_factory.build_environment_variable_from_mapping(obj) for obj in environment_variables_list ] @@ -582,16 +602,3 @@ class EnvironmentVariableCollectionApi(Resource): ) return {"result": "success"} - - -api.add_resource( - WorkflowVariableCollectionApi, - "/apps//workflows/draft/variables", -) -api.add_resource(NodeVariableCollectionApi, "/apps//workflows/draft/nodes//variables") -api.add_resource(VariableApi, "/apps//workflows/draft/variables/") -api.add_resource(VariableResetApi, "/apps//workflows/draft/variables//reset") - -api.add_resource(ConversationVariableCollectionApi, "/apps//workflows/draft/conversation-variables") -api.add_resource(SystemVariableCollectionApi, "/apps//workflows/draft/system-variables") -api.add_resource(EnvironmentVariableCollectionApi, "/apps//workflows/draft/environment-variables") diff --git a/api/services/workflow_comment_service.py b/api/services/workflow_comment_service.py index 9bb9a90fca..ac20a87c31 100644 --- a/api/services/workflow_comment_service.py +++ b/api/services/workflow_comment_service.py @@ -1,6 +1,5 @@ import logging from collections.abc import Sequence -from typing import Optional from sqlalchemy import desc, select from sqlalchemy.orm import Session, selectinload