This commit is contained in:
team 1
2026-05-06 11:21:49 +02:00
parent 566b7be36f
commit 1229437ab9

View File

@@ -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 = <nummer>`
- 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
```