← Library

01 Empfohlene Pipeline-Reihenfolge

Nach einem Crawler-Lauf sollten die Scripts in dieser Reihenfolge ausgefuehrt werden, um konsistente Daten zu garantieren.

1
Crawl starten
Wettbewerber-Preise und Produkte ueber die Price-Scanner UI crawlen. Startet automatisch alle konfigurierten Crawler.
Price-Scanner UI → Crawl starten
2
Data Enrichment
Sicherheitsgrad, Dimensionen und Volumen aus Produktnamen parsen und in der DB anreichern.
docker exec ht-api node /app/scripts/enrich-competitor-data.js
3
Auto-Matcher
Produkt-Matching zwischen HT und Wettbewerbern neu berechnen basierend auf angereicherten Daten.
docker exec ht-api node /app/scripts/run-matching.js
4
Auto-Review
Matches automatisch bestaetigen oder ablehnen basierend auf Score-Schwellenwerten.
docker exec ht-api node /app/scripts/auto-review-matches.js
5
Image Harvester
Produktbilder von hartmann-tresore.de und Wettbewerber-Seiten downloaden.
docker exec ht-api node /app/scripts/harvest-images.js
6
DB Health Check
Qualitaetsbericht ueber die gesamte Datenbank. Pruefen ob alles konsistent ist.
docker exec ht-api node /app/scripts/db-health-check.js

Hinweis: Feed Merger (merge-feed.js) wird separat ausgefuehrt, wenn ein neuer HT Shopping Feed vorliegt. Nicht Teil des regulaeren Crawl-Zyklus.

02 Tools im Detail

Jedes Script erklaert: was es tut, welche Daten es liest/schreibt, wann man es ausfuehrt.

📷
Image Harvester
harvest-images.js
~6 Min
Crawlt Produktbilder von hartmann-tresore.de und Wettbewerber-Websites. Speichert Bilder lokal und aktualisiert die Bild-URLs in der Datenbank.
Liest crawler_products (URLs), hartmann-tresore.de, Wettbewerber-Seiten
Schreibt /app/data/images/ (Bilddateien), crawler_products.image_url (DB)
Wann ausfuehren Nach neuen Crawls, wenn neue Produkte ohne Bilder existieren
Erwartete Ausgabe Anzahl heruntergeladener Bilder, uebersprungene (bereits vorhanden), Fehler
docker exec ht-api node /app/scripts/harvest-images.jsKlick zum Kopieren
🔬
Data Enrichment
enrich-competitor-data.js
~5 Sek
Parst Produktnamen der Wettbewerber und extrahiert strukturierte Daten: Sicherheitsgrad (S1, S2, WG 0-IV), Dimensionen (HxBxT), Volumen in Litern. Ermoeglicht praezises Matching.
Liest crawler_products.name, crawler_products.description
Schreibt crawler_products: security_grade, height, width, depth, volume
Wann ausfuehren Nach jedem Crawl, BEVOR Matching laeuft
Erwartete Ausgabe Anzahl angereicherter Produkte, Erkennungsrate pro Feld (z.B. Sicherheit: 87%)
docker exec ht-api node /app/scripts/enrich-competitor-data.jsKlick zum Kopieren
🎯
Auto-Matcher
run-matching.js
~30 Sek
Berechnet Produkt-Matches zwischen HT und Wettbewerbern neu. Vergleicht Sicherheitsgrad, Gewicht, Volumen und Typ. Generiert Score-basierte Zuordnungen.
Liest ht_products_merged.json, crawler_products (angereichert)
Schreibt product_matches (kompletter Neuaufbau der Match-Tabelle)
Wann ausfuehren Nach Data Enrichment, wenn neue Produkte oder aktualisierte Daten vorliegen
Erwartete Ausgabe Anzahl generierter Matches, Score-Verteilung, nicht-gematchte Produkte
docker exec ht-api node /app/scripts/run-matching.jsKlick zum Kopieren
Auto-Review
auto-review-matches.js
~10 Sek
Prueft alle unreviewed Matches und bestaetigt oder lehnt sie automatisch ab basierend auf Score-Schwellenwerten. Hohe Scores werden bestaetigt, niedrige abgelehnt, mittlere bleiben fuer manuelles Review.
Liest product_matches (status = 'unreviewed')
Schreibt product_matches.status ('confirmed' / 'rejected'), product_matches.reviewed_at
Wann ausfuehren Nach Auto-Matcher, als Qualitaetssicherung vor manueller Pruefung
Erwartete Ausgabe Bestaetigt: X, Abgelehnt: Y, Offen fuer Review: Z
docker exec ht-api node /app/scripts/auto-review-matches.jsKlick zum Kopieren
🔄
Feed Merger
merge-feed.js
~5 Sek
Integriert den offiziellen HT Shopping Feed (CSV) in die Produktdaten. Aktualisiert VK-Preise, Verfuegbarkeit und neue Produktattribute aus dem Webshop-Export.
Liest ht_shopping_feed.csv, ht_products_merged.json
Schreibt ht_products_merged.json (aktualisierte Felder aus Feed)
Wann ausfuehren Wenn ein neuer Shopping Feed vorliegt (manueller Download oder API-Refresh)
Erwartete Ausgabe Gematchte Produkte, aktualisierte Felder, nicht-gematchte Feed-Eintraege
docker exec ht-api node /app/scripts/merge-feed.jsKlick zum Kopieren
🩹
DB Health Check
db-health-check.js
~2 Sek
Erstellt einen umfassenden Qualitaetsbericht der mcg.db. Prueft Tabellen-Groessen, Datenluecken, verwaiste Eintraege, Konsistenz der Matches und allgemeine DB-Gesundheit.
Liest Alle Tabellen: crawler_products, product_matches, price_history, crawler_runs
Schreibt Nur Konsolenausgabe (kein Schreibzugriff auf DB)
Wann ausfuehren Nach der Pipeline, taeglich, oder bei Verdacht auf Datenprobleme
Erwartete Ausgabe Tabellengroessen, Fuellgrade, Warnungen, Gesamtbewertung
docker exec ht-api node /app/scripts/db-health-check.jsKlick zum Kopieren

03 Hinweise

Alle Scripts sind deterministisch. Sie verbrauchen keine AI-Tokens und liefern bei gleichen Eingabedaten immer das gleiche Ergebnis. Koennen jederzeit sicher mehrfach ausgefuehrt werden.

NICHT deployen waehrend Crawls laufen. Docker-Rebuild killt laufende Crawl-Prozesse. Erst warten bis der Crawl fertig ist.

SQLite WAL-Modus: Daten landen erst in mcg.db-wal, nicht direkt in mcg.db. Bei Container-Restart ohne graceful shutdown gehen WAL-Daten verloren. Der Server hat SIGTERM-Handler eingebaut.