KI-gestützte Planungsunterstützung (4.5.9) + Kompetenzkatalog-Import (8.1.2)

KI-Unterstützung: neuer Einstellungen-Tab (Anmeldung, Guthaben) und Button im
Planungs-Tab, der Einheiten+Stunden als JSON an ein neues PHP-Backend (ai-backend/)
sendet und die Antwort als prüfbare Vorschlagsliste zurückbringt. Provider-Aufruf,
Guthabenverwaltung und Abrechnung nach echten Token-Kosten laufen serverseitig, der
Desktop-Client sieht nie einen LLM-API-Key. Zentral abgesichert: eine von der KI
zurückgegebene Stunden-Id, die zu keiner echten Lesson der Einheit passt, wird nie
als Update übernommen, sondern immer als neue Stunde behandelt.

Kompetenzkatalog-Import (8.1.2): JSON-Export/Import für Kompetenzkataloge.
This commit is contained in:
2026-08-16 01:31:14 +02:00
parent 2b4fda7bb3
commit 8495e1b8d0
40 changed files with 2326 additions and 51 deletions
+34
View File
@@ -0,0 +1,34 @@
<?php
// Kopieren nach config.php und mit echten Werten füllen. config.php selbst ist in .gitignore
// eingetragen und darf nie committet werden.
return [
'db' => [
'host' => 'localhost',
'name' => 'lehrerapp_ai',
'user' => 'CHANGE_ME',
'pass' => 'CHANGE_ME',
],
// Nur 'anthropic' ist aktuell fertig implementiert (siehe providers/AnthropicProvider.php).
// Die Provider-Schnittstelle ist so gebaut, dass ein OpenAiProvider später ergänzt werden
// kann — bewusst nicht in dieser Runde, da aktuelle OpenAI-Preise/API-Version zum Zeitpunkt
// der Implementierung nicht verifiziert wurden (siehe TODO.md, Nachtrag zu 4.5.9).
'llm_provider' => 'anthropic',
'anthropic' => [
'api_key' => 'sk-ant-CHANGE_ME',
'model' => 'claude-sonnet-5',
],
// Sicherheitsnetz gegen ausufernde Antworten (und damit Kosten) pro Anfrage.
'max_output_tokens' => 8000,
// USD je 1 Million Token, getrennt nach Input/Output. Vor dem produktiven Einsatz gegen die
// aktuelle Anthropic-Preisseite gegenprüfen — Preise ändern sich.
'pricing' => [
'claude-sonnet-5' => ['input' => 3.00, 'output' => 15.00],
'claude-opus-5' => ['input' => 5.00, 'output' => 25.00],
'claude-haiku-4-5' => ['input' => 1.00, 'output' => 5.00],
],
];