This commit is contained in:
team 1
2026-05-09 20:28:43 +02:00
parent aae4935d69
commit 8827a5a13b
4 changed files with 382 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
# RetrieX Patch p72 - Exact Accessory Code Precision
## Ziel
p72 verhindert, dass bei Preis-/Verfügbarkeits-Follow-ups zu einer konkret referenzierten Zubehör-, Indikator- oder Reagenz-Code-Identität nahe Varianten als gleichwertige Treffer in die Antwort gelangen.
Konkreter Regressionsfall:
1. `Was ist der niedrigste Grenzwert für die Wasserhärte, welcher mit einem Testomaten überwacht werden kann?`
2. `mit welchem indikator wird der wert gemessen`
3. `was kostet der indikator`
Wenn der Verlauf auf `Indikatortyp 300` zeigt, dürfen Produkte wie `300 S` nicht als Preisantwort für `300` mit ausgegeben werden, sofern der Nutzer nicht explizit die vollständige Variante `300 S` angefragt hat.
## Umsetzung
- `AgentRunner` filtert Shop-Ergebnisse nach einer exakt angefragten Zubehör-/Code-Identität, bevor die Ergebnisse an den PromptBuilder gehen.
- Die Erkennung ist generisch:
- Code-Begriffe kommen aus `genre.yaml` / bestehender Konfiguration (`search_repair.requested_accessory_code_terms`).
- Code-Token werden anhand bestehender Code-Patterns bzw. generischer alphanumerischer Code-Formen erkannt.
- Ein reiner Code wie `300` matcht nicht mehr automatisch Varianten mit zusätzlichem Ein-Buchstaben-Suffix wie `300 S`.
- Wird die Variante explizit angefragt, z. B. `300 S`, bleibt sie matchfähig.
- `AgentRunnerConfig` stellt die bestehenden requested-accessory-code terms für den Runner bereit.
- `genre.yaml` ergänzt eine generische Prompt-Regel, damit das LLM zusätzlich keine Code-Varianten zusammenführt, die nicht explizit angefragt wurden.
## Bewusst nicht geändert
- Kein Testomat-/Indikator-300-Sonderfall im PHP-Core.
- Keine neue harte fachliche Tokenliste im PHP-Core.
- Keine Änderung an Retrieval, Scoring, Shopware-Suche, Ranking oder Follow-up-Action-UI.
## Geänderte Dateien
- `src/Agent/AgentRunner.php`
- `src/Config/AgentRunnerConfig.php`
- `config/retriex/genre.yaml`
## Lokale Checks
Ausgeführt im Patch-Arbeitsverzeichnis:
```bash
php -l src/Agent/AgentRunner.php
php -l src/Config/AgentRunnerConfig.php
python3 - <<'PY'
import yaml
for f in ['config/retriex/genre.yaml','config/retriex/chat-messages.yaml','config/retriex/agent.yaml']:
with open(f, 'r', encoding='utf-8') as fh:
yaml.safe_load(fh)
print('YAML parse OK')
PY
```
`vendor/` ist im ZIP nicht enthalten; Symfony-Console-Checks bitte in der Zielumgebung ausführen.
## Empfohlene Regressionstests
```text
Was ist der niedrigste Grenzwert für die Wasserhärte, welcher mit einem Testomaten überwacht werden kann?
```
```text
mit welchem indikator wird der wert gemessen
```
```text
was kostet der indikator
```
Erwartung:
- Preisantwort für `Indikatortyp 300` bleibt bei exakt passenden `300`-Produkten.
- `300 S` wird nicht als Preisvariante für `300` ausgegeben, solange `300 S` nicht explizit angefragt wurde.
- Falls explizit nach `300 S` gefragt wird, darf `300 S` weiterhin gefunden werden.