From 483ea64413c8206231e8ad4420162aeb4ef3b12e Mon Sep 17 00:00:00 2001 From: imeepos Date: Mon, 14 Jul 2025 14:53:54 +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 --- .../components/VideoClassificationProgress.tsx | 18 ++++++++++++++---- .../src/store/videoClassificationStore.ts | 13 +++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/apps/desktop/src/components/VideoClassificationProgress.tsx b/apps/desktop/src/components/VideoClassificationProgress.tsx index a0d0f63..f2fea48 100644 --- a/apps/desktop/src/components/VideoClassificationProgress.tsx +++ b/apps/desktop/src/components/VideoClassificationProgress.tsx @@ -28,6 +28,7 @@ export const VideoClassificationProgress: React.FC(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 { - await refreshQueueStatus(); + await refreshQueueStats(); await refreshProgress(); if (projectId) { @@ -73,17 +83,17 @@ export const VideoClassificationProgress: React.FC 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) => { diff --git a/apps/desktop/src/store/videoClassificationStore.ts b/apps/desktop/src/store/videoClassificationStore.ts index 5936eb8..64eb46f 100644 --- a/apps/desktop/src/store/videoClassificationStore.ts +++ b/apps/desktop/src/store/videoClassificationStore.ts @@ -71,6 +71,7 @@ interface VideoClassificationState { // Actions startClassification: (request: BatchClassificationRequest) => Promise; getQueueStatus: () => Promise; + getProjectQueueStatus: (projectId: string) => Promise; getTaskProgress: (taskId: string) => Promise; getAllTaskProgress: () => Promise>; getProjectTaskProgress: (projectId: string) => Promise>; @@ -129,6 +130,18 @@ export const useVideoClassificationStore = create((set } }, + getProjectQueueStatus: async (projectId: string) => { + try { + const stats = await invoke('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('get_classification_task_progress', { taskId });