From 5c6a940b9c1bb5ce9e22b820bad35b43a75b7422 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:49:56 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A8=B3=E5=AE=9A=E8=81=94=E5=90=88=E8=AF=86?= =?UTF-8?q?=E5=88=AB=E5=9B=BE=E7=89=87=E4=B8=8A=E4=B8=8B=E6=96=87=E9=A1=BA?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 页面角色优先作为 ROOT 其余界面图按 ID 排序保持请求可复现 --- .../commands/recognition_and_binding.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/apps/ai-game-creator-shell/src-tauri/src/ui_editor/commands/recognition_and_binding.rs b/apps/ai-game-creator-shell/src-tauri/src/ui_editor/commands/recognition_and_binding.rs index 27bf1f9f8..dee6b9573 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/ui_editor/commands/recognition_and_binding.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/ui_editor/commands/recognition_and_binding.rs @@ -595,7 +595,22 @@ pub(crate) async fn recognition_and_binding_impl_with_provider( if state.ui_design_images.len() > MAX_REFERENCES { return Err("界面图最多 4 张".to_string()); } - let context_ids = state.ui_design_images.keys().cloned().collect::>(); + let mut context_ids = state.ui_design_images.keys().cloned().collect::>(); + context_ids.sort_by(|left, right| { + let left_is_page = state + .ui_design_images + .get(left) + .and_then(|image| image.metadata.role) + == Some(crate::ui_editor::resource::ui_design_image::UIDesignImageRole::Page); + let right_is_page = state + .ui_design_images + .get(right) + .and_then(|image| image.metadata.role) + == Some(crate::ui_editor::resource::ui_design_image::UIDesignImageRole::Page); + right_is_page + .cmp(&left_is_page) + .then_with(|| left.as_str().cmp(right.as_str())) + }); let root = Path::new(project_path.trim()); let mut parts = Vec::with_capacity(state.ui_design_images.len() * 2 + state.sprite_assets.len() * 2 + 2);