import { pruefeOffene } from './bestellungen.js' import { shopModus } from './schalter.js' /** * Jobs des Webshops (Plan 2026-10-05-webshop.md, E2; J3 ergaenzt den Tagesjob und die Registrierung in index.js). * Jeder Job laeuft hoechstens einmal gleichzeitig (ein Lauf, der noch haengt, ueberspringt den naechsten Takt) und wirft nie. */ const laufend = new Set() async function einzeln(name, arbeit) { if (laufend.has(name)) { console.warn(`[shop-jobs] ${name}: der vorige Lauf ist noch nicht fertig, dieser Takt wird übersprungen`) return { uebersprungen: true } } laufend.add(name) try { return await arbeit() } catch (err) { console.error(`[shop-jobs] ${name} fehlgeschlagen: ${err?.name}: ${String(err?.message).slice(0, 200)}`) return { fehler: true } } finally { laufend.delete(name) } } /** Minutenjob: offene Bestellungen mit verstrichener Frist bei Stripe abgleichen (bezahlt abschliessen oder verwerfen). Bei SHOP_ENABLED=off aus. */ export async function minutenJob(now = new Date()) { if (shopModus() === 'off') return { aus: true } return einzeln('minutenJob', () => pruefeOffene(now)) }