From 6f49c5e84a3801f0d612d65a08799b66e222b88d Mon Sep 17 00:00:00 2001 From: Kelly Date: Fri, 12 Dec 2025 22:36:37 -0700 Subject: [PATCH] fix: Use database task counts for Completed/Failed stats on Workers page --- cannaiq/src/pages/WorkersDashboard.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/cannaiq/src/pages/WorkersDashboard.tsx b/cannaiq/src/pages/WorkersDashboard.tsx index 3f60071e..970d1a1c 100644 --- a/cannaiq/src/pages/WorkersDashboard.tsx +++ b/cannaiq/src/pages/WorkersDashboard.tsx @@ -785,6 +785,7 @@ export function WorkersDashboard() { const [tasks, setTasks] = useState([]); // Running tasks const [recentTasks, setRecentTasks] = useState([]); // Recent completed/failed const [pendingTaskCount, setPendingTaskCount] = useState(0); + const [taskCounts, setTaskCounts] = useState<{ completed: number; failed: number }>({ completed: 0, failed: 0 }); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); @@ -820,6 +821,10 @@ export function WorkersDashboard() { setRecentTasks(combined.slice(0, 15)); setPendingTaskCount(countsRes.data?.pending || 0); + setTaskCounts({ + completed: countsRes.data?.completed || 0, + failed: countsRes.data?.failed || 0, + }); setError(null); } catch (err: any) { console.error('Fetch error:', err); @@ -897,8 +902,9 @@ export function WorkersDashboard() { const activeWorkers = workers.filter(w => w.status !== 'offline' && w.status !== 'terminated'); const busyWorkers = workers.filter(w => w.current_task_id !== null); const idleWorkers = activeWorkers.filter(w => w.current_task_id === null); - const totalCompleted = workers.reduce((sum, w) => sum + w.tasks_completed, 0); - const totalFailed = workers.reduce((sum, w) => sum + w.tasks_failed, 0); + // Use task counts from database (survives worker restarts) + const totalCompleted = taskCounts.completed; + const totalFailed = taskCounts.failed; // Get task info for a worker const getWorkerTask = (workerId: string): Task | undefined => {