import { claimNextParseJob, completeParseJob, failParseJob, listBands } from "./db.server"; import { parseLiveInfoBands } from "./claude.server"; const POLL_INTERVAL_MS = 2000; let started = false; function startWorker() { if (started) return; started = true; let busy = false; setInterval(async () => { if (busy) return; const job = claimNextParseJob(); if (!job) return; busy = true; try { const bands = listBands(); const matches = await parseLiveInfoBands(job.input_text, bands); completeParseJob(job.id, JSON.stringify(matches)); } catch (e) { failParseJob(job.id, e instanceof Error ? e.message : "不明なエラー"); } finally { busy = false; } }, POLL_INTERVAL_MS); } startWorker();