fix: 修复AI分类后文件移动失败的问题

问题修复:
- 添加详细的调试日志来诊断文件移动失败的原因
- 修复项目ID不匹配导致的文件移动失败问题
- 增强项目ID验证和错误处理逻辑

 技术改进:
- 在创建分类任务时验证项目ID匹配性
- 在移动文件时添加详细的调试信息
- 支持项目ID不匹配时的自动修复逻辑

 问题诊断:
- 发现素材的project_id与请求的project_id不匹配
- 添加了项目存在性验证
- 提供了更清晰的错误信息和日志输出
This commit is contained in:
imeepos 2025-07-14 15:00:41 +08:00
parent 483ea64413
commit 7210c15ffd
1 changed files with 25 additions and 1 deletions

View File

@ -40,10 +40,29 @@ impl VideoClassificationService {
/// 为素材创建批量分类任务
pub async fn create_batch_classification_tasks(&self, request: BatchClassificationRequest) -> Result<Vec<VideoClassificationTask>> {
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))?;