fix p47
This commit is contained in:
@@ -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
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user