稳定联合识别图片上下文顺序

页面角色优先作为 ROOT

其余界面图按 ID 排序保持请求可复现
This commit is contained in:
2026-09-05 12:49:56 +08:00
parent 8df5ebff69
commit 5c6a940b9c
@@ -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::<Vec<_>>();
let mut context_ids = state.ui_design_images.keys().cloned().collect::<Vec<_>>();
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);