This commit is contained in:
team 1
2026-05-06 13:36:49 +02:00
parent 90023df24d
commit 6a22e0b4c5

View File

@@ -0,0 +1,112 @@
# RetrieX Patch p49 - Direct Product Compound Guard
## Ziel
Behebt einen Regressionsfall nach p45/p48 bei direkten Shop-Produktsuchen mit zusammengesetzten Produktnamen.
Beispiel:
```text
welche neomeris puffer gibt es für Kalibrierung von pH-Messgeräten
```
Die erzeugte Shopquery ist sinnvoll:
```text
neomeris puffer kalibrierung ph messgeräten
```
Trotzdem konnte RetrieX nach der Shop-Suche `Shop-Treffer: 0` anzeigen, obwohl der Shop mit identischer Query passende Pufferprodukte liefert.
## Ursache
Der direkte p45-Produktguard filtert Shop-Ergebnisse nach angefragten Produkttypen. Bei `puffer` verlangt der Guard bisher einen exakten Token-Treffer im Produkttext.
Shopware-Produkte heißen aber typischerweise z. B.:
```text
Neomeris pH-Pufferlösung pH 7.00
```
Nach Tokenisierung wird daraus u. a.:
```text
pufferlösung
```
Das ist kein exakter Token `puffer`. Dadurch konnten fachlich passende Pufferprodukte nach erfolgreicher Shop-Suche vom Guard vollständig entfernt werden.
## Änderung
- Der direkte Produktguard behält seine exakte Tokenprüfung als Standard.
- Zusätzlich gibt es eine kleine, YAML-konfigurierte Compound-Prefix-Erlaubnis für ausgewählte Produkttypen.
- Aktuell erlaubt:
- `puffer`
- `kalibrierpuffer`
- Damit matcht `puffer` auch Produkt-Tokens wie `pufferlösung`, ohne eine breite PHP-Sonderlogik einzubauen.
## Wichtig
- Keine Änderung an der Shopquery-Erzeugung.
- Keine Änderung an Shopware-Kriterien.
- Keine Änderung am LLM-Prompting.
- Keine produkt- oder markenspezifische Sonderlogik.
- Der Guard bleibt defensiv und nur für explizit konfigurierte Compound-Prefix-Terme erweitert.
## Geänderte Dateien
```text
config/retriex/agent.yaml
src/Agent/AgentRunner.php
src/Config/AgentRunnerConfig.php
patch_history/RETRIEX_PATCH_49_DIRECT_PRODUCT_COMPOUND_GUARD_README.md
```
## Lokale Checks
Ausgeführt:
```bash
php -l src/Agent/AgentRunner.php
php -l src/Config/AgentRunnerConfig.php
python3 - <<'PY'
import yaml
with open('config/retriex/agent.yaml', 'r', encoding='utf-8') as fh:
yaml.safe_load(fh)
print('YAML ok')
PY
```
`bin/console` wurde lokal nicht ausgeführt, da im entpackten ZIP kein `vendor/` enthalten ist.
## Nach dem Einspielen prüfen
```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
```
## Erwartete Regressionstests
```text
welche neomeris puffer gibt es für Kalibrierung von pH-Messgeräten
```
Erwartung:
- Shopquery bleibt produktnah.
- Shop-Treffer werden nicht durch den direkten Produktguard auf 0 weggefiltert.
- Pufferlösung-/Kalibrierpuffer-Produkte dürfen als passende Treffer erscheinen.
Weiterhin prüfen:
```text
zeige mir Anschlusskabel für pH/Redox
zeige mir Anschlusskabel für pH/Redox . ordne die liste nach metern
zeige mir Anschlusskabel für pH/Redox ab 20m
```
Erwartung:
- p45/p46-Verhalten bleibt erhalten.