From d21cf87bb601ea19f6149a255281c72c804451ba Mon Sep 17 00:00:00 2001 From: JzoNg Date: Mon, 12 Jan 2026 15:12:08 +0800 Subject: [PATCH] add check valid for human input --- .../workflow/nodes/human-input/default.ts | 13 +++++++++++++ web/i18n/en-US/workflow.json | 2 ++ web/i18n/zh-Hans/workflow.json | 2 ++ 3 files changed, 17 insertions(+) diff --git a/web/app/components/workflow/nodes/human-input/default.ts b/web/app/components/workflow/nodes/human-input/default.ts index b9b95ae1cc..97145a39fb 100644 --- a/web/app/components/workflow/nodes/human-input/default.ts +++ b/web/app/components/workflow/nodes/human-input/default.ts @@ -1,5 +1,6 @@ import type { NodeDefault, Var } from '../../types' import type { HumanInputNodeType } from './types' +import { splitByOutputVar } from '@/app/components/base/chat/chat/answer/human-input-content/utils' import { BlockClassificationEnum } from '@/app/components/workflow/block-selector/types' import { BlockEnum, VarType } from '@/app/components/workflow/types' import { genNodeMetaData } from '@/app/components/workflow/utils' @@ -21,6 +22,12 @@ const buildOutputVars = (variables: string[]): Var[] => { }) } +const checkInputFields = (formContent: string): boolean => { + const outputVarRegex = /\{\{#\$output\.[^#]+#\}\}/ + const contentList = splitByOutputVar(formContent) + return contentList.filter(content => outputVarRegex.test(content)).length > 0 +} + const nodeDefault: NodeDefault = { metaData, defaultValue: { @@ -39,6 +46,12 @@ const nodeDefault: NodeDefault = { if (!errorMessages && payload.delivery_methods.length > 0 && !payload.delivery_methods.some(method => method.enabled)) errorMessages = t(`${i18nPrefix}.noDeliveryMethodEnabled`, { ns: 'workflow' }) + if (!errorMessages && !payload.form_content.trim()) + errorMessages = t(`${i18nPrefix}.noFormContent`, { ns: 'workflow' }) + + if (!errorMessages && !checkInputFields(payload.form_content)) + errorMessages = t(`${i18nPrefix}.noFormContentInputField`, { ns: 'workflow' }) + if (!errorMessages && !payload.user_actions.length) errorMessages = t(`${i18nPrefix}.noUserActions`, { ns: 'workflow' }) diff --git a/web/i18n/en-US/workflow.json b/web/i18n/en-US/workflow.json index 0e84fe3e4b..f11b2ca8c8 100644 --- a/web/i18n/en-US/workflow.json +++ b/web/i18n/en-US/workflow.json @@ -558,6 +558,8 @@ "nodes.humanInput.editor.previewTip": "In preview mode, action buttons are not functional.", "nodes.humanInput.errorMsg.noDeliveryMethod": "Please select at least one delivery method", "nodes.humanInput.errorMsg.noDeliveryMethodEnabled": "Please enable at least one delivery method", + "nodes.humanInput.errorMsg.noFormContent": "Please add form content", + "nodes.humanInput.errorMsg.noFormContentInputField": "Please add at least one input field in form content", "nodes.humanInput.errorMsg.noUserActions": "Please add at least one user action", "nodes.humanInput.formContent.hotkeyTip": "Press to insert variable, to insert input field", "nodes.humanInput.formContent.preview": "Preview", diff --git a/web/i18n/zh-Hans/workflow.json b/web/i18n/zh-Hans/workflow.json index c9e2b797ec..50a485eb45 100644 --- a/web/i18n/zh-Hans/workflow.json +++ b/web/i18n/zh-Hans/workflow.json @@ -558,6 +558,8 @@ "nodes.humanInput.editor.previewTip": "在预览模式下,操作按钮无法使用。", "nodes.humanInput.errorMsg.noDeliveryMethod": "请至少选择一种提交方式", "nodes.humanInput.errorMsg.noDeliveryMethodEnabled": "请至少启用一种提交方式", + "nodes.humanInput.errorMsg.noFormContent": "请添加表单内容", + "nodes.humanInput.errorMsg.noFormContentInputField": "请在表单内容中添加至少一个输入字段", "nodes.humanInput.errorMsg.noUserActions": "请添加至少一个用户操作", "nodes.humanInput.formContent.hotkeyTip": "按 插入变量,按 插入输入字段", "nodes.humanInput.formContent.preview": "预览",