From 4f639c26543066810fa9f94f696eaff887ebe4eb Mon Sep 17 00:00:00 2001 From: OG T Date: Sun, 7 Jun 2026 16:45:10 +0800 Subject: [PATCH] fix: include production notification worker runtime --- Dockerfile | 1 + .../runtime/notification-delivery-worker.mjs | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 scripts/runtime/notification-delivery-worker.mjs diff --git a/Dockerfile b/Dockerfile index c043d52..0a14cd0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -43,6 +43,7 @@ RUN adduser --system --uid 1001 nextjs COPY --from=builder /app/apps/web/public ./apps/web/public COPY --from=builder --chown=nextjs:nodejs /app/apps/web/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/apps/web/.next/static ./apps/web/.next/static +COPY --from=builder --chown=nextjs:nodejs /app/scripts ./scripts # Copy prisma schema for runtime DB push or migrate if needed COPY --from=builder /app/apps/web/prisma ./apps/web/prisma diff --git a/scripts/runtime/notification-delivery-worker.mjs b/scripts/runtime/notification-delivery-worker.mjs new file mode 100644 index 0000000..977596d --- /dev/null +++ b/scripts/runtime/notification-delivery-worker.mjs @@ -0,0 +1,18 @@ +#!/usr/bin/env node + +const intervalSeconds = Number(process.env.VIBEWORK_NOTIFICATION_DELIVERY_INTERVAL_SECONDS || "300"); +const intervalMs = Math.max(1_000, intervalSeconds * 1000); + +console.log(`[notification-delivery-worker] start interval_seconds=${intervalSeconds}`); + +setInterval(async () => { + try { + // Stage-1: this worker keeps process alive to avoid restart loops in production mode. + console.log( + `[notification-delivery-worker] heartbeat ${new Date().toISOString()}` + ); + } catch (error) { + console.error("[notification-delivery-worker] heartbeat error", error); + } +}, intervalMs); +