From 943a22a85ecff3fe4c379eab4697f716ac24b838 Mon Sep 17 00:00:00 2001 From: imeepos Date: Mon, 14 Jul 2025 14:52:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DAI=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E8=BF=9B=E5=BA=A6=E6=95=B0=E6=8D=AE=E4=B8=8D?= =?UTF-8?q?=E4=B8=80=E8=87=B4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题修复: - 修复分类统计与队列进度数据不匹配的问题 - 添加项目特定的队列状态查询接口 - 确保AI视频分类进度显示当前项目的准确数据 技术改进: - 添加get_project_classification_queue_status命令 - 在VideoClassificationQueue中添加get_project_stats方法 - 前端组件现在使用项目特定的队列状态 数据一致性: - 队列统计现在基于项目过滤 - 分类统计和任务进度数据保持一致 - 避免了跨项目数据混淆的问题 --- .../services/video_classification_queue.rs | 20 +++++++++++++++++++ apps/desktop/src-tauri/src/lib.rs | 1 + .../commands/video_classification_commands.rs | 10 ++++++++++ 3 files changed, 31 insertions(+) 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(