p91
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# RetrieX Patch 90 - Chat Header Icon Preservation
|
||||
|
||||
## Ziel
|
||||
|
||||
Die Icons im Chat-Header bleiben sichtbar, waehrend die Button-Texte weiterhin ueber `config/retriex/chat-messages.yaml` gepflegt werden.
|
||||
|
||||
Betroffen sind:
|
||||
|
||||
- `Diesen Chat loeschen`
|
||||
- `Abmelden`
|
||||
|
||||
## Ursache
|
||||
|
||||
Die Frontend-Konfiguration schreibt Elemente mit `data-chat-message-text` per `textContent`. Wenn dieses Attribut direkt auf einem Button oder Link liegt, wird dessen kompletter Inhalt ersetzt. Dadurch verschwinden vorhandene SVG-Icons.
|
||||
|
||||
## Aenderungen
|
||||
|
||||
### `templates/chat/index.html.twig`
|
||||
|
||||
- `data-chat-message-text` liegt nicht mehr direkt auf dem Clear-Button oder Logout-Link.
|
||||
- Die konfigurierbaren Texte liegen nun in separaten `<span>`-Elementen innerhalb der Buttons.
|
||||
- Die SVG-Icons bleiben dadurch Bestandteil des Buttons/Links.
|
||||
- Fuer die Buttons wird zusaetzlich `data-chat-message-aria-label` gesetzt.
|
||||
- Die SVGs erhalten `aria-hidden="true"` und `focusable="false"`, damit Screenreader den Button-Text verwenden.
|
||||
|
||||
## Bewusst nicht geaendert
|
||||
|
||||
- Keine Aenderung an Chat-Security, Admin-Security oder Userverwaltung.
|
||||
- Keine Aenderung an RAG, Retrieval, Scoring, Ranking, Shop-Matching, SSE oder History-Logik.
|
||||
- Keine Aenderung an `public/assets/js/base.js`; das bestehende Message-System bleibt unveraendert.
|
||||
- Keine Aenderung an `config/retriex/chat-messages.yaml`.
|
||||
|
||||
## Erwartetes Verhalten
|
||||
|
||||
- Der Button `Diesen Chat loeschen` zeigt weiterhin das Papierkorb-Icon plus Text.
|
||||
- Der Link `Abmelden` zeigt weiterhin das Power-Icon plus Text.
|
||||
- Beide Texte koennen weiterhin zentral ueber `chat-messages.yaml` angepasst werden.
|
||||
- Beim Laden der Chat-Messages werden nur die Text-Spans ersetzt, nicht die Icons.
|
||||
|
||||
## Lokale Checks
|
||||
|
||||
Ausgefuehrt:
|
||||
|
||||
```bash
|
||||
python3 - <<'PY'
|
||||
from pathlib import Path
|
||||
s = Path('templates/chat/index.html.twig').read_text()
|
||||
assert '<button id="clear" class="btn btn-trans" data-chat-message-aria-label="ui.buttons.clear">' in s
|
||||
assert '<span data-chat-message-text="ui.buttons.clear">Diesen Chat löschen</span>' in s
|
||||
assert 'id="chat-logout"' in s
|
||||
assert '<span data-chat-message-text="ui.buttons.logout">Abmelden</span>' in s
|
||||
assert 'class="bi bi-trash-fill"' in s
|
||||
assert 'class="bi bi-power"' in s
|
||||
assert 'id="clear" class="btn btn-trans" data-chat-message-text=' not in s
|
||||
assert 'id="chat-logout" href="{{ path(\'chat_logout\') }}" class="btn btn-trans"\n data-chat-message-text=' not in s
|
||||
print('p90 icon preservation checks OK')
|
||||
PY
|
||||
```
|
||||
|
||||
Ergebnis:
|
||||
|
||||
- Template-Strukturcheck OK
|
||||
- Clear-/Logout-Icons bleiben im DOM
|
||||
- Konfigurierbare Texte liegen auf separaten Spans
|
||||
|
||||
Symfony-Console-Checks muessen in der Zielumgebung mit installiertem `vendor/` ausgefuehrt werden.
|
||||
@@ -0,0 +1,85 @@
|
||||
# RetrieX Patch p91 - Shop Query Stopword Profile Fix
|
||||
|
||||
## Ziel
|
||||
|
||||
Shop-Suchqueries sollen vor dem Store-API-Call konsequenter von reinen Sprach-, Satz- und Relationswoertern bereinigt werden. Der konkrete Regressionsfall war:
|
||||
|
||||
- Verlauf: `Testomat 808` / `Indikatortyp 300`
|
||||
- Preis-Follow-up: `was kostet der indikator`
|
||||
- Fehlerhafte Shopquery: `testomat 808 erreicht 300 indikator`
|
||||
- Erwartete Shopquery: `testomat 808 300 indikator`
|
||||
|
||||
Das Wort `erreicht` blockierte in der Shop-API Treffer, obwohl die gleiche Query ohne dieses Wort passende Produkte liefert.
|
||||
|
||||
## Ursache
|
||||
|
||||
Es gab bereits zwei Cleanup-Stufen:
|
||||
|
||||
1. `stopword_cleanup`
|
||||
2. `positive_token_filter`
|
||||
|
||||
`erreicht` war jedoch weder in der Shop-Stopword-Liste noch in den blockierten Positive-Filter-Tokens. Danach konnte es ueber das generische `adjacent_variant_patterns`-Pattern als angeblich moegliches Modell-/Variantentoken durchrutschen, weil es zwischen den numerischen Kontexttokens `808` und `300` stand.
|
||||
|
||||
## Aenderungen
|
||||
|
||||
### `src/Agent/AgentRunner.php`
|
||||
|
||||
- Die Shop-Stopword-Bereinigung nutzt jetzt zusaetzlich das zentrale Language-Cleanup-Profil `commerce_query`.
|
||||
- Der Positive-Token-Filter verwendet dieselben Cleanup-Tokens ebenfalls als Blocklist.
|
||||
- Dadurch koennen zuvor bereinigte Sprach-/Relationswoerter nicht spaeter durch die Variantenerkennung wieder in die finale Shopquery gelangen.
|
||||
|
||||
### `config/retriex/language.yaml`
|
||||
|
||||
- Neues Stopword-Group-Set `shop_relation_noise` fuer Shopquery-Sprachrauschen, z. B.:
|
||||
- `erreicht`
|
||||
- `gemessen`
|
||||
- `konzipiert`
|
||||
- `speziell`
|
||||
- `wert`
|
||||
- Das Profil `commerce_query` referenziert diese Gruppe.
|
||||
|
||||
### `config/retriex/genre.yaml`
|
||||
|
||||
- Die Source-of-Truth-Profilstruktur wurde entsprechend gespiegelt.
|
||||
|
||||
### `config/retriex/governance.yaml`
|
||||
|
||||
- Der Frozen-Legacy-Hash fuer `language.cleanup_profiles.commerce_query` wurde aktualisiert.
|
||||
|
||||
## Erwartetes Verhalten
|
||||
|
||||
- `testomat 808 erreicht 300 indikator` wird zu `testomat 808 300 indikator` bereinigt.
|
||||
- Produkt-/Fachanker bleiben erhalten, z. B.:
|
||||
- `testomat lab cl`
|
||||
- `testomat 2000 thcl 100276`
|
||||
- `chlor select sensor`
|
||||
|
||||
## Lokale Checks
|
||||
|
||||
Im Patch-Arbeitsbaum ausgefuehrt:
|
||||
|
||||
```bash
|
||||
php -l src/Agent/AgentRunner.php
|
||||
python3 - <<'PY'
|
||||
from pathlib import Path
|
||||
import yaml
|
||||
for p in ['config/retriex/language.yaml','config/retriex/genre.yaml','config/retriex/governance.yaml']:
|
||||
yaml.safe_load(Path(p).read_text())
|
||||
PY
|
||||
```
|
||||
|
||||
Zusatzsimulation:
|
||||
|
||||
- `testomat 808 erreicht 300 indikator` => `testomat 808 300 indikator`
|
||||
- `testomat lab cl` bleibt erhalten
|
||||
- `testomat 2000 thcl 100276` bleibt erhalten
|
||||
- `chlor select sensor` bleibt erhalten
|
||||
|
||||
## Noch in Nutzerumgebung pruefen
|
||||
|
||||
```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
|
||||
```
|
||||
Reference in New Issue
Block a user