fix: 修复AI视频分类进度数据不一致问题
问题修复: - 修复分类统计与队列进度数据不匹配的问题 - 添加项目特定的队列状态查询接口 - 确保AI视频分类进度显示当前项目的准确数据 技术改进: - 添加get_project_classification_queue_status命令 - 在VideoClassificationQueue中添加get_project_stats方法 - 前端组件现在使用项目特定的队列状态 数据一致性: - 队列统计现在基于项目过滤 - 分类统计和任务进度数据保持一致 - 避免了跨项目数据混淆的问题
This commit is contained in:
parent
b1fdcaac6b
commit
943a22a85e
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue