diff --git a/client/src/constants/flow/ModuleTemplate.ts b/client/src/constants/flow/ModuleTemplate.ts index 860eac7f2..6ad0ecb8d 100644 --- a/client/src/constants/flow/ModuleTemplate.ts +++ b/client/src/constants/flow/ModuleTemplate.ts @@ -407,13 +407,7 @@ export const ContextExtractModule: FlowModuleTemplateType = { type: FlowInputItemTypeEnum.custom, label: '目标字段', description: "由 '描述' 和 'key' 组成一个目标字段,可提取多个目标字段", - value: [ - { - key: 'key', - desc: '目标字段', - required: true - } - ] + value: [] } ], outputs: [ @@ -438,13 +432,6 @@ export const ContextExtractModule: FlowModuleTemplateType = { valueType: FlowValueTypeEnum.string, type: FlowOutputItemTypeEnum.source, targets: [] - }, - { - key: 'key', - label: '提取结果-目标字段', - valueType: FlowValueTypeEnum.string, - type: FlowOutputItemTypeEnum.source, - targets: [] } ] }; diff --git a/client/src/pages/app/detail/components/AdEdit/components/Nodes/NodeHttp.tsx b/client/src/pages/app/detail/components/AdEdit/components/Nodes/NodeHttp.tsx index 0c443eae4..2a9493fd1 100644 --- a/client/src/pages/app/detail/components/AdEdit/components/Nodes/NodeHttp.tsx +++ b/client/src/pages/app/detail/components/AdEdit/components/Nodes/NodeHttp.tsx @@ -34,7 +34,7 @@ const NodeHttp = ({ key, valueType: FlowValueTypeEnum.string, type: FlowInputItemTypeEnum.target, - label: 'New Param', + label: `入参${inputs.length - 1}`, edit: true } }); @@ -59,7 +59,7 @@ const NodeHttp = ({ value: outputs.concat([ { key, - label: '出参1', + label: `出参${outputs.length}`, valueType: FlowValueTypeEnum.string, type: FlowOutputItemTypeEnum.source, edit: true, diff --git a/client/src/pages/app/detail/components/AdEdit/components/modules/ButtonEdge.tsx b/client/src/pages/app/detail/components/AdEdit/components/modules/ButtonEdge.tsx index 18ac625b2..85d9941be 100644 --- a/client/src/pages/app/detail/components/AdEdit/components/modules/ButtonEdge.tsx +++ b/client/src/pages/app/detail/components/AdEdit/components/modules/ButtonEdge.tsx @@ -3,7 +3,7 @@ import { BaseEdge, EdgeLabelRenderer, EdgeProps, getBezierPath } from 'reactflow import { Flex } from '@chakra-ui/react'; import MyIcon from '@/components/Icon'; -export default function ButtonEdge({ +const ButtonEdge = ({ id, sourceX, sourceY, @@ -16,7 +16,7 @@ export default function ButtonEdge({ data }: EdgeProps<{ onDelete: (id: string) => void; -}>) { +}>) => { const [edgePath, labelX, labelY] = getBezierPath({ sourceX, sourceY, @@ -53,4 +53,6 @@ export default function ButtonEdge({ ); -} +}; + +export default React.memo(ButtonEdge); diff --git a/client/src/pages/app/detail/components/AdEdit/components/modules/Container.tsx b/client/src/pages/app/detail/components/AdEdit/components/modules/Container.tsx index 645ab8012..f03ff3612 100644 --- a/client/src/pages/app/detail/components/AdEdit/components/modules/Container.tsx +++ b/client/src/pages/app/detail/components/AdEdit/components/modules/Container.tsx @@ -10,4 +10,4 @@ const Container = ({ children, ...props }: BoxProps) => { ); }; -export default Container; +export default React.memo(Container); diff --git a/client/src/pages/app/detail/components/AdEdit/components/modules/Divider.tsx b/client/src/pages/app/detail/components/AdEdit/components/modules/Divider.tsx index b4f7db0b7..37be22572 100644 --- a/client/src/pages/app/detail/components/AdEdit/components/modules/Divider.tsx +++ b/client/src/pages/app/detail/components/AdEdit/components/modules/Divider.tsx @@ -19,4 +19,4 @@ const Divider = ({ text }: { text: 'Input' | 'Output' | string }) => { ); }; -export default Divider; +export default React.memo(Divider); diff --git a/client/src/pages/app/detail/components/AdEdit/components/modules/Label.tsx b/client/src/pages/app/detail/components/AdEdit/components/modules/Label.tsx index 5aaa0a161..e2b6010e1 100644 --- a/client/src/pages/app/detail/components/AdEdit/components/modules/Label.tsx +++ b/client/src/pages/app/detail/components/AdEdit/components/modules/Label.tsx @@ -27,4 +27,4 @@ const Label = ({ ); -export default Label; +export default React.memo(Label); diff --git a/client/src/pages/app/detail/components/AdEdit/components/render/RenderOutput.tsx b/client/src/pages/app/detail/components/AdEdit/components/render/RenderOutput.tsx index 4ffe130c2..396530eb4 100644 --- a/client/src/pages/app/detail/components/AdEdit/components/render/RenderOutput.tsx +++ b/client/src/pages/app/detail/components/AdEdit/components/render/RenderOutput.tsx @@ -145,4 +145,4 @@ const RenderOutput = ({ ); }; -export default RenderOutput; +export default React.memo(RenderOutput); diff --git a/client/src/pages/app/detail/components/AdEdit/index.tsx b/client/src/pages/app/detail/components/AdEdit/index.tsx index 608a9fe61..cf0ac5531 100644 --- a/client/src/pages/app/detail/components/AdEdit/index.tsx +++ b/client/src/pages/app/detail/components/AdEdit/index.tsx @@ -344,7 +344,6 @@ const AppEdit = ({ app, fullScreen, onFullScreen }: Props) => { const { mutate: onclickSave, isLoading } = useRequest({ mutationFn: () => { - console.log(flow2AppModules(), '===='); return updateAppDetail(app._id, { modules: flow2AppModules() }); diff --git a/client/src/utils/adapt.ts b/client/src/utils/adapt.ts index 0285966b9..f38116471 100644 --- a/client/src/utils/adapt.ts +++ b/client/src/utils/adapt.ts @@ -80,6 +80,11 @@ export const appModule2FlowNode = ({ (input) => input.label && !template.inputs.find((item) => item.key === input.key) ) ); + const concatOutputs = item.outputs.concat( + template.outputs.filter( + (templateOutput) => !item.outputs.find((item) => item.key === templateOutput.key) + ) + ); // replace item data const moduleItem: FlowModuleItemType = { @@ -93,7 +98,7 @@ export const appModule2FlowNode = ({ value: itemInput.value }; }), - outputs: item.outputs.map((output) => { + outputs: concatOutputs.map((output) => { // unChange outputs const templateOutput = template.outputs.find((item) => item.key === output.key); diff --git a/client/src/utils/app.ts b/client/src/utils/app.ts index 61657b5fc..996f2048a 100644 --- a/client/src/utils/app.ts +++ b/client/src/utils/app.ts @@ -328,7 +328,18 @@ const simpleChatTemplate = (formData: EditFormType): AppModuleItemType[] => [ inputs: chatModelInput(formData), outputs: [ { - key: TaskResponseKeyEnum.answerText, + key: 'answerText', + label: '模型回复', + description: '直接响应,无需配置', + type: 'hidden', + targets: [] + }, + { + key: 'finish', + label: '回复结束', + description: 'AI 回复完成后触发', + valueType: 'boolean', + type: 'source', targets: [] } ], @@ -518,7 +529,18 @@ const kbTemplate = (formData: EditFormType): AppModuleItemType[] => [ inputs: chatModelInput(formData), outputs: [ { - key: TaskResponseKeyEnum.answerText, + key: 'answerText', + label: '模型回复', + description: '直接响应,无需配置', + type: 'hidden', + targets: [] + }, + { + key: 'finish', + label: '回复结束', + description: 'AI 回复完成后触发', + valueType: 'boolean', + type: 'source', targets: [] } ],