This commit is contained in:
team 1
2026-05-12 11:53:36 +02:00
parent 3f914c1efd
commit 64d1ec71e8
7 changed files with 289 additions and 5 deletions

View File

@@ -0,0 +1,50 @@
# RetrieX Patch p101c - Admin Eval Case Delete
## Ziel
Ergänzt die Admin-Eval-Case-Verwaltung um eine sichere Löschfunktion für einzelne Eval-Cases.
Damit können falsch angelegte oder nicht mehr benötigte Cases direkt im Admin entfernt werden, ohne die Eval-Suite-Übersicht weiter aufzublähen.
## Umfang
- Neue POST-Route `admin_evals_case_delete` unter `/admin/evals/cases/delete`
- CSRF-Schutz pro Eval-Typ und Case-ID
- Rollenprüfung über `ROLE_KNOWLEDGE_ADMIN`
- Entfernen genau des ausgewählten Cases aus `tests/evals/cases/<type>.ndjson`
- Abbruch ohne Änderung, wenn die NDJSON-Datei ungültig ist oder der Case nicht gefunden wird
- Löschbereich auf der separaten Case-Seite `/admin/evals/cases/new`
- Bestätigungsdialog vor dem Löschen
- Hinweis, dass nach dem Löschen der betroffene Eval-Typ erneut ausgeführt werden sollte
## Nicht geändert
- Keine Retrieval-Logik
- Keine Shopquery-Logik
- Keine Follow-up-Logik
- Keine Answer-Guard-Logik
- Keine Eval-Assertions
- Keine bestehenden Cases automatisch gelöscht
- Keine YAML-/Parameteränderung
- Keine Migration
## Prüfung
Nach Einspielen:
```bash
php bin/console mto:agent:config:validate
php bin/console mto:agent:eval:run retrieval
php bin/console mto:agent:eval:run shop_query
php bin/console mto:agent:eval:run followup
php bin/console mto:agent:eval:run answer_guard
```
Im Admin:
1. `/admin/evals/cases/new` öffnen.
2. Einen Test-Case anlegen oder einen bestehenden Test-Case auswählen.
3. `Case löschen` klicken.
4. Bestätigungsdialog bestätigen.
5. Prüfen, dass der Case aus der Liste verschwindet.
6. Den betroffenen Eval-Typ erneut laufen lassen.

View File

@@ -0,0 +1,53 @@
# RetrieX Patch p101d - Admin Eval Case Delete Hotfix
## Ziel
Behebt einen Fehler aus p101c, bei dem beim Löschen eines Eval-Cases folgende Exception auftreten konnte:
```text
Call to undefined method App\Service\Admin\EvalAdminService::normalizeExistingCaseId()
```
## Ursache
`EvalAdminService::deleteCase()` ruft eine Validierungs-Hilfsmethode für bestehende Case-IDs auf. Diese Methode wurde in p101c referenziert, aber nicht in die Service-Klasse aufgenommen.
## Änderung
Ergänzt `normalizeExistingCaseId()` in `EvalAdminService`.
Die Methode:
- trimmt die übergebene Case-ID,
- verhindert leere IDs,
- erlaubt nur Buchstaben, Zahlen, Unterstriche und Bindestriche,
- gibt eine verständliche Fehlermeldung bei ungültigen IDs zurück.
## Geänderte Dateien
```text
src/Service/Admin/EvalAdminService.php
patch_history/RETRIEX_PATCH_101D_ADMIN_EVAL_CASE_DELETE_HOTFIX_README.md
```
## Nicht geändert
```text
keine Eval-Logik
keine Retrieval-Logik
keine Shopquery-Logik
keine Follow-up-Logik
keine Answer-Guard-Logik
keine YAML-/Parameteränderung
keine bestehenden Eval-Cases
keine Migration
```
## Prüfung
```bash
php -l src/Service/Admin/EvalAdminService.php
php bin/console mto:agent:config:validate
```
Danach im Admin einen Eval-Case löschen.