From 5a31809e21c9cf2dca4aa756a19dc8fee985e469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Sat, 5 Sep 2026 12:44:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=81=94=E5=90=88=E6=A6=82?= =?UTF-8?q?=E8=A7=88=E7=8A=B6=E6=80=81=E5=AE=9A=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 结构问题高亮 layout_status 组件问题高亮 components_status --- .../RecognitionAndBindingOverview.tsx | 19 ++++++++++++++----- .../src/view/ui-editor/index.tsx | 4 ++-- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/apps/ai-game-creator-shell/src/view/ui-editor/components/RecognitionAndBindingOverview.tsx b/apps/ai-game-creator-shell/src/view/ui-editor/components/RecognitionAndBindingOverview.tsx index ee990c6ef..bb885f1c5 100644 --- a/apps/ai-game-creator-shell/src/view/ui-editor/components/RecognitionAndBindingOverview.tsx +++ b/apps/ai-game-creator-shell/src/view/ui-editor/components/RecognitionAndBindingOverview.tsx @@ -5,6 +5,7 @@ import { nodeHasBlockedComponents, nodeNeedsComponentReview, } from '../../../features/ui-editor/bindingOverview'; +import type { StageStatusField } from '../../../features/ui-editor/stageStatusOverview'; import { getStageStatusOverview, isBlocked, @@ -23,7 +24,11 @@ export function RecognitionAndBindingOverview({ }: { uiTrees: UITree[]; sprites: Record; - onFocusStatusNode: (treeId: UIDesignImageId, nodeId: NodeId) => void; + onFocusStatusNode: ( + treeId: UIDesignImageId, + nodeId: NodeId, + field: StageStatusField, + ) => void; }) { const recognition = useMemo( () => getStageStatusOverview(uiTrees, 'layout_status'), @@ -35,7 +40,8 @@ export function RecognitionAndBindingOverview({ ); const layoutAttentionCycle = useUiTreeNodeCycle({ uiTrees, - onFocusNode: onFocusStatusNode, + onFocusNode: (treeId, nodeId) => + onFocusStatusNode(treeId, nodeId, 'layout_status'), matches: ({ node }) => { const status = node.metadata.layout_status; return isBlocked(status) || isNeedReview(status); @@ -43,17 +49,20 @@ export function RecognitionAndBindingOverview({ }); const layoutBlockedCycle = useUiTreeNodeCycle({ uiTrees, - onFocusNode: onFocusStatusNode, + onFocusNode: (treeId, nodeId) => + onFocusStatusNode(treeId, nodeId, 'layout_status'), matches: ({ node }) => isBlocked(node.metadata.layout_status), }); const componentAttentionCycle = useUiTreeNodeCycle({ uiTrees, - onFocusNode: onFocusStatusNode, + onFocusNode: (treeId, nodeId) => + onFocusStatusNode(treeId, nodeId, 'components_status'), matches: nodeNeedsComponentReview, }); const componentBlockedCycle = useUiTreeNodeCycle({ uiTrees, - onFocusNode: onFocusStatusNode, + onFocusNode: (treeId, nodeId) => + onFocusStatusNode(treeId, nodeId, 'components_status'), matches: nodeHasBlockedComponents, }); diff --git a/apps/ai-game-creator-shell/src/view/ui-editor/index.tsx b/apps/ai-game-creator-shell/src/view/ui-editor/index.tsx index cdd3e1c92..231376faf 100644 --- a/apps/ai-game-creator-shell/src/view/ui-editor/index.tsx +++ b/apps/ai-game-creator-shell/src/view/ui-editor/index.tsx @@ -274,9 +274,9 @@ export default function UiEditorPage({ { + onFocusStatusNode={(treeId, nodeId, field) => { session.input.focusNode(treeId, nodeId); - session.input.highlightStatusField(nodeId, 'layout_status'); + session.input.highlightStatusField(nodeId, field); }} /> ) : (