diff --git a/apps/desktop/src-tauri/src/data/models/outfit_image.rs b/apps/desktop/src-tauri/src/data/models/outfit_image.rs index f7b8af9..82358b2 100644 --- a/apps/desktop/src-tauri/src/data/models/outfit_image.rs +++ b/apps/desktop/src-tauri/src/data/models/outfit_image.rs @@ -205,6 +205,7 @@ impl OutfitImage { /// 穿搭图片生成请求 #[derive(Debug, Clone, Serialize, Deserialize)] pub struct OutfitImageGenerationRequest { + pub record_id: Option, // 指定要操作的记录ID(用于批量任务精确匹配) pub model_id: String, pub model_image_id: String, // 选择的模特形象图片ID pub product_image_paths: Vec, // 商品图片路径列表 diff --git a/apps/desktop/src-tauri/src/data/repositories/model_repository.rs b/apps/desktop/src-tauri/src/data/repositories/model_repository.rs index f557a0a..72f9461 100644 --- a/apps/desktop/src-tauri/src/data/repositories/model_repository.rs +++ b/apps/desktop/src-tauri/src/data/repositories/model_repository.rs @@ -118,7 +118,6 @@ impl ModelRepository { result } None => { - println!("get_by_id 只读连接被占用,使用基本方法"); // 如果只读连接被占用,使用不加载照片的基本方法 return self.get_basic_by_id(id); } @@ -486,7 +485,6 @@ impl ModelRepository { match self.database.get_best_read_connection() { Ok(conn) => { let photos = self.execute_photo_query(&conn, model_id)?; - println!("get_photos 执行完成,返回 {} 张照片", photos.len()); Ok(photos) } Err(e) => { diff --git a/apps/desktop/src-tauri/src/presentation/commands/outfit_image_commands.rs b/apps/desktop/src-tauri/src/presentation/commands/outfit_image_commands.rs index 1c7d372..3ea0e79 100644 --- a/apps/desktop/src-tauri/src/presentation/commands/outfit_image_commands.rs +++ b/apps/desktop/src-tauri/src/presentation/commands/outfit_image_commands.rs @@ -663,6 +663,7 @@ pub async fn execute_outfit_image_task( // 构建生成请求 let request = OutfitImageGenerationRequest { + record_id: Some(record_id.clone()), // 传递记录ID用于精确匹配 model_id: record.model_id.clone(), model_image_id: record.model_image_id.clone(), product_image_paths: record.product_images.iter().map(|img| img.file_path.clone()).collect(), @@ -854,17 +855,28 @@ async fn perform_outfit_image_generation( // 创建仓库实例 let outfit_repo = OutfitImageRepository::new(database.clone()); - // 根据model_id和model_image_id获取生成记录 - let records = outfit_repo - .get_records_by_model_id(&request.model_id) - .map_err(|e| format!("获取生成记录失败: {}", e))?; + // 获取记录ID:优先使用传入的record_id,否则通过查找获取(向后兼容) + let record_id = if let Some(id) = &request.record_id { + id.clone() + } else { + // 兼容旧逻辑:根据model_id和model_image_id获取生成记录 + let records = outfit_repo + .get_records_by_model_id(&request.model_id) + .map_err(|e| format!("获取生成记录失败: {}", e))?; - // 找到匹配的记录(最新的一个) - let record = records.into_iter() - .find(|r| r.model_image_id == request.model_image_id) - .ok_or_else(|| "未找到对应的生成记录".to_string())?; + // 找到匹配的记录(最新的一个) + let record = records.into_iter() + .find(|r| r.model_image_id == request.model_image_id) + .ok_or_else(|| "未找到对应的生成记录".to_string())?; - let record_id = record.id.clone(); + record.id.clone() + }; + + // 验证记录是否存在 + let record = outfit_repo + .get_record_by_id(&record_id) + .map_err(|e| format!("获取记录失败: {}", e))? + .ok_or_else(|| format!("记录不存在: {}", record_id))?; // 初始化错误处理服务 let error_service = ErrorHandlingService::new(); diff --git a/apps/desktop/src/types/outfitImage.ts b/apps/desktop/src/types/outfitImage.ts index e484c5b..53b0a0a 100644 --- a/apps/desktop/src/types/outfitImage.ts +++ b/apps/desktop/src/types/outfitImage.ts @@ -51,6 +51,7 @@ export interface OutfitImage { } export interface OutfitImageGenerationRequest { + record_id?: string; // 指定要操作的记录ID(用于批量任务精确匹配) model_id: string; model_image_id: string; // 选择的模特形象图片ID product_image_paths: string[]; // 商品图片路径列表