From cc46115a2633ce0aa0e6b569d6da7b4cd4796d3a Mon Sep 17 00:00:00 2001 From: imeepos Date: Tue, 15 Jul 2025 13:40:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=B4=A0=E6=9D=90?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E6=97=B6model=5Fid=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=E5=B9=B6=E6=B7=BB=E5=8A=A0=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复异步导入函数process_single_file_with_full_logic未使用model_id参数的问题 - 更新函数签名以正确传递model_id参数 - 在素材创建时使用Material::new_with_model而不是Material::new - 在前端、Store层、后端各个环节添加详细的调试日志 - 确保model_id在整个导入流程中正确传递和使用 - 解决素材导入时选择模特但数据库中model_id为null的问题 --- .../src/presentation/commands/material_commands.rs | 10 ++++++++-- apps/desktop/src/components/MaterialImportDialog.tsx | 3 ++- apps/desktop/src/store/materialStore.ts | 4 ++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/apps/desktop/src-tauri/src/presentation/commands/material_commands.rs b/apps/desktop/src-tauri/src/presentation/commands/material_commands.rs index f47a4c5..48cc3c3 100644 --- a/apps/desktop/src-tauri/src/presentation/commands/material_commands.rs +++ b/apps/desktop/src-tauri/src/presentation/commands/material_commands.rs @@ -137,6 +137,7 @@ async fn import_materials_with_tauri_events( &request.project_id, file_path, &config, + request.model_id.clone(), app_handle.clone(), ).await { Ok(Some(material)) => { @@ -197,6 +198,7 @@ async fn process_single_file_with_full_logic( project_id: &str, file_path: &str, config: &MaterialProcessingConfig, + model_id: Option, app_handle: tauri::AppHandle, ) -> Result, anyhow::Error> { use anyhow::anyhow; @@ -244,14 +246,18 @@ async fn process_single_file_with_full_logic( // 确定素材类型 let material_type = MaterialType::from_extension(extension); - // 创建素材对象 - let mut material = Material::new( + // 添加调试日志 + println!("Creating material with model_id: {:?}", model_id); + + // 创建素材对象(带模特绑定) + let mut material = Material::new_with_model( project_id.to_string(), file_name.clone(), file_path.to_string(), file_size, md5_hash, material_type.clone(), + model_id, ); // 保存到数据库 diff --git a/apps/desktop/src/components/MaterialImportDialog.tsx b/apps/desktop/src/components/MaterialImportDialog.tsx index 60ea0d5..2f812f9 100644 --- a/apps/desktop/src/components/MaterialImportDialog.tsx +++ b/apps/desktop/src/components/MaterialImportDialog.tsx @@ -210,7 +210,8 @@ export const MaterialImportDialog: React.FC = ({ model_id: selectedModelId || undefined, }; - console.log('开始异步导入:', request); + console.log('前端准备导入,选择的模特ID:', selectedModelId); + console.log('前端导入请求:', request); // 使用异步导入,进度更新和完成状态完全通过事件监听器处理 await importMaterialsAsync(request); diff --git a/apps/desktop/src/store/materialStore.ts b/apps/desktop/src/store/materialStore.ts index ba06aca..dcf285e 100644 --- a/apps/desktop/src/store/materialStore.ts +++ b/apps/desktop/src/store/materialStore.ts @@ -139,6 +139,9 @@ export const useMaterialStore = create((set, get) => ({ // 异步导入素材(新版本,支持实时进度) importMaterialsAsync: async (request: CreateMaterialRequest) => { + console.log('Store层接收到导入请求:', request); + console.log('Store层model_id:', request.model_id); + set({ isImporting: true, error: null, importProgress: { current_file: '', processed_count: 0, @@ -148,6 +151,7 @@ export const useMaterialStore = create((set, get) => ({ }}); try { + console.log('Store层调用Tauri命令,参数:', { request }); const result = await invoke('import_materials_async', { request }); // 更新素材列表