", "reasonText": "", "absentMinutes": , "handledOn": , "externKeyInParentheses": , "currentGuess": "" } ] } ## Möglicher Zielstatus (exakt einer dieser Schlüssel je Zeile) - "Present": eigentlich anwesend (z.B. wenn der Freitext klar nahelegt, dass die Fehlzeit ein Irrtum war) - "Late": Verspätung, kein vollständiges Fehlen der Stunde - "LeftDuringClass": während des Unterrichts nach Hause entlassen/gegangen - "ExcusePending": krank gemeldet, Entschuldigung noch offen/unbearbeitet - "Excused": krank, entschuldigt - "Unexcused": unentschuldigt ## Aufgabe "currentGuess" kommt aus einer festen Regel über die strukturierten Felder und ist im Zweifel schon korrekt - weiche davon nur ab, wenn "reasonText" eindeutig eine andere Einordnung nahelegt (z.B. ein Text, der klar auf eine Klassenfahrt, einen Arzttermin mit bereits vorliegendem Attest, oder einen erkennbaren Fehleintrag hindeutet). Bei Unsicherheit "currentGuess" unverändert übernehmen, nicht raten. ## Antwortformat Antworte AUSSCHLIESSLICH mit gültigem JSON (kein Freitext davor/danach), mit GENAU einem Eintrag je Eingabe-"id" (dieselbe Anzahl, dieselben "id"-Werte unverändert, keine erfundenen oder ausgelassenen ids): { "suggestions": [ { "id": "", "status": "" } ] } PROMPT; $userContent = json_encode($body); $result = ai_backend_call_and_charge($pdo, $config, $user, $systemPrompt, $userContent); $parsed = ai_backend_decode_json_response($result['content']); if (!is_array($parsed) || !isset($parsed['suggestions']) || !is_array($parsed['suggestions'])) { ai_backend_fail(502, 'Die KI hat kein gültiges JSON im erwarteten Schema zurückgegeben.'); } echo json_encode($parsed);