diff --git a/apps/desktop/src-tauri/src/data/repositories/video_classification_repository.rs b/apps/desktop/src-tauri/src/data/repositories/video_classification_repository.rs index 761df41..a1ae419 100644 --- a/apps/desktop/src-tauri/src/data/repositories/video_classification_repository.rs +++ b/apps/desktop/src-tauri/src/data/repositories/video_classification_repository.rs @@ -300,27 +300,34 @@ impl VideoClassificationRepository { let conn = self.database.get_connection(); let conn = conn.lock().unwrap(); + // 调试:检查TaskStatus::Pending的序列化结果 + let pending_status_json = serde_json::to_string(&TaskStatus::Pending)?; + println!("🔍 TaskStatus::Pending序列化结果: {}", pending_status_json); + + // 使用正确的JSON序列化格式查询 + let pending_status_json = serde_json::to_string(&TaskStatus::Pending)?; + let sql = if let Some(limit) = limit { format!( "SELECT id, segment_id, material_id, project_id, video_file_path, status, priority, retry_count, max_retries, gemini_file_uri, prompt_text, error_message, started_at, completed_at, created_at, updated_at - FROM video_classification_tasks - WHERE status = '\"Pending\"' - ORDER BY priority DESC, created_at ASC + FROM video_classification_tasks + WHERE status = ? + ORDER BY priority DESC, created_at ASC LIMIT {}", limit ) } else { "SELECT id, segment_id, material_id, project_id, video_file_path, status, priority, retry_count, max_retries, gemini_file_uri, prompt_text, error_message, started_at, completed_at, created_at, updated_at - FROM video_classification_tasks - WHERE status = '\"Pending\"' + FROM video_classification_tasks + WHERE status = ? ORDER BY priority DESC, created_at ASC".to_string() }; let mut stmt = conn.prepare(&sql)?; - let rows = stmt.query_map([], |row| { + let rows = stmt.query_map([&pending_status_json], |row| { let status_json: String = row.get(5)?; let status: TaskStatus = serde_json::from_str(&status_json).unwrap_or_default(); @@ -458,18 +465,32 @@ impl VideoClassificationRepository { ("".to_string(), "".to_string()) }; + // 获取正确的状态JSON字符串 + let pending_json = serde_json::to_string(&TaskStatus::Pending)?; + let uploading_json = serde_json::to_string(&TaskStatus::Uploading)?; + let analyzing_json = serde_json::to_string(&TaskStatus::Analyzing)?; + let completed_json = serde_json::to_string(&TaskStatus::Completed)?; + let failed_json = serde_json::to_string(&TaskStatus::Failed)?; + + println!("🔍 统计查询使用的状态值:"); + println!(" Pending: {}", pending_json); + println!(" Uploading: {}", uploading_json); + println!(" Analyzing: {}", analyzing_json); + println!(" Completed: {}", completed_json); + println!(" Failed: {}", failed_json); + // 获取任务统计 let mut stmt = conn.prepare(&format!( - "SELECT + "SELECT COUNT(*) as total, - SUM(CASE WHEN status = '\"Pending\"' THEN 1 ELSE 0 END) as pending, - SUM(CASE WHEN status IN ('\"Uploading\"', '\"Analyzing\"') THEN 1 ELSE 0 END) as processing, - SUM(CASE WHEN status = '\"Completed\"' THEN 1 ELSE 0 END) as completed, - SUM(CASE WHEN status = '\"Failed\"' THEN 1 ELSE 0 END) as failed + SUM(CASE WHEN status = ? THEN 1 ELSE 0 END) as pending, + SUM(CASE WHEN status = ? OR status = ? THEN 1 ELSE 0 END) as processing, + SUM(CASE WHEN status = ? THEN 1 ELSE 0 END) as completed, + SUM(CASE WHEN status = ? THEN 1 ELSE 0 END) as failed FROM video_classification_tasks{}", task_where_clause ))?; - let task_stats = stmt.query_row([], |row| { + let task_stats = stmt.query_row([&pending_json, &uploading_json, &analyzing_json, &completed_json, &failed_json], |row| { Ok(( row.get::<_, i32>(0)?, row.get::<_, i32>(1)?,