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

This commit is contained in:
imeepos 2025-07-14 14:53:54 +08:00
parent 943a22a85e
commit 483ea64413
2 changed files with 27 additions and 4 deletions

View File

@ -28,6 +28,7 @@ export const VideoClassificationProgress: React.FC<VideoClassificationProgressPr
taskProgress,
refreshQueueStatus,
refreshTaskProgress,
getProjectQueueStatus,
getProjectTaskProgress,
getClassificationStats,
pauseQueue,
@ -45,6 +46,15 @@ export const VideoClassificationProgress: React.FC<VideoClassificationProgressPr
const [stats, setStats] = useState<ClassificationStats | null>(null);
const [isExpanded, setIsExpanded] = useState(false);
// 刷新队列状态的方法
const refreshQueueStats = useCallback(async () => {
if (projectId) {
await getProjectQueueStatus(projectId);
} else {
await refreshQueueStatus();
}
}, [projectId, getProjectQueueStatus, refreshQueueStatus]);
// 刷新任务进度的方法
const refreshProgress = useCallback(async () => {
if (projectId) {
@ -59,7 +69,7 @@ export const VideoClassificationProgress: React.FC<VideoClassificationProgressPr
if (!autoRefresh) return;
const interval = setInterval(async () => {
await refreshQueueStatus();
await refreshQueueStats();
await refreshProgress();
if (projectId) {
@ -73,17 +83,17 @@ export const VideoClassificationProgress: React.FC<VideoClassificationProgressPr
}, refreshInterval);
return () => clearInterval(interval);
}, [autoRefresh, refreshInterval, projectId, refreshQueueStatus, refreshProgress, getClassificationStats]);
}, [autoRefresh, refreshInterval, projectId, refreshQueueStats, refreshProgress, getClassificationStats]);
// 初始加载
useEffect(() => {
refreshQueueStatus();
refreshQueueStats();
refreshProgress();
if (projectId) {
getClassificationStats(projectId).then(setStats).catch(console.error);
}
}, [projectId, refreshQueueStatus, refreshProgress, getClassificationStats]);
}, [projectId, refreshQueueStats, refreshProgress, getClassificationStats]);
// 获取状态颜色和图标
const getStatusInfo = (status: string) => {

View File

@ -71,6 +71,7 @@ interface VideoClassificationState {
// Actions
startClassification: (request: BatchClassificationRequest) => Promise<string[]>;
getQueueStatus: () => Promise<QueueStats>;
getProjectQueueStatus: (projectId: string) => Promise<QueueStats>;
getTaskProgress: (taskId: string) => Promise<TaskProgress | null>;
getAllTaskProgress: () => Promise<Record<string, TaskProgress>>;
getProjectTaskProgress: (projectId: string) => Promise<Record<string, TaskProgress>>;
@ -129,6 +130,18 @@ export const useVideoClassificationStore = create<VideoClassificationState>((set
}
},
getProjectQueueStatus: async (projectId: string) => {
try {
const stats = await invoke<QueueStats>('get_project_classification_queue_status', { projectId });
set({ queueStats: stats });
return stats;
} catch (error) {
const errorMessage = typeof error === 'string' ? error : '获取项目队列状态失败';
set({ error: errorMessage });
throw new Error(errorMessage);
}
},
getTaskProgress: async (taskId: string) => {
try {
const progress = await invoke<TaskProgress | null>('get_classification_task_progress', { taskId });