提取工作流完成状态上报逻辑

统一成功与失败分支的提示拼接、状态更新和终态通知

保持三个工作流步骤现有消息与状态行为不变
This commit is contained in:
2026-09-04 18:06:03 +08:00
parent f029992083
commit efd67911c9
@@ -258,6 +258,17 @@ export function useUiEditorSession(
const [completionNotice, setCompletionNotice] =
useState<WorkflowCompletionNotice | null>(null);
function reportWorkflowCompletion(
step: UiEditorStepId,
outcome: WorkflowCompletionNotice['outcome'],
rawMessage: string,
setStatus: (message: string) => void,
) {
const message = appendWorkflowCheckPrompt(rawMessage);
setStatus(message);
setCompletionNotice({ step, outcome, message });
}
useEffect(() => {
setActiveStep(initialStep);
setFurthestStepIndex(normalizedInitialFurthestStepIndex);
@@ -974,26 +985,20 @@ export function useUiEditorSession(
);
editor.replaceState(applyUiDesignSuggestions(snapshot, suggestions));
setHasSuggested(true);
const message = appendWorkflowCheckPrompt(
reportWorkflowCompletion(
'reference-analysis',
'success',
`参考图分析完成:已应用 ${suggestions.length} 条参考图语义建议`,
setSuggestionStatus,
);
setSuggestionStatus(message);
setCompletionNotice({
step: 'reference-analysis',
outcome: 'success',
message,
});
});
} catch (cause) {
const message = appendWorkflowCheckPrompt(
reportWorkflowCompletion(
'reference-analysis',
'failure',
cause instanceof Error ? cause.message : String(cause),
setSuggestionStatus,
);
setSuggestionStatus(message);
setCompletionNotice({
step: 'reference-analysis',
outcome: 'failure',
message,
});
} finally {
setIsSuggesting(false);
}
@@ -1018,26 +1023,20 @@ export function useUiEditorSession(
nextState.ui_trees,
'layout_status',
);
const message = appendWorkflowCheckPrompt(
reportWorkflowCompletion(
'structure-recognition',
'success',
`界面结构识别完成:已替换 ${result.ui_trees.length} 棵界面树,待检查 ${overview.needsAttention} 项(必须修复 ${overview.blocked} 项)`,
setRecognitionStatus,
);
setRecognitionStatus(message);
setCompletionNotice({
step: 'structure-recognition',
outcome: 'success',
message,
});
});
} catch (cause) {
const message = appendWorkflowCheckPrompt(
reportWorkflowCompletion(
'structure-recognition',
'failure',
cause instanceof Error ? cause.message : String(cause),
setRecognitionStatus,
);
setRecognitionStatus(message);
setCompletionNotice({
step: 'structure-recognition',
outcome: 'failure',
message,
});
} finally {
setIsRecognizing(false);
}
@@ -1092,27 +1091,21 @@ export function useUiEditorSession(
history: index < batches.length - 1 ? 'skip' : 'record',
});
}
const message = appendWorkflowCheckPrompt(
reportWorkflowCompletion(
'visual-binding',
'success',
`视觉素材绑定完成:已处理 ${batches.length}/${batches.length} 个批次`,
setBindingStatus,
);
setBindingStatus(message);
setHasBound(true);
setCompletionNotice({
step: 'visual-binding',
outcome: 'success',
message,
});
});
} catch (cause) {
const message = appendWorkflowCheckPrompt(
reportWorkflowCompletion(
'visual-binding',
'failure',
cause instanceof Error ? cause.message : String(cause),
setBindingStatus,
);
setBindingStatus(message);
setCompletionNotice({
step: 'visual-binding',
outcome: 'failure',
message,
});
} finally {
setIsBinding(false);
}