# AMZ Seller - Helper: Extraction und Scraping

Dieses Briefing definiert, wie Daten aus AMZ-Listings extrahiert und über mehrere Seiten aggregiert werden.

## Zuständige Dateien

- `chrome-plugin/src/extraction/SeoDayAmzStoreProductExtractionFromSearchResultDocumentService.js`
- `chrome-plugin/src/scraping/SeoDayAmzStorePaginatedSearchResultScrapingService.js`

## Datenfelder

- `asin`
- `title`
- `productUrl`
- `price`
- `rating`
- `reviewCount`
- `estimatedSales`
- `imageUrl`
- `sourcePageUrl`

## Preisformat

- Preiswerte aus AMZ dürfen kein doppeltes Komma enthalten.
- Wenn `priceWhole` bereits ein Komma enthält (dezimal fertig formatiert), darf kein weiterer Fraction-Teil angehängt werden.

## Rating-Extraktion

- Der Durchschnittswert (`rating`) wird robust aus mehreren Quellen gelesen (sichtbarer Text und `aria-label`).
- Unterstützte Formate sind u. a. `4,6 von 5` und `4.6 out of 5`.
- Ungültige Werte außerhalb `0..5` werden verworfen.

## Regeln

1. Deduplizierung über `asin` oder fallback `productUrl`.
2. Pagination läuft bis kein nächster Link mehr vorhanden ist.
3. Gesamtseitenzahl wird bestmöglich aus der Pagination geschätzt.
4. Progress-Callback liefert Seite, geschätzte Gesamtseiten und aggregierte Produkte.
5. `productUrl` muss als kanonische Produktdetail-URL aufgebaut werden (`https://www.amz.de/dp/{ASIN}`), damit Titel- und ASIN-Verlinkung nicht auf Redirect- oder Tracking-Links zeigen.

## Verlinkungsregel

- Beide Services enthalten Briefing-Verweise im Code.
- Änderungen an Selektoren, Feldern oder Pagination müssen zuerst hier dokumentiert werden.
