KI-Feature 4.5.20: Medienvorschlag + Zwischenablage-Prompt für externe Erzeugung
Die KI liefert je Verlaufsplan-Phase optional einen kurzen Vorschlag, was ein Medium/Material (z.B. Tafelbild) zeigen sollte (AiPhaseStep.MaterialSuggestion), nur wenn das über das ohnehin genannte Material hinaus einen Mehrwert hätte. Bewusst nicht ins Domänenmodell übernommen (keine Migration nötig) — nur für die Review-Anzeige relevant. AiPlanningService.BuildMaterialPrompt baut daraus rein lokal (kein weiterer KI-Aufruf) einen vollständigen Prompt aus Fach/Stufe/Gruppe, Einheit, Stunde und Phase. Im AiAssistDialog landet er per Klick in der Zwischenablage, zum Einfügen in eine separate Claude-Sitzung für die eigentliche Materialerzeugung. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -25,6 +25,19 @@
|
||||
<TextBlock Text="{Binding DiffText}" FontSize="11" Opacity="0.6" TextWrapping="Wrap"
|
||||
Margin="24,0,0,0"
|
||||
IsVisible="{Binding DiffText, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"/>
|
||||
<ItemsControl ItemsSource="{Binding MaterialPrompts}" Margin="24,2,0,0">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate x:DataType="vm:MaterialPromptItem">
|
||||
<Border Background="#14000000" CornerRadius="4" Padding="6" Margin="0,2">
|
||||
<StackPanel Spacing="4">
|
||||
<TextBlock Text="{Binding SuggestionText}" FontSize="11" TextWrapping="Wrap"/>
|
||||
<Button Content="📋 Prompt kopieren (extern erzeugen)" FontSize="11"
|
||||
Click="OnCopyMaterialPrompt"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Input.Platform;
|
||||
using Avalonia.Interactivity;
|
||||
using LehrerApp.Desktop.Services;
|
||||
using LehrerApp.Desktop.ViewModels.Groups;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace LehrerApp.Desktop.Views.Groups;
|
||||
|
||||
@@ -8,6 +11,16 @@ public partial class AiAssistDialog : Window
|
||||
{
|
||||
public AiAssistDialog() => InitializeComponent();
|
||||
|
||||
private async void OnCopyMaterialPrompt(object? s, RoutedEventArgs e)
|
||||
{
|
||||
if (s is not Button { DataContext: MaterialPromptItem item }) return;
|
||||
var clipboard = TopLevel.GetTopLevel(this)?.Clipboard;
|
||||
if (clipboard is null) return;
|
||||
|
||||
await clipboard.SetTextAsync(item.PromptText);
|
||||
App.Services.GetRequiredService<NotificationService>().ShowSuccess("Prompt in die Zwischenablage kopiert.");
|
||||
}
|
||||
|
||||
private async void OnSend(object? s, RoutedEventArgs e)
|
||||
{
|
||||
if (DataContext is AiAssistDialogViewModel vm && vm.SendCommand.CanExecute(null))
|
||||
|
||||
Reference in New Issue
Block a user