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 NodeDebugResponse = ({ nodeId, debugResult }: NodeDebugResponseProps) => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const nodeList = useContextSelector(WorkflowContext, (v) => v.nodeList);
|
|
||||||
|
|
||||||
const node = useMemo(() => nodeList.find((node) => node.nodeId === nodeId), [nodeList, nodeId]);
|
const firstInteractive = debugResult?.workflowInteractiveResponse;
|
||||||
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 { onChangeNode, onStopNodeDebug, onNextNodeDebug, workflowDebugData } = useContextSelector(
|
const { onChangeNode, onStopNodeDebug, onNextNodeDebug, workflowDebugData } = useContextSelector(
|
||||||
WorkflowContext,
|
WorkflowContext,
|
||||||
(v) => v
|
(v) => v
|
||||||
);
|
);
|
||||||
|
|
||||||
const interactive: UserSelectInteractive | UserInputInteractive | undefined = useMemo(() => {
|
const interactive = debugResult?.workflowInteractiveResponse;
|
||||||
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 { openConfirm, ConfirmModal } = useConfirm({
|
const { openConfirm, ConfirmModal } = useConfirm({
|
||||||
content: t('common:core.workflow.Confirm stop debug')
|
content: t('common:core.workflow.Confirm stop debug')
|
||||||
|
|||||||
@@ -638,19 +638,25 @@ const WorkflowContextProvider = ({
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
// 4. Run one step
|
// 4. Run one step
|
||||||
const { finishedEdges, finishedNodes, nextStepRunNodes, flowResponses, newVariables } =
|
const {
|
||||||
await postWorkflowDebug({
|
finishedEdges,
|
||||||
nodes: runtimeNodes,
|
finishedNodes,
|
||||||
edges: debugData.runtimeEdges,
|
nextStepRunNodes,
|
||||||
variables: {
|
flowResponses,
|
||||||
appId,
|
newVariables,
|
||||||
cTime: formatTime2YMDHMW(),
|
workflowInteractiveResponse
|
||||||
...debugData.variables
|
} = await postWorkflowDebug({
|
||||||
},
|
nodes: runtimeNodes,
|
||||||
query, // 添加 query 参数
|
edges: debugData.runtimeEdges,
|
||||||
history,
|
variables: {
|
||||||
appId
|
appId,
|
||||||
});
|
cTime: formatTime2YMDHMW(),
|
||||||
|
...debugData.variables
|
||||||
|
},
|
||||||
|
query, // 添加 query 参数
|
||||||
|
history,
|
||||||
|
appId
|
||||||
|
});
|
||||||
// 5. Store debug result
|
// 5. Store debug result
|
||||||
const newStoreDebugData = {
|
const newStoreDebugData = {
|
||||||
runtimeNodes: finishedNodes,
|
runtimeNodes: finishedNodes,
|
||||||
@@ -659,10 +665,13 @@ const WorkflowContextProvider = ({
|
|||||||
nextRunNodes: nextStepRunNodes,
|
nextRunNodes: nextStepRunNodes,
|
||||||
variables: newVariables,
|
variables: newVariables,
|
||||||
query,
|
query,
|
||||||
history
|
history,
|
||||||
|
workflowInteractiveResponse: workflowInteractiveResponse
|
||||||
};
|
};
|
||||||
setWorkflowDebugData(newStoreDebugData);
|
setWorkflowDebugData(newStoreDebugData);
|
||||||
|
if (workflowInteractiveResponse) {
|
||||||
|
console.log('workflowInteractiveResponse', workflowInteractiveResponse);
|
||||||
|
}
|
||||||
// 6. selected entry node and Update entry node debug result
|
// 6. selected entry node and Update entry node debug result
|
||||||
setNodes((state) =>
|
setNodes((state) =>
|
||||||
state.map((node) => {
|
state.map((node) => {
|
||||||
@@ -695,7 +704,8 @@ const WorkflowContextProvider = ({
|
|||||||
status: 'success',
|
status: 'success',
|
||||||
response: result,
|
response: result,
|
||||||
showResult: true,
|
showResult: true,
|
||||||
isExpired: false
|
isExpired: false,
|
||||||
|
workflowInteractiveResponse: workflowInteractiveResponse
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user