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

@@ -1,16 +1,16 @@
{% extends 'admin/base.html.twig' %}
{% block title %}Eval-Case erstellen{% endblock %}
{% block title %}Eval-Cases verwalten{% endblock %}
{% block body %}
<div class="d-flex justify-content-between align-items-center mb-4 flex-wrap gap-2">
<div>
<h1 class="h3 mb-1">
<i class="bi bi-journal-plus"></i> Eval-Case erstellen
<i class="bi bi-journal-plus"></i> Eval-Cases verwalten
</h1>
<div class="small text-secondary">
Neue Regression-Cases separat anlegen, ohne die Eval-Suite-Übersicht aufzublähen.
Neue Regression-Cases separat anlegen oder bestehende Cases entfernen, ohne die Eval-Suite-Übersicht aufzublähen.
</div>
</div>
@@ -203,6 +203,59 @@
</div>
<div class="col-xl-4">
<div class="card bg-black border-danger text-light shadow-sm mb-4">
<div class="card-body">
<h5 class="text-danger mb-3">
<i class="bi bi-trash3"></i> Bestehende Eval-Cases entfernen
</h5>
<p class="small text-secondary mb-3">
Hier kannst du falsch angelegte oder nicht mehr benötigte Cases aus den
<code>tests/evals/cases/*.ndjson</code>-Dateien entfernen. Das Löschen betrifft nur den Eval-Case,
nicht das RAG-Wissen, nicht den Shop und nicht die bestehenden Reports.
</p>
{% for type, label in types %}
{% set cases = cases_by_type[type]|default([]) %}
<details class="border border-secondary rounded p-3 mb-3" {% if type == case_draft.type|default('retrieval') %}open{% endif %}>
<summary class="text-info" style="cursor:pointer;">
{{ label }} <span class="text-secondary">({{ cases|length }} Cases)</span>
</summary>
{% if cases is empty %}
<div class="small text-secondary mt-3">
Für diesen Typ gibt es aktuell keine Cases.
</div>
{% else %}
<div class="mt-3">
{% for case in cases %}
<div class="border-top border-secondary pt-3 mt-3">
<div class="small mb-2">
<code>{{ case.id }}</code>
<div class="text-secondary mt-1">{{ case.prompt }}</div>
</div>
<form method="post"
action="{{ path('admin_evals_case_delete') }}"
onsubmit="return confirm('Eval-Case {{ case.id }} wirklich löschen? Diese Änderung entfernt die NDJSON-Zeile dauerhaft.');">
<input type="hidden" name="_token" value="{{ csrf_token('admin_eval_case_delete_' ~ type ~ '_' ~ case.id) }}">
<input type="hidden" name="type" value="{{ type }}">
<input type="hidden" name="case_id" value="{{ case.id }}">
<button type="submit" class="btn btn-sm btn-outline-danger">
<i class="bi bi-trash3"></i> Case löschen
</button>
</form>
</div>
{% endfor %}
</div>
{% endif %}
</details>
{% endfor %}
<div class="small text-secondary">
Nach dem Löschen solltest du den betroffenen Eval-Typ einmal ausführen, damit der Report zum neuen Case-Bestand passt.
</div>
</div>
</div>
<div class="card bg-black border-secondary text-light shadow-sm mb-4">
<div class="card-body">
<h5 class="text-info mb-3">