This commit is contained in:
+11
-2
@@ -162,8 +162,17 @@ $result = ai_backend_call_and_charge($pdo, $config, $user, $systemPrompt, $userC
|
||||
// Erst NACH der Abrechnung validieren: die Token wurden real verbraucht, das wird auch dann
|
||||
// verrechnet, wenn die KI kein valides JSON geliefert hat (siehe Planungsdokument).
|
||||
$parsed = ai_backend_decode_json_response($result['content']);
|
||||
if (!is_array($parsed) || !isset($parsed['lessons'])) {
|
||||
ai_backend_fail(502, 'Die KI hat kein gültiges JSON im erwarteten Schema zurückgegeben.');
|
||||
if (!is_array($parsed) || !isset($parsed['lessons']) || !is_array($parsed['lessons'])) {
|
||||
// Die bezahlte Modellantwort nicht wegwerfen: Der Desktop-Client kann sie in einem
|
||||
// Rettungsdialog vollständig anzeigen und die Lehrkraft daraus gültiges JSON markieren bzw.
|
||||
// von Hand korrigieren lassen. Nur dieser Planungsendpunkt bietet einen manuellen Import an.
|
||||
ai_backend_fail(502, 'Die KI hat kein gültiges JSON im erwarteten Schema zurückgegeben.', [
|
||||
'rawResponse' => $result['content'],
|
||||
]);
|
||||
}
|
||||
|
||||
// Auch bei syntaktisch gültigem JSON kann erst der streng typisierte Desktop-Client einen
|
||||
// Feldfehler entdecken (z.B. ein unlesbares Datum). Deshalb reist die Originalantwort bis zum
|
||||
// Client mit; dort wird sie nach erfolgreicher Verarbeitung sofort wieder verworfen.
|
||||
$parsed['rawResponse'] = $result['content'];
|
||||
echo json_encode($parsed);
|
||||
|
||||
Reference in New Issue
Block a user