import React, { useState, useEffect } from 'react'; import { Card, CardHeader, CardContent, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { getDirectusClient, readItems } from '@/lib/directus/client'; export default function ProductionFloor() { const [jobs, setJobs] = useState([]); const fetchJobs = async () => { const client = getDirectusClient(); try { const res = await client.request(readItems('generation_jobs', { sort: ['-date_created'], limit: 10 })); setJobs(res); } catch (e) { console.error(e); } }; useEffect(() => { fetchJobs(); const interval = setInterval(fetchJobs, 5000); // Poll every 5s return () => clearInterval(interval); }, []); const getProgress = (job: any) => { if (!job.target_quantity) return 0; return Math.round((job.current_offset / job.target_quantity) * 100); }; return (
Active Job Queue
{jobs.map(job => ( ))} {jobs.length === 0 && ( )}
Job ID Status Progress Target
{job.id} {job.status}
{job.current_offset} / {job.target_quantity}
{job.target_quantity}
No active jobs. Launch one from the pad!
{/* Could add Recent Articles feed here */}
); }