/** * Der Worker teilt sich die .env mit der Web-App, braucht aber nur einen Teil * davon. Fehlt etwas, stirbt der Prozess sofort mit klarer Meldung, damit der * Fehler in Dockge am roten Container sichtbar wird und nicht im Lograuschen. */ export type WorkerEnv = { databaseUrl: string discordBotToken: string discordGuildId: string /** Voll-Abgleich als Sicherheitsnetz, siehe docs/02-architektur.md. */ fullSyncIntervalMs: number heartbeatIntervalMs: number adminChannelId?: string } function required(name: string): string { const value = process.env[name] if (!value) throw new Error(`Konfiguration unvollständig: ${name} fehlt`) return value } export function loadEnv(): WorkerEnv { return { databaseUrl: required('DATABASE_URL'), discordBotToken: required('DISCORD_BOT_TOKEN'), discordGuildId: required('DISCORD_GUILD_ID'), fullSyncIntervalMs: Number(process.env.WORKER_FULL_SYNC_MS ?? 5 * 60_000), heartbeatIntervalMs: Number(process.env.WORKER_HEARTBEAT_MS ?? 30_000), adminChannelId: process.env.DISCORD_ADMIN_CHANNEL_ID, } }