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 => {