fix: KoePi KW-Erkennung praeziser (kein Datensatz-Text mehr), (weekly) aus ALDI-Titel entfernt

This commit is contained in:
2026-07-18 12:24:28 +02:00
parent 824e76a107
commit 6b4b23ea6c

View File

@@ -171,10 +171,23 @@ async function fetchLeafletDetail(leafletId, cache) {
// ("... KW32 ...") — die wird dann selbst eingeklammert, damit die Anzeige
// überall einheitlich aussieht.
function extractWeekInfo(name) {
const bracket = (name || '').match(/\([^)]*KW\s*\d+[^)]*\)/i);
if (bracket) return bracket[0];
const bare = (name || '').match(/KW\s*\d+(?:\s*[A-Za-zÄÖÜäöüß-]+)?/i);
return bare ? `(${bare[0]})` : '';
// Fängt nur "KW29" bzw. "KW 29" plus optional einen kurzen Wochentag-Bereich
// wie "Do-Sa" direkt danach ein — ignoriert bewusst alles andere drumherum
// (z.B. technischen Datensatz-Text wie "HHZ Dataset 2"), egal ob das Ganze
// in Klammern steht oder nicht. Klammert das Ergebnis immer selbst neu ein,
// damit die Anzeige überall einheitlich aussieht.
const m = (name || '').match(/KW\s*\d+(?:\s*[A-Za-zÄÖÜäöüß]{2,3}-[A-Za-zÄÖÜäöüß]{2,3})?/i);
return m ? `(${m[0].replace(/\s+/g, ' ').trim()})` : '';
}
// Entfernt bekannten Stör-/Metatext aus dem angezeigten Prospekt-Titel (z.B.
// "(weekly)" bei ALDI). Liste bei Bedarf einfach erweitern, falls andere
// Ketten ähnlichen Text im name-Feld mitliefern.
const TITLE_NOISE_PATTERNS = [/\(weekly\)/gi];
function cleanTitle(name) {
let t = name || '';
for (const p of TITLE_NOISE_PATTERNS) t = t.replace(p, '');
return t.replace(/\s{2,}/g, ' ').trim();
}
// Löst die feste Liste gewünschter Filialen (LOCAL_STORE_SEED_LEAFLETS) einmalig
@@ -536,7 +549,7 @@ async function scrapeProspekte() {
all.push({
id: f.id,
publisher: f.advertiser?.name || '',
title: detail.name || f.advertiser?.name || '',
title: cleanTitle(detail.name) || f.advertiser?.name || '',
weekInfo,
street: store.address || '',
zip: MG_ZIP,