feat: KoePi Filial-Whitelist wird automatisch woechentlich neu aufgeloest

This commit is contained in:
2026-07-18 16:38:04 +02:00
parent 8b1583de7c
commit 6209c38a83

View File

@@ -725,8 +725,25 @@ async function refreshOffersOnly() {
// Wird täglich um 06:00 vom Scheduler in index.js aufgerufen (ohne onlyUserId // Wird täglich um 06:00 vom Scheduler in index.js aufgerufen (ohne onlyUserId
// → geht an alle). forceNotify=true (manueller Admin-Test): Pushover wird auch // → geht an alle). forceNotify=true (manueller Admin-Test): Pushover wird auch
// ohne Änderung verschickt; onlyUserId gesetzt: nur an diesen einen Nutzer. // ohne Änderung verschickt; onlyUserId gesetzt: nur an diesen einen Nutzer.
// Löst die Filial-Whitelist automatisch neu auf, wenn die letzte Auflösung
// mehr als 6 Tage her ist — läuft als Teil des täglichen 06:00-Checks, damit
// ein einmalig falscher/veralteter Treffer sich von selbst korrigiert, statt
// dauerhaft stehen zu bleiben.
const RESOLVE_MAX_AGE_DAYS = 6;
async function resolveLocalStoresIfStale() {
const row = db.prepare('SELECT MIN(resolved_at) AS oldest FROM koepi_local_stores').get();
const oldest = row?.oldest;
const staleOrMissing = !oldest ||
(Date.now() - new Date(oldest.replace(' ', 'T')).getTime()) > RESOLVE_MAX_AGE_DAYS * 24 * 60 * 60 * 1000;
if (!staleOrMissing) return;
console.log(`🍺 KöPi: Filial-Whitelist ist älter als ${RESOLVE_MAX_AGE_DAYS} Tage (oder unvollständig) — löse automatisch neu auf...`);
try { await resolveLocalStores(); }
catch (e) { console.error('🍺 KöPi: automatische Neu-Auflösung fehlgeschlagen:', e.message); }
}
async function runDailyCheck(forceNotify = false, onlyUserId = null) { async function runDailyCheck(forceNotify = false, onlyUserId = null) {
try { try {
await resolveLocalStoresIfStale();
const { offers } = await scrapeMarktguru(true); const { offers } = await scrapeMarktguru(true);
const currentSig = offerSignature(offers); const currentSig = offerSignature(offers);
const lastSig = db.prepare('SELECT value FROM admin_settings WHERE key=?').get(KOEPI_SETTINGS_KEY)?.value || ''; const lastSig = db.prepare('SELECT value FROM admin_settings WHERE key=?').get(KOEPI_SETTINGS_KEY)?.value || '';