# RetrieX Patch 20d - Commercial Table Follow-up Routing Fix

## Ziel

p20c hat referenzielle Tabellen-/Preisnachfragen noch zu spaet bzw. zu fragil behandelt. Der Fall

```text
welche grenzwerte kann der testomat 808 messen

die tabelle mit preisen
```

konnte weiterhin in den RAG-only-Pfad fallen, wenn der kurze Commerce-History-Kontext keinen passenden Anchor geliefert hat.

p20d sorgt dafuer, dass kommerzielle Tabellen-Follow-ups zuerst sicher als Shop-Intent geroutet werden. Die konkrete Shop-Query wird danach robuster aus erweitertem bzw. vollem Verlauf abgeleitet.

## Aenderungen

Geaendert:

- `src/Agent/AgentRunner.php`

## Technische Anpassungen

- `detectCommerceIntentForRouting()` stuft kommerzielle Tabellen-Follow-ups nun auch dann als `product_search` ein, wenn im kurzen History-Kontext kein Anchor gefunden wurde.
- Die Anchor-Pruefung bleibt im Log sichtbar (`hasHistoryAnchor`), blockiert aber nicht mehr das Shop-Routing.
- `resolveShopSearchQuery()` nutzt fuer kommerzielle Tabellen-Follow-ups einen dedizierten Resolver.
- Der Resolver prueft zuerst den vorhandenen Commerce-History-Kontext, dann erweiterten History-Kontext, dann optional den Full-History-Kontext.
- Die History wird newest-first durchsucht, damit auch nach einem fehlgeschlagenen Zwischen-Follow-up noch der vorherige fachliche Tabellenkontext gefunden werden kann.
- Wenn ein Turn zwar Indikator-/Reagenz-Kontext enthaelt, aber kein Modell, wird nicht sofort generisch `indikator` genommen. Es wird weiter nach einem juengeren/aelteren Turn mit Modellanker gesucht. Erst danach wird auf die generische Query zurueckgefallen.

## Bewusst nicht geaendert

- Keine neue Tippfehlerliste.
- Keine Scoring-Aenderung.
- Keine Retrieval-/Vector-Aenderung.
- Keine Aenderung an der LLM-Input-Normalisierung aus p20/p20b.
- Keine neuen YAML-Pfade.

## Erwartete Wirkung

Der Flow

```text
welche grenzwerte kann der testomat 808 messen

die tabelle mit preisen
```

soll eine Shop-Suche ausloesen. Erwartete Shop-Query sinngemaess:

```text
testomat 808 indikator
```

Auch

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

soll in den Shop-Pfad gehen.

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

```text
ich suche eine preiswerte Loesung zur messung von pH & Chlor fuer mein schwimmbad
```

```text
welche grenzwerte kann der testomat 808 messen
die tabelle mit preisen
```

```text
welche grenzwerte kann der testomat 808 messen
die tabelle mit shop preisen
```
