This commit is contained in:
team 1
2026-05-12 11:08:34 +02:00
parent 6dced1c4df
commit 6e2ca15e97
5 changed files with 542 additions and 287 deletions

View File

@@ -68,7 +68,35 @@ final class AdminEvalController extends AbstractController
]);
}
#[Route('/case/create', name: 'admin_evals_case_create', methods: ['POST'])]
#[Route('/cases/new', name: 'admin_evals_case_new', methods: ['GET'])]
public function newCase(Request $request, EvalAdminService $evals): Response
{
$this->denyAccessUnlessGranted(ApplicationRoles::ROLE_KNOWLEDGE_ADMIN);
$type = trim((string) $request->query->get('type', 'retrieval'));
if (!in_array($type, $evals->supportedTypeNames(), true)) {
$type = 'retrieval';
}
$sourceType = trim((string) $request->query->get('source_type', ''));
$sourceCaseId = trim((string) $request->query->get('source_case_id', ''));
try {
$draft = $sourceType !== '' && $sourceCaseId !== ''
? $evals->caseDraftFromReportResult($sourceType, $sourceCaseId)
: $evals->emptyCaseDraft($type);
} catch (\Throwable $e) {
$this->addFlash('warning', $e->getMessage());
$draft = $evals->emptyCaseDraft($type);
}
return $this->render('admin/evals/case_new.html.twig', [
'types' => $evals->supportedTypes(),
'case_draft' => $draft,
]);
}
#[Route('/cases', name: 'admin_evals_case_create', methods: ['POST'])]
public function createCase(Request $request, EvalAdminService $evals): Response
{
$this->denyAccessUnlessGranted(ApplicationRoles::ROLE_KNOWLEDGE_ADMIN);
@@ -78,6 +106,15 @@ final class AdminEvalController extends AbstractController
}
$type = trim((string) $request->request->get('type', 'retrieval'));
$draft = [
'type' => $type,
'id' => (string) $request->request->get('id', ''),
'prompt' => (string) $request->request->get('prompt', ''),
'assert_json' => (string) $request->request->get('assert_json', ''),
'history_json' => (string) $request->request->get('history_json', ''),
'request_context_hint' => (string) $request->request->get('request_context_hint', ''),
'source_label' => '',
];
try {
$created = $evals->createCase(
@@ -95,17 +132,21 @@ final class AdminEvalController extends AbstractController
'success',
sprintf('Eval-Case "%s" wurde in %s.ndjson gespeichert.', (string) ($created['id'] ?? ''), $type)
);
return $this->redirectToRoute('admin_evals_index', [
'type' => $type,
]);
} catch (\Throwable $e) {
$this->addFlash('danger', $e->getMessage());
}
if (!in_array($type, $evals->supportedTypeNames(), true)) {
$type = 'retrieval';
$draft['type'] = 'retrieval';
}
return $this->redirectToRoute('admin_evals_index', [
'type' => $type,
]);
return $this->render('admin/evals/case_new.html.twig', [
'types' => $evals->supportedTypes(),
'case_draft' => $draft,
], new Response('', Response::HTTP_UNPROCESSABLE_ENTITY));
}
}