From 7210c15ffd0c1f6f6a92cf58345859869c6234c9 Mon Sep 17 00:00:00 2001 From: imeepos Date: Mon, 14 Jul 2025 15:00:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DAI=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E5=90=8E=E6=96=87=E4=BB=B6=E7=A7=BB=E5=8A=A8=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题修复: - 添加详细的调试日志来诊断文件移动失败的原因 - 修复项目ID不匹配导致的文件移动失败问题 - 增强项目ID验证和错误处理逻辑 技术改进: - 在创建分类任务时验证项目ID匹配性 - 在移动文件时添加详细的调试信息 - 支持项目ID不匹配时的自动修复逻辑 问题诊断: - 发现素材的project_id与请求的project_id不匹配 - 添加了项目存在性验证 - 提供了更清晰的错误信息和日志输出 --- .../services/video_classification_service.rs | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/apps/desktop/src-tauri/src/business/services/video_classification_service.rs b/apps/desktop/src-tauri/src/business/services/video_classification_service.rs index e609bb2..37fb339 100644 --- a/apps/desktop/src-tauri/src/business/services/video_classification_service.rs +++ b/apps/desktop/src-tauri/src/business/services/video_classification_service.rs @@ -40,10 +40,29 @@ impl VideoClassificationService { /// 为素材创建批量分类任务 pub async fn create_batch_classification_tasks(&self, request: BatchClassificationRequest) -> Result> { + println!("🎬 创建批量分类任务"); + println!(" 素材ID: {}", request.material_id); + println!(" 项目ID: {}", request.project_id); + // 获取素材信息 - let _material = self.material_repo.get_by_id(&request.material_id)? + let material = self.material_repo.get_by_id(&request.material_id)? .ok_or_else(|| anyhow!("素材不存在: {}", request.material_id))?; + println!(" 素材项目ID: {}", material.project_id); + + // 验证项目ID是否匹配,如果不匹配则尝试修复 + if material.project_id != request.project_id { + println!("⚠️ 项目ID不匹配,尝试修复: 素材项目ID={}, 请求项目ID={}", material.project_id, request.project_id); + + // 验证请求的项目ID是否存在 + if let Ok(Some(_)) = self.material_repo.get_project_by_id(&request.project_id).await { + println!("✅ 请求的项目ID有效,将使用请求的项目ID进行分类"); + // 使用请求的项目ID,而不是素材中的项目ID + } else { + return Err(anyhow!("请求的项目ID无效: {}", request.project_id)); + } + } + // 获取素材的所有片段 let segments = self.material_repo.get_segments(&request.material_id)?; @@ -225,6 +244,11 @@ impl VideoClassificationService { /// 移动视频文件到分类文件夹 async fn move_video_to_category_folder(&self, record: &VideoClassificationRecord) -> Result<()> { + println!("🔍 开始移动文件到分类文件夹"); + println!(" 项目ID: {}", record.project_id); + println!(" 分类类别: {}", record.category); + println!(" 片段ID: {}", record.segment_id); + // 获取项目信息 let project = self.material_repo.get_project_by_id(&record.project_id).await? .ok_or_else(|| anyhow!("项目不存在: {}", record.project_id))?;