feat: Refactor NodeDebugResponse to utilize workflowInteractiveResponse for improved interactivity
This commit is contained in:
@@ -26,58 +26,15 @@ interface NodeDebugResponseProps {
|
||||
|
||||
const NodeDebugResponse = ({ nodeId, debugResult }: NodeDebugResponseProps) => {
|
||||
const { t } = useTranslation();
|
||||
const nodeList = useContextSelector(WorkflowContext, (v) => v.nodeList);
|
||||
|
||||
const node = useMemo(() => nodeList.find((node) => node.nodeId === nodeId), [nodeList, nodeId]);
|
||||
const firstInteractive = useMemo(() => {
|
||||
if (
|
||||
node &&
|
||||
node.flowNodeType === FlowNodeTypeEnum.userSelect &&
|
||||
!node.debugResult?.response?.userSelectResult
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
if (
|
||||
node &&
|
||||
node.flowNodeType === FlowNodeTypeEnum.formInput &&
|
||||
!node.debugResult?.response?.formInputResult
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}, [node]);
|
||||
const firstInteractive = debugResult?.workflowInteractiveResponse;
|
||||
|
||||
const { onChangeNode, onStopNodeDebug, onNextNodeDebug, workflowDebugData } = useContextSelector(
|
||||
WorkflowContext,
|
||||
(v) => v
|
||||
);
|
||||
|
||||
const interactive: UserSelectInteractive | UserInputInteractive | undefined = useMemo(() => {
|
||||
const description = node?.inputs?.find((input) => input.key === 'description')?.value;
|
||||
const userSelectOptions = node?.inputs?.find(
|
||||
(input) => input.key === 'userSelectOptions'
|
||||
)?.value;
|
||||
const formInputForms = node?.inputs?.find((input) => input.key === 'userInputForms')?.value;
|
||||
if (node?.flowNodeType === FlowNodeTypeEnum.userSelect) {
|
||||
return {
|
||||
type: 'userSelect',
|
||||
params: {
|
||||
description,
|
||||
userSelectOptions
|
||||
}
|
||||
};
|
||||
}
|
||||
if (node?.flowNodeType === FlowNodeTypeEnum.formInput) {
|
||||
return {
|
||||
type: 'userInput',
|
||||
params: {
|
||||
description,
|
||||
inputForm: formInputForms
|
||||
}
|
||||
};
|
||||
}
|
||||
return undefined;
|
||||
}, [node]);
|
||||
const interactive = debugResult?.workflowInteractiveResponse;
|
||||
|
||||
const { openConfirm, ConfirmModal } = useConfirm({
|
||||
content: t('common:core.workflow.Confirm stop debug')
|
||||
|
||||
@@ -638,19 +638,25 @@ const WorkflowContextProvider = ({
|
||||
|
||||
try {
|
||||
// 4. Run one step
|
||||
const { finishedEdges, finishedNodes, nextStepRunNodes, flowResponses, newVariables } =
|
||||
await postWorkflowDebug({
|
||||
nodes: runtimeNodes,
|
||||
edges: debugData.runtimeEdges,
|
||||
variables: {
|
||||
appId,
|
||||
cTime: formatTime2YMDHMW(),
|
||||
...debugData.variables
|
||||
},
|
||||
query, // 添加 query 参数
|
||||
history,
|
||||
appId
|
||||
});
|
||||
const {
|
||||
finishedEdges,
|
||||
finishedNodes,
|
||||
nextStepRunNodes,
|
||||
flowResponses,
|
||||
newVariables,
|
||||
workflowInteractiveResponse
|
||||
} = await postWorkflowDebug({
|
||||
nodes: runtimeNodes,
|
||||
edges: debugData.runtimeEdges,
|
||||
variables: {
|
||||
appId,
|
||||
cTime: formatTime2YMDHMW(),
|
||||
...debugData.variables
|
||||
},
|
||||
query, // 添加 query 参数
|
||||
history,
|
||||
appId
|
||||
});
|
||||
// 5. Store debug result
|
||||
const newStoreDebugData = {
|
||||
runtimeNodes: finishedNodes,
|
||||
@@ -659,10 +665,13 @@ const WorkflowContextProvider = ({
|
||||
nextRunNodes: nextStepRunNodes,
|
||||
variables: newVariables,
|
||||
query,
|
||||
history
|
||||
history,
|
||||
workflowInteractiveResponse: workflowInteractiveResponse
|
||||
};
|
||||
setWorkflowDebugData(newStoreDebugData);
|
||||
|
||||
if (workflowInteractiveResponse) {
|
||||
console.log('workflowInteractiveResponse', workflowInteractiveResponse);
|
||||
}
|
||||
// 6. selected entry node and Update entry node debug result
|
||||
setNodes((state) =>
|
||||
state.map((node) => {
|
||||
@@ -695,7 +704,8 @@ const WorkflowContextProvider = ({
|
||||
status: 'success',
|
||||
response: result,
|
||||
showResult: true,
|
||||
isExpired: false
|
||||
isExpired: false,
|
||||
workflowInteractiveResponse: workflowInteractiveResponse
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user