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