# RetrieX Patch 20c – Commercial Table Follow-up Fix

## Ziel

Patch 20c korrigiert eine Regression aus dem p20/p20b-Normalisierungs- und Routing-Umfeld: kurze referenzielle Nachfragen wie `die tabelle mit preisen` müssen den letzten fachlichen Kontext übernehmen und eine Shop-Suche auslösen.

## Reproduzierter Problemfall

1. `welche grenzwerte kann der testomat 808 messen`
2. RetrieX antwortet korrekt mit Testomat 808 und einer Grenzwert-/Indikatortyp-Tabelle.
3. Folgefrage: `die tabelle mit preisen`

Vor p20c blieb die Folgefrage RAG-only bzw. ohne Shop-Suche. Das ist fachlich zu schwach, weil `die tabelle` klar auf die vorherige Indikatortyp-Tabelle referenziert und `mit preisen` aktuelle Shopdaten verlangt.

## Lösung

- LLM-Input-Normalisierung aus p20/p20b bleibt erhalten.
- Es gibt eine zusätzliche, YAML-konfigurierbare Erkennung für kommerzielle Tabellen-Follow-ups.
- Wenn der normale Commerce-Intent ausfällt, kann ein kurzer Tabellen-/Preis-Follow-up anhand vorhandener History-Anker gezielt zu `product_search` hochgestuft werden.
- Für Preis-Tabellen-Follow-ups wird vor einer generischen optimierten Suchquery ein kontextueller Shop-Suchbegriff aus der letzten Antwort abgeleitet.
- Beim Testomat-808-/Indikatortyp-Fall ergibt der Fallback generisch `Testomat 808 indikator` statt nur `die tabelle mit preisen` oder `Testomat 808`.
- Es werden keine konkreten Tippfehlerlisten eingeführt.

## 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: LLM-/Fuzzy-Normalisierung bleibt wirksam.
   - Shop-Suche wird ausgelöst.

2. `ich suche eine preiswerte Lösung zur messung von pH & Chlor für mein schwimmbad`
   - Erwartung: beratende Shop-/Produktsuche wird ausgelöst.

3. `welche grenzwerte kann der testomat 808 messen` → `die tabelle mit preisen`
   - Erwartung: Folgefrage wird als kommerzieller Tabellen-Follow-up erkannt.
   - Shop-Suche wird ausgelöst.
   - Gesendete Suchquery sollte sinngemäß `Testomat 808 indikator` sein.
   - Antwort soll eine Preistabelle der passenden Indikatoren/Zubehörtreffer bilden, soweit Shopdaten vorhanden sind.

## Nicht geändert

- Kein Scoring-Umbau.
- Keine harte Tippfehlerliste.
- Keine Änderung an Retrieval-/Vectorlogik.
- Keine Änderung an Shop-Service-Suche selbst.
