Skip to content

feat: MCP节点支持异常处理 - #404

Open
openjiuwen-sync-bot[bot] wants to merge 2 commits into
openJiuwen-ai:studio-2.0-devfrom
openjiuwenai:sync/pr-1872
Open

feat: MCP节点支持异常处理#404
openjiuwen-sync-bot[bot] wants to merge 2 commits into
openJiuwen-ai:studio-2.0-devfrom
openjiuwenai:sync/pr-1872

Conversation

@openjiuwen-sync-bot

@openjiuwen-sync-bot openjiuwen-sync-bot Bot commented Aug 14, 2026

Copy link
Copy Markdown

Paired: GitHub #404GitCode !1872

What type of PR is this?

/kind

Self-checklist:(请自检,在[ ]内打上x,我们将检视你的完成情况,否则会导致pr无法合入

    • 设计:PR对应的方案是否已经经过Maintainer评审,方案检视意见是否均已答复并完成方案修改
    • 测试:PR中的代码是否已有UT/ST测试用例进行充分的覆盖,新增测试用例是否随本PR一并上库或已经上库
    • 验证:PR描述信息中是否已包含对该PR对应的Feature、Refactor、Bugfix的预期目标达成情况的详细验证结果描述
    • 接口:是否涉及对外接口变更,相应变更已得到接口评审组织的通过,API对应的注释信息已经刷新正确
    • 文档:是否涉及官网文档修改,如果涉及请及时提交资料到Doc仓

- Python UTs for exception_handler._merge_dicts (15 cases)
- Python UTs for ir_converter._parse_exception_config MCP branch (24 cases)
- Java UTs for McpNodeAdapter exception config (13 cases)
- application-manager.yml: add Mcp to exception-support-nodes
- ir_converter.py: set outputs_schema={} for MCP nodes (Bug openJiuwen-ai#4)
- flow.const.ts: add Mcp to EXCEPTION_PORT_NODE (Bug openJiuwen-ai#5)
- node.type.ts: add exception_process to IMcpNode.configs (Bug openJiuwen-ai#1)
- exception-handling.component.ts: MCP default template + isError:true + fallback for all node types (Bug openJiuwen-ai#7)
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@openjiuwen-collaboration-bot

openjiuwen-collaboration-bot Bot commented Aug 14, 2026

Copy link
Copy Markdown

head_sha: 95cd8285db64733f131f0523dc614a75b66d909a

变更摘要

本 PR 为 MCP 节点新增异常处理能力,贯穿后端与前端:后端在 IR 转换阶段对 jiuwen.mcpjiuwen.flowMcp 节点特殊处理 outputs_schema,修复 exception_handler.py_merge_dictsoutputs_schema 为空时丢失 default_outputs 字段的问题,并将 Mcp 加入后端配置及前端 EXCEPTION_PORT_NODE 的支持列表;前端在 MCP 服务弹窗中集成异常处理组件,同时补充相关单元测试。

主要改动

  • MCP 节点 outputs_schema 特殊处理ir_converter.py_parse_exception_configjiuwen.mcpjiuwen.flowMcp 节点将 outputs_schema 置空,跳过 schema 提取,使错误恢复结果(defaultOutputs)直接透传。
  • _merge_dicts 合并逻辑修复exception_handler.py 中改为遍历 default.items(),并在 default 中存在而 origin 中没有的 key 时保留该字段,确保 MCP 节点 outputs_schema 为空时 default_outputs 的所有内容不会丢失。
  • 后端与前端启用 MCP 异常处理application-manager.ymlworkflow.exception-support-nodes 及前端 flow.const.tsEXCEPTION_PORT_NODE 均新增 Mcp,使 MCP 节点纳入异常处理支持范围。
  • 前端 MCP 弹窗集成异常处理组件mcp-service-modal.component.html 引入 <exception-handling>mcp-service-modal.component.ts 增加 @ViewChild('exceptionHandling') 并在保存时将字符串形式的 default_outputs 通过 JSON.parse 转为对象;node.type.tsIMcpNode 新增 exception_process 字段。
  • 异常处理组件逻辑调整与模板补充exception-handling.component.ts 对所有节点类型保证 default_outputs 为字符串、为 Mcp 节点生成 content/isError 默认模板、并在 handle_typeDEFAULT_OUTPUTS 时补默认值;.html 将超时与 Monaco 编辑器的 (blur) 改为 (ngModelChange)
  • 新增单元测试:新增 test_exception_handler_mcp.pytest_ir_converter_mcp_exception.pyMcpNodeAdapterTest.java,覆盖 MCP 异常处理的合并逻辑、outputs_schema 置空、参数透传与超时/重试边界校验。

@openjiuwen-collaboration-bot

openjiuwen-collaboration-bot Bot commented Aug 14, 2026

Copy link
Copy Markdown

head_sha: 95cd8285db64733f131f0523dc614a75b66d909a

代码审查

✅ 未发现问题

@openjiuwen-collaboration-bot

Copy link
Copy Markdown

head_sha: 95cd8285db64733f131f0523dc614a75b66d909a

TASK STATUS DETAILS
CodeCheck ❌FAILED Click here
AntiPoison ❌FAILED Click here
Software Composition Analysis ❌FAILED Click here
Npm Build ✅SUCCESS See CHECK tab
Ruff Check ✅SUCCESS See CHECK tab
UT测试 ✅SUCCESS 点此跳转

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants