feat: reuse get vars inputs and http request url

This commit is contained in:
Joel
2024-04-01 18:33:17 +08:00
parent a42f26d857
commit ab2c112059
6 changed files with 45 additions and 43 deletions

View File

@ -51,7 +51,7 @@ const FormItem: FC<Props> = ({
if (typeof payload.label === 'object') {
const { nodeType, nodeName, variable } = payload.label
return (
<div className='flex items-center'>
<div className='h-full flex items-center'>
<div className='flex items-center'>
<div className='p-[1px]'>
<VarBlockIcon type={nodeType || BlockEnum.Start} />

View File

@ -1,11 +1,12 @@
import { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next'
import { unionBy } from 'lodash-es'
import {
useIsChatMode,
useNodeDataUpdate,
useWorkflow,
} from '@/app/components/workflow/hooks'
import { toNodeOutputVars } from '@/app/components/workflow/nodes/_base/components/variable/utils'
import { getNodeInfoById, toNodeOutputVars } from '@/app/components/workflow/nodes/_base/components/variable/utils'
import type { CommonNodeType, InputVar, ValueSelector, Var, Variable } from '@/app/components/workflow/types'
import { BlockEnum, InputVarType, NodeRunningStatus, VarType } from '@/app/components/workflow/types'
@ -22,7 +23,7 @@ import QuestionClassifyDefault from '@/app/components/workflow/nodes/question-cl
import HTTPDefault from '@/app/components/workflow/nodes/http/default'
import ToolDefault from '@/app/components/workflow/nodes/tool/default'
import VariableAssigner from '@/app/components/workflow/nodes/variable-assigner/default'
import { getInputVars as doGetInputVars } from '@/app/components/base/prompt-editor/constants'
const { checkValid: checkLLMValid } = LLMDefault
const { checkValid: checkKnowledgeRetrievalValid } = KnowledgeRetrievalDefault
const { checkValid: checkIfElseValid } = IfElseDefault
@ -83,6 +84,7 @@ const useOneStepRun = <T>({
const { getBeforeNodesInSameBranch } = useWorkflow() as any
const isChatMode = useIsChatMode()
const availableNodes = getBeforeNodesInSameBranch(id)
const allOutputVars = toNodeOutputVars(getBeforeNodesInSameBranch(id), isChatMode)
const getVar = (valueSelector: ValueSelector): Var | undefined => {
let res: Var | undefined
@ -232,10 +234,35 @@ const useOneStepRun = <T>({
return varInputs
}
const getInputVars = (textList: string[]) => {
const valueSelectors: ValueSelector[] = []
textList.forEach((text) => {
valueSelectors.push(...doGetInputVars(text))
})
const variables = unionBy(valueSelectors, item => item.join('.')).map((item) => {
const varInfo = getNodeInfoById(availableNodes, item[0])?.data
return {
label: {
nodeType: varInfo?.type,
nodeName: varInfo?.title || availableNodes[0]?.data.title, // default start node title
variable: item[item.length - 1],
},
variable: `#${item.join('.')}#`,
value_selector: item,
}
})
const varInputs = toVarInputs(variables)
return varInputs
}
return {
isShowSingleRun,
hideSingleRun,
toVarInputs,
getInputVars,
runningStatus,
isCompleted,
handleRun,