From a28b96b42449fc3d3fb2280d4a9d89e764e73324 Mon Sep 17 00:00:00 2001 From: Dicken Date: Sun, 12 Jul 2026 11:59:33 +0200 Subject: [PATCH] fix: KoePi Tage-Countdown entfernt, nur noch echtes Start-/Enddatum verwendet --- backend/src/mqtt.js | 2 +- backend/src/tools/koepi/routes.js | 10 +++++++--- frontend/src/tools/koepi.jsx | 3 --- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/backend/src/mqtt.js b/backend/src/mqtt.js index e3d2a76..2a4320a 100644 --- a/backend/src/mqtt.js +++ b/backend/src/mqtt.js @@ -391,7 +391,7 @@ function publishKoepiState({ offers, changed }) { // Lesbarer Mehrzeiler fürs Dashboard, zusätzlich zur strukturierten Liste const listeText = list.length - ? list.map(o => `${o.retailer}: ${o.price}${o.validity || o.dateRange ? ' (' + (o.validity || o.dateRange) + ')' : ''}`).join('\n') + ? list.map(o => `${o.retailer}: ${o.price}${o.dateRange ? ' (' + o.dateRange + ')' : ''}`).join('\n') : 'keine Angebote'; client.publish(`${BASE_TOPIC}/koepi/state`, state, { retain: true }); diff --git a/backend/src/tools/koepi/routes.js b/backend/src/tools/koepi/routes.js index 22372c1..cc99a7d 100644 --- a/backend/src/tools/koepi/routes.js +++ b/backend/src/tools/koepi/routes.js @@ -263,10 +263,14 @@ router.get('/img', authenticate, (req, res) => { // ── Tages-Cron: neue/geänderte Angebote per Pushover melden ───────────────── const KOEPI_SETTINGS_KEY = 'koepi_last_offers'; -// Vergleichbare, stabile Signatur eines Angebots (Reihenfolge-unabhängig) +// Vergleichbare, stabile Signatur eines Angebots (Reihenfolge-unabhängig). +// Bewusst NUR dateRange (echtes Datum), NICHT validity ("Noch X Tage") — der +// Countdown-Text ändert sich täglich von allein und würde sonst jeden Tag +// eine Pushover-Benachrichtigung auslösen, auch wenn sich am Angebot nichts +// geändert hat. function offerSignature(offers) { return offers - .map(o => `${(o.retailer || '').toLowerCase().trim()}|${(o.price || '').trim()}|${(o.validity || o.dateRange || '').trim()}`) + .map(o => `${(o.retailer || '').toLowerCase().trim()}|${(o.price || '').trim()}|${(o.dateRange || '').trim()}`) .sort() .join('\n'); } @@ -274,7 +278,7 @@ function offerSignature(offers) { function formatOfferMessage(offers) { if (!offers.length) return 'Aktuell keine König Pilsener Angebote gefunden.'; return offers - .map(o => `${o.retailer || '?'}: ${o.price || '?'} (${o.validity || o.dateRange || 'Gültigkeit unbekannt'})`) + .map(o => `${o.retailer || '?'}: ${o.price || '?'} (${o.dateRange || 'Gültigkeit unbekannt'})`) .join('\n'); } diff --git a/frontend/src/tools/koepi.jsx b/frontend/src/tools/koepi.jsx index 43f15aa..d8a0901 100644 --- a/frontend/src/tools/koepi.jsx +++ b/frontend/src/tools/koepi.jsx @@ -80,9 +80,6 @@ function OfferCard({ offer }) { {/* Gültigkeit */}
- {offer.validity && ( - ⏰ {offer.validity} - )} {offer.dateRange && ( 📅 {offer.dateRange} )}