/** * Next.js Instrumentation — runs once on server startup. * * Sets up: * - Automation event handler registration * - Hourly deadline scheduler */ export async function register() { if (process.env.NEXT_RUNTIME === "nodejs") { // Register automation event handler (side-effect import) await import("@/lib/services/automation-service"); // Start hourly deadline check const { emitDeadlineEvents } = await import( "@/lib/services/deadline-service" ); const { prisma } = await import("@/lib/prisma"); const HOUR_MS = 60 * 60 * 1000; const runDeadlineCheck = async () => { try { const orgs = await prisma.organization.findMany({ select: { id: true }, }); for (const org of orgs) { await emitDeadlineEvents(org.id); } console.log( `[Deadline Scheduler] Checked ${orgs.length} org(s) for deadlines` ); } catch (err) { console.error("[Deadline Scheduler] Error:", err); } }; // Initial check after 30s (let server fully start) setTimeout(runDeadlineCheck, 30_000); // Then every hour setInterval(runDeadlineCheck, HOUR_MS); console.log("[Instrumentation] Deadline scheduler registered (hourly)"); } }