From abef265ae9b286c74addedc8ea0c44a0b036f5ea Mon Sep 17 00:00:00 2001 From: Kelly Date: Sun, 14 Dec 2025 12:21:23 -0700 Subject: [PATCH] feat(workers): Add platform badge (D/J/T) to active tasks display MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add PlatformBadge component showing D=Dutchie, J=Jane, T=Treez - Include platform field in worker-registry API response - Fix null running_seconds displaying as "nulls" 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- backend/src/routes/worker-registry.ts | 2 ++ cannaiq/src/pages/WorkersDashboard.tsx | 24 ++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/backend/src/routes/worker-registry.ts b/backend/src/routes/worker-registry.ts index 39e7af50..ebf91d10 100644 --- a/backend/src/routes/worker-registry.ts +++ b/backend/src/routes/worker-registry.ts @@ -436,6 +436,7 @@ router.get('/workers', async (req: Request, res: Response) => { t.worker_id, t.id as task_id, t.role, + t.platform, t.status as task_status, t.started_at, EXTRACT(EPOCH FROM (NOW() - t.started_at))::int as running_seconds, @@ -458,6 +459,7 @@ router.get('/workers', async (req: Request, res: Response) => { tasksByWorker[task.worker_id].push({ task_id: task.task_id, role: task.role, + platform: task.platform, status: task.task_status, started_at: task.started_at, running_seconds: task.running_seconds, diff --git a/cannaiq/src/pages/WorkersDashboard.tsx b/cannaiq/src/pages/WorkersDashboard.tsx index 7a5ae358..0329585c 100644 --- a/cannaiq/src/pages/WorkersDashboard.tsx +++ b/cannaiq/src/pages/WorkersDashboard.tsx @@ -128,6 +128,7 @@ interface ActiveTask { status: string; started_at: string; running_seconds: number; + platform?: string; dispensary?: { id: number; name: string; @@ -136,6 +137,25 @@ interface ActiveTask { } | null; } +// Platform badge component +function PlatformBadge({ platform }: { platform?: string }) { + const config: Record = { + dutchie: { letter: 'D', bg: 'bg-green-100', text: 'text-green-700', title: 'Dutchie' }, + jane: { letter: 'J', bg: 'bg-purple-100', text: 'text-purple-700', title: 'Jane' }, + treez: { letter: 'T', bg: 'bg-orange-100', text: 'text-orange-700', title: 'Treez' }, + }; + const p = platform?.toLowerCase() || 'dutchie'; + const c = config[p] || { letter: '?', bg: 'bg-gray-100', text: 'text-gray-600', title: platform || 'Unknown' }; + return ( + + {c.letter} + + ); +} + // Current task info interface Task { id: number; @@ -632,9 +652,9 @@ function TaskCountBadge({ worker, tasks }: { worker: Worker; tasks: Task[] }) {
-
+ {task.dispensary?.name?.split(' ').slice(0, 2).join(' ') || task.role.replace(/_/g, ' ')}