diff --git a/react-ui/src/pages/Pipeline/Info/index.jsx b/react-ui/src/pages/Pipeline/Info/index.jsx index 27003d68..4e86dbbb 100644 --- a/react-ui/src/pages/Pipeline/Info/index.jsx +++ b/react-ui/src/pages/Pipeline/Info/index.jsx @@ -110,7 +110,7 @@ const EditPipeline = () => { // console.log(data); const errorNode = data.nodes.find((item) => item.formError === true); if (errorNode) { - message.error(`【${errorNode.label}】节点必填项必须配置`); + message.error(`【${errorNode.label}】节点配置验证失败`); const graphNode = graph.findById(errorNode.id); if (graphNode) { openNodeDrawer(graphNode, true); diff --git a/react-ui/src/pages/Pipeline/components/PipelineNodeDrawer/index.tsx b/react-ui/src/pages/Pipeline/components/PipelineNodeDrawer/index.tsx index 44b35d2b..9279e76d 100644 --- a/react-ui/src/pages/Pipeline/components/PipelineNodeDrawer/index.tsx +++ b/react-ui/src/pages/Pipeline/components/PipelineNodeDrawer/index.tsx @@ -19,6 +19,7 @@ import { openAntdModal } from '@/utils/modal'; import { to } from '@/utils/promise'; import { INode } from '@antv/g6'; import { Button, Drawer, Form, Input, MenuProps } from 'antd'; +import { RuleObject } from 'antd/es/form'; import { NamePath } from 'antd/es/form/interface'; import { forwardRef, useImperativeHandle, useState } from 'react'; import PropsLabel from '../PropsLabel'; @@ -309,16 +310,41 @@ const PipelineNodeParameter = forwardRef(({ onFormChange }: PipelineNodeParamete ); }; + // 模型部署-服务版本验证 + const serviceVersionValidator = (_rule: RuleObject, value: any) => { + // 输入参数值都是对象,如果是手动输入,要求 /^[a-zA-Z0-9._-]+$/ + if ( + typeof value === 'object' && + value && + !value.fromSelect && + value.value && + !/^[a-zA-Z0-9._-]+$/.test(value.value) + ) { + return Promise.reject('服务版本只支持字母、数字、点(.)、下划线(_)、中横线(-)'); + } + + return Promise.resolve(); + }; + // 必填项校验规则 const getFormRules = (item: { key: string; value: PipelineNodeModelParameter }) => { - return item.value.require + const id = form.getFieldValue('id') as string; + const rules = item.value.require ? [ { validator: requiredValidator, - message: '必填项', }, ] : []; + + // 模型部署-服务版本验证 + if (id.startsWith('model-deploy') && item.key === '--version') { + rules.push({ + validator: serviceVersionValidator, + }); + } + + return rules; }; // 控制策略