# RetrieX Patch 20b – Routing Normalization Fix

## Ziel

Patch 20b korrigiert den ersten LLM-Normalisierungsansatz aus p20. Die LLM-gestützte Eingabekorrektur bleibt erhalten, wird aber robuster und sauberer im Routing verwendet.

## Problem

Der Test `was kpstet der indikator` blieb nach p20 weiterhin RAG-only. Ursache: Wenn das LLM wegen strenger Guardrails unsicher war, konnte es den Originaltext unverändert zurückgeben. Dann erkannte die Commerce-/Shop-Intent-Logik das falsch geschriebene Routing-Wort nicht.

Zusätzlich darf die normalisierte Routing-Frage nicht die eigentliche Nutzerfrage in History und Antwortkontext ersetzen.

## Lösung

- Originalprompt bleibt erhalten.
- Separater `routingPrompt` wird vor Intent-, RAG- und Shop-Routing verwendet.
- LLM-Normalisierung bleibt der erste Schritt.
- Danach generischer Fuzzy-Fallback gegen kanonische Routing-Terme aus YAML.
- Keine Tippfehlerlisten wie manuell gepflegte Vertipper.
- Fuzzy-Matching arbeitet nur gegen kanonische Signalwörter wie `kostet`, `suche`, `shop`, `messgerät`, `lösung`, `schwimmbad` usw.
- Mehrdeutige oder unsichere Korrekturen werden verworfen.
- Produktnamen, Zahlen und fachliche Ergänzungen werden nicht hinzugefügt.

## Zusätzliche Intent-Korrektur

Die Formulierung `ich suche eine preiswerte Lösung zur messung von pH & Chlor für mein schwimmbad` wird als beratende Produktsuche behandelt. Dafür wurde ein zusätzliches Advisory-Product-Selection-Pattern sowie Preiswert-/Günstig-Signale in YAML ergänzt.

## Geänderte Dateien

- `src/Agent/AgentRunner.php`
- `src/Config/AgentRunnerConfig.php`
- `src/Config/RetriexEffectiveConfigProvider.php`
- `config/retriex/agent.yaml`
- `config/retriex/intent.yaml`

## Pflichtchecks

```bash
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
```

## Manuelle Regressionen

1. `was kpstet der indikator`
   - Erwartung: interne Routing-Normalisierung zu `was kostet der indikator`
   - Shop-Suche wird angefragt

2. `ich suche eine preiswerte Lösung zur messung von pH & Chlor für mein schwimmbad`
   - Erwartung: beratende Shop-/Produktsuche wird ausgelöst
   - Chlor-/pH-Messfähigkeit darf genannt werden
   - Schwimmbad-Eignung nur vorsichtig formulieren, wenn nicht explizit belegt

3. Stabile 1.5.1-Baseline
   - `Was ist der niedrigste Grenzwert für die Wasserhärte, welcher mit einem Testomaten überwacht werden kann?`
   - `mit welchem indikator wird der wert gemessen`
