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.
32 lines
886 B
C#
32 lines
886 B
C#
using Avalonia.Controls;
|
|
using Avalonia.Interactivity;
|
|
using LehrerApp.Desktop.ViewModels.Groups;
|
|
|
|
namespace LehrerApp.Desktop.Views.Groups;
|
|
|
|
public partial class AiAssistDialog : Window
|
|
{
|
|
public AiAssistDialog() => InitializeComponent();
|
|
|
|
private async void OnSend(object? s, RoutedEventArgs e)
|
|
{
|
|
if (DataContext is AiAssistDialogViewModel vm && vm.SendCommand.CanExecute(null))
|
|
await vm.SendCommand.ExecuteAsync(null);
|
|
}
|
|
|
|
private void OnApply(object? s, RoutedEventArgs e)
|
|
{
|
|
if (DataContext is AiAssistDialogViewModel vm && vm.ApplyCommand.CanExecute(null))
|
|
{
|
|
vm.ApplyCommand.Execute(null);
|
|
Close(true);
|
|
}
|
|
}
|
|
|
|
private void OnCancel(object? s, RoutedEventArgs e)
|
|
{
|
|
if (DataContext is AiAssistDialogViewModel vm) vm.CancelCommand.Execute(null);
|
|
Close(false);
|
|
}
|
|
}
|