diff --git a/apps/desktop/src-tauri/src/business/services/video_classification_queue.rs b/apps/desktop/src-tauri/src/business/services/video_classification_queue.rs index 0a0e309..9b5785d 100644 --- a/apps/desktop/src-tauri/src/business/services/video_classification_queue.rs +++ b/apps/desktop/src-tauri/src/business/services/video_classification_queue.rs @@ -173,6 +173,26 @@ impl VideoClassificationQueue { self.stats.read().await.clone() } + /// 获取项目的队列统计信息 + pub async fn get_project_stats(&self, project_id: &str) -> Result { + let status = self.status.read().await.clone(); + let current_task = self.current_task.lock().await.clone(); + + // 获取项目特定的分类统计 + let classification_stats = self.service.get_classification_stats(Some(project_id)).await?; + + Ok(QueueStats { + status, + total_tasks: classification_stats.total_tasks as usize, + pending_tasks: classification_stats.pending_tasks as usize, + processing_tasks: classification_stats.processing_tasks as usize, + completed_tasks: classification_stats.completed_tasks as usize, + failed_tasks: classification_stats.failed_tasks as usize, + current_task_id: current_task, + processing_rate: self.stats.read().await.processing_rate, // 保持全局处理速率 + }) + } + /// 获取任务进度 pub async fn get_task_progress(&self, task_id: &str) -> Option { self.task_progress.read().await.get(task_id).cloned() diff --git a/apps/desktop/src-tauri/src/lib.rs b/apps/desktop/src-tauri/src/lib.rs index 7b4e6dd..4878d02 100644 --- a/apps/desktop/src-tauri/src/lib.rs +++ b/apps/desktop/src-tauri/src/lib.rs @@ -107,6 +107,7 @@ pub fn run() { // AI视频分类命令 commands::video_classification_commands::start_video_classification, commands::video_classification_commands::get_classification_queue_status, + commands::video_classification_commands::get_project_classification_queue_status, commands::video_classification_commands::get_classification_task_progress, commands::video_classification_commands::get_all_classification_task_progress, commands::video_classification_commands::get_project_classification_task_progress, diff --git a/apps/desktop/src-tauri/src/presentation/commands/video_classification_commands.rs b/apps/desktop/src-tauri/src/presentation/commands/video_classification_commands.rs index 8e69b16..bfbcb05 100644 --- a/apps/desktop/src-tauri/src/presentation/commands/video_classification_commands.rs +++ b/apps/desktop/src-tauri/src/presentation/commands/video_classification_commands.rs @@ -70,6 +70,16 @@ pub async fn get_classification_queue_status( Ok(queue.get_stats().await) } +/// 获取项目的分类队列状态 +#[command] +pub async fn get_project_classification_queue_status( + project_id: String, + state: State<'_, AppState>, +) -> Result { + let queue = get_queue_instance(&state).await; + queue.get_project_stats(&project_id).await.map_err(|e| e.to_string()) +} + /// 获取任务进度 #[command] pub async fn get_classification_task_progress(