fix: 修复AI视频分类进度数据不一致问题

问题修复:
- 修复分类统计与队列进度数据不匹配的问题
- 添加项目特定的队列状态查询接口
- 确保AI视频分类进度显示当前项目的准确数据

 技术改进:
- 添加get_project_classification_queue_status命令
- 在VideoClassificationQueue中添加get_project_stats方法
- 前端组件现在使用项目特定的队列状态

 数据一致性:
- 队列统计现在基于项目过滤
- 分类统计和任务进度数据保持一致
- 避免了跨项目数据混淆的问题
This commit is contained in:
imeepos 2025-07-14 14:52:15 +08:00
parent b1fdcaac6b
commit 943a22a85e
3 changed files with 31 additions and 0 deletions

View File

@ -173,6 +173,26 @@ impl VideoClassificationQueue {
self.stats.read().await.clone() self.stats.read().await.clone()
} }
/// 获取项目的队列统计信息
pub async fn get_project_stats(&self, project_id: &str) -> Result<QueueStats> {
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<TaskProgress> { pub async fn get_task_progress(&self, task_id: &str) -> Option<TaskProgress> {
self.task_progress.read().await.get(task_id).cloned() self.task_progress.read().await.get(task_id).cloned()

View File

@ -107,6 +107,7 @@ pub fn run() {
// AI视频分类命令 // AI视频分类命令
commands::video_classification_commands::start_video_classification, commands::video_classification_commands::start_video_classification,
commands::video_classification_commands::get_classification_queue_status, 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_classification_task_progress,
commands::video_classification_commands::get_all_classification_task_progress, commands::video_classification_commands::get_all_classification_task_progress,
commands::video_classification_commands::get_project_classification_task_progress, commands::video_classification_commands::get_project_classification_task_progress,

View File

@ -70,6 +70,16 @@ pub async fn get_classification_queue_status(
Ok(queue.get_stats().await) Ok(queue.get_stats().await)
} }
/// 获取项目的分类队列状态
#[command]
pub async fn get_project_classification_queue_status(
project_id: String,
state: State<'_, AppState>,
) -> Result<QueueStats, String> {
let queue = get_queue_instance(&state).await;
queue.get_project_stats(&project_id).await.map_err(|e| e.to_string())
}
/// 获取任务进度 /// 获取任务进度
#[command] #[command]
pub async fn get_classification_task_progress( pub async fn get_classification_task_progress(