diff --git a/patch_history/RETRIEX_PATCH_47_EXACT_ARTICLE_NUMBER_SEARCH_README.md b/patch_history/RETRIEX_PATCH_47_EXACT_ARTICLE_NUMBER_SEARCH_README.md new file mode 100644 index 0000000..68efcc2 --- /dev/null +++ b/patch_history/RETRIEX_PATCH_47_EXACT_ARTICLE_NUMBER_SEARCH_README.md @@ -0,0 +1,75 @@ +# RetrieX Patch 47 - Exact Article Number Shop Search + +## Ziel + +Behebt den Fehler, dass rein numerische Shop-Suchen wie `suche 100247` ueber die normale Shopware-Volltextsuche laufen und dadurch mit `Shopware Store API returned invalid JSON` als nicht verfuegbare Shopdaten enden koennen. + +`100247` ist eine Artikel-/Produktnummer. Solche Suchtexte sollen nicht breit als Volltext gesucht werden, sondern exakt gegen `productNumber` gefiltert werden. + +## Aenderungen + +- Neue YAML-konfigurierbare Erkennung fuer reine Produktnummer-Suchtexte: + - `retriex.commerce_query.config.patterns.exact_product_number_search_text` +- `CommerceQueryParser` stellt `extractExactProductNumberSearchText()` bereit. +- `ShopSearchService` nutzt fuer reine Produktnummern einen separaten exakten Suchpfad. +- `ShopwareCriteriaBuilder` baut dafuer ein kleines, rich-text-freies Store-API-Kriterium: + - kein Volltext-`search` + - Filter `productNumber = ` + - keine Description, keine CustomFields, keine Media-Daten + - nur Name, Produktnummer, Verfuegbarkeit, Preis und Hersteller + +## Erwartetes Verhalten + +Prompt: + +```text +suche 100247 +``` + +Erwartung: + +- Shopquery bleibt `100247`. +- Store API wird mit exaktem `productNumber`-Filter abgefragt. +- Keine breite Volltextsuche fuer die reine Zahl. +- Kein JSON-Fehler durch rich-text-/custom-field-lastige Suchergebnisse. +- Wenn Produktnummer existiert: Produktdaten/Preis/Verfuegbarkeit anzeigen. +- Wenn Produktnummer nicht existiert: sauber `keine passenden Shopdaten`, nicht `Shopdaten nicht verfuegbar`. + +## Grenzen + +- Der Patch ist bewusst auf reine numerische Produktnummern beschraenkt. +- Alphanumerische Artikelnummern oder gemischte Modellqueries laufen weiterhin durch die bestehende Shopquery-Logik. +- Kein Shopware-Endpoint-Wechsel, keine neue externe Abhaengigkeit, keine neue harte Produktliste. + +## Lokale Pruefung + +Ausgefuehrt: + +```bash +php -l src/Config/CommerceQueryParserConfig.php +php -l src/Commerce/CommerceQueryParser.php +php -l src/Shopware/ShopwareCriteriaBuilder.php +php -l src/Commerce/ShopSearchService.php +``` + +Zusaetzlich geprueft: + +- `config/retriex/commerce.yaml` ist YAML-parsebar. +- Pattern erkennt `100247` und verwirft `100247 clt`, `100`, sowie zu lange Zahlen. +- Exact-ProductNumber-Kriterium JSON-encodiert korrekt. + +Nicht lokal ausfuehrbar, weil `vendor/` im ZIP fehlt: + +```bash +php bin/console mto:agent:config:validate +``` + +Bitte nach Einspielen wie gewohnt pruefen: + +```bash +bin/console cache:clear +bin/console mto:agent:config:validate +bin/console mto:agent:regression:test +bin/console mto:agent:config:audit-source --details +bin/console mto:agent:config:audit-patterns --details +```