Live-Test lieferte JsonException: DateOnly/TimeOnly hatten keinen Converter fürs im Systemprompt dokumentierte deutsche Format (TT.MM.JJJJ/HH:mm), .NET nutzte stattdessen ISO 8601 in beide Richtungen. Neue Converter mit Fallback aufs allgemeine Parsen. AiAssistDialog: indeterminierter ProgressBar statt nur Text während der Anfrage. Neuer Button "Erneut anfragen" erlaubt Nachfassen mit geänderter Anweisung, ohne den Dialog neu zu starten — schickt die aktuell angehakten Vorschläge als Entwurfskontext mit (AiPlanningService.MergeDraft), damit die KI auf dem noch ungespeicherten Stand aufbaut. Side-by-side-Vergleich beider Entwürfe als 4.5.18 zurückgestellt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
63 lines
3.7 KiB
XML
63 lines
3.7 KiB
XML
<Window xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:vm="clr-namespace:LehrerApp.Desktop.ViewModels.Groups"
|
|
x:Class="LehrerApp.Desktop.Views.Groups.AiAssistDialog"
|
|
x:DataType="vm:AiAssistDialogViewModel"
|
|
Title="KI-Unterstützung"
|
|
Width="480" Height="560" MinWidth="420" MinHeight="420"
|
|
CanResize="True" WindowStartupLocation="CenterOwner">
|
|
|
|
<Grid RowDefinitions="*,Auto" Margin="24">
|
|
<ScrollViewer Grid.Row="0">
|
|
<StackPanel Spacing="14" Margin="0,0,12,0">
|
|
<TextBlock Text="KI-Unterstützung" Classes="dialogtitle"/>
|
|
<TextBlock Text="{Binding UnitSummary}" FontSize="12" Opacity="0.6"/>
|
|
|
|
<StackPanel Spacing="10" IsVisible="{Binding HasResults}">
|
|
<TextBlock Text="{Binding Summary}" FontSize="12" TextWrapping="Wrap"
|
|
IsVisible="{Binding Summary, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
|
<TextBlock Text="Vorschläge (angehakt wird übernommen)" FontSize="12" Opacity="0.7"/>
|
|
<ItemsControl ItemsSource="{Binding ReviewItems}">
|
|
<ItemsControl.ItemTemplate>
|
|
<DataTemplate x:DataType="vm:AiLessonReviewItem">
|
|
<CheckBox Content="{Binding DisplayLabel}" IsChecked="{Binding Accepted}" Margin="0,3"/>
|
|
</DataTemplate>
|
|
</ItemsControl.ItemTemplate>
|
|
</ItemsControl>
|
|
<TextBlock Text="Die KI hat keine Stunden vorgeschlagen." Opacity="0.6" FontSize="12"
|
|
IsVisible="{Binding !ReviewItems.Count}"/>
|
|
</StackPanel>
|
|
|
|
<StackPanel Spacing="8">
|
|
<TextBlock Text="Weitere Anweisung (nachfassen, baut auf den angehakten Vorschlägen oben auf)"
|
|
FontSize="12" Opacity="0.7" IsVisible="{Binding HasResults}"/>
|
|
<TextBlock Text="Anweisung" FontSize="12" Opacity="0.7" IsVisible="{Binding !HasResults}"/>
|
|
<TextBox Text="{Binding Instruction}" AcceptsReturn="True" TextWrapping="Wrap" Height="120"
|
|
PlaceholderText="z.B. Ergänze zwei weitere Stunden zum Thema Redoxreaktionen mit steigendem Anspruch."
|
|
IsEnabled="{Binding !IsBusy}"/>
|
|
<CheckBox Content="Auch bestehende Stundeninhalte anpassen" IsChecked="{Binding AllowModifyingExisting}"
|
|
IsEnabled="{Binding !IsBusy}"
|
|
ToolTip.Tip="Deaktivieren, um die Einheit nur um neue Stunden zu erweitern, ohne den Inhalt bereits vorhandener Stunden zu verändern."/>
|
|
</StackPanel>
|
|
|
|
<StackPanel Spacing="4" IsVisible="{Binding IsBusy}">
|
|
<TextBlock Text="Anfrage läuft…" FontSize="12" Opacity="0.6"/>
|
|
<ProgressBar IsIndeterminate="True" Height="4"/>
|
|
</StackPanel>
|
|
<TextBlock Text="{Binding ErrorMessage}" Foreground="Red" FontSize="12" TextWrapping="Wrap"
|
|
IsVisible="{Binding ErrorMessage, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
|
</StackPanel>
|
|
</ScrollViewer>
|
|
|
|
<Grid Grid.Row="1" ColumnDefinitions="*,8,*,8,*" Margin="0,20,0,0">
|
|
<Button Grid.Column="0" Content="Abbrechen" HorizontalAlignment="Stretch" Click="OnCancel"/>
|
|
<Button Grid.Column="2" Content="Anfrage senden" HorizontalAlignment="Stretch" Click="OnSend"
|
|
IsVisible="{Binding !HasResults}" IsEnabled="{Binding !IsBusy}"/>
|
|
<Button Grid.Column="2" Content="Erneut anfragen" HorizontalAlignment="Stretch" Click="OnSend"
|
|
IsVisible="{Binding HasResults}" IsEnabled="{Binding !IsBusy}"/>
|
|
<Button Grid.Column="4" Content="Übernehmen" HorizontalAlignment="Stretch" Click="OnApply"
|
|
IsVisible="{Binding HasResults}"/>
|
|
</Grid>
|
|
</Grid>
|
|
</Window>
|