# RetrieX Patch 20e - Force Commercial Table Follow-up Routing

## Ziel

Patch 20e behebt die weiterhin fehlschlagende referenzielle Shop-Nachfrage nach einer zuvor erzeugten Tabelle, z. B.:

```text
welche grenzwerte kann der testomat 808 messen
```

gefolgt von:

```text
die tabelle mit preisen
```

oder:

```text
die tabelle mit shop preisen
```

Diese Follow-ups duerfen nicht mehr in den RAG-only-Pfad fallen.

## Ursache

Die bisherigen p20b/p20c/p20d-Ansaetze waren noch zu fragil, weil die Shop-Promotion entweder zu spaet griff oder indirekt ueber den normalen Commerce-Intent- und History-Anchor-Pfad lief. Wenn diese Route nicht aktiv wurde, blieb der Status bei `Shop-Treffer: nicht angefragt`.

## Aenderungen

- Fuehrt in `AgentRunner` einen expliziten `forcedShopSearchQuery` ein.
- Kommerzielle Tabellen-Follow-ups werden vor der normalen Commerce-Intent-Entscheidung erkannt.
- Wenn ein passender Tabellen-/Preis-Follow-up erkannt wird, wird der Shop-Pfad erzwungen.
- Die konkrete Shop-Query wird aus der Conversation-History abgeleitet.
- Bei Testomat-808-Grenzwert-/Indikator-Tabellen wird bevorzugt eine Query wie `Testomat 808 indikator` erzeugt.
- Wenn kein stabiler Kontext ableitbar ist, bleibt die Anfrage dennoch im Shop-Pfad und nutzt den konfigurierten Fallback `indikator` statt RAG-only.
- Die LLM-Input-Normalisierung aus p20 bleibt erhalten.
- Es werden keine konkreten Tippfehlerlisten eingefuehrt.
- Keine Scoring-/Vector-/Retrieval-Aenderung.

## Geaenderte Dateien

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

## Pflichtchecks nach Einspielen

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

```text
was kpstet der indikator
```

Erwartung: Shop-Suche wird ausgeloest.

```text
ich suche eine preiswerte Lösung zur messung von pH & Chlor für mein schwimmbad
```

Erwartung: beratende Shop-/Produktsuche wird ausgeloest.

```text
welche grenzwerte kann der testomat 808 messen
```

gefolgt von:

```text
die tabelle mit preisen
```

Erwartung: Shop-Suche wird ausgeloest, Query sinngemaess `Testomat 808 indikator` oder mindestens `indikator`.

```text
die tabelle mit shop preisen
```

Erwartung: Shop-Suche wird ebenfalls ausgeloest, nicht RAG-only.
