KI-Feature 4.5.22: KI-Unterstützung direkt aus dem Stunden-Editor starten
Bisher musste man aus dem Stunden-Editor raus, die KI-Hilfe für die ganze Einheit aufrufen und die gewünschte Stunde in der freien Anweisung erst benennen. Neuer Button "KI-Unterstützung für diese Stunde" im LessonDialog öffnet denselben AiAssistDialog im neuen Fokus-Modus. AiPlanningRequest.FocusLessonId weist die KI im Systemprompt an, sich auf genau diese Stunde zu beschränken; zusätzlich wie beim Umfangs-Umschalter client-seitig hart durchgesetzt in Send() und ApplyResponse, statt der KI-Antwort blind zu vertrauen. Da "Übernehmen" direkt ins Repository speichert, wären die noch offenen Feldwerte des ursprünglichen LessonDialog danach veraltet gewesen - der Dialog schließt sich deshalb nach einer angewendeten KI-Änderung automatisch mit dem frischen Stand statt ihn mit alten Werten zu überschreiben. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -317,6 +317,36 @@ public sealed class AiPlanningServiceTests
|
||||
Assert.Equal("Neue Stunde bleibt erlaubt", lesson.Topic);
|
||||
}
|
||||
|
||||
/// Fokus-Modus (4.5.22, KI-Unterstützung aus dem Stunden-Editor heraus): auch wenn die KI die
|
||||
/// Anweisung ignoriert und weitere/andere Stunden zurückgibt, darf clientseitig nur die
|
||||
/// angefragte Fokus-Stunde übernommen werden.
|
||||
[Fact]
|
||||
public void ApplyResponse_FocusLessonId_VerwirftAlleAnderenLessons()
|
||||
{
|
||||
var group = new LearningGroup();
|
||||
var unit = new Unit { GroupId = group.Id, Title = "T" };
|
||||
var focus = new Lesson { UnitId = unit.Id, GroupId = group.Id, Topic = "Fokus-Stunde" };
|
||||
var other = new Lesson { UnitId = unit.Id, GroupId = group.Id, Topic = "Andere Stunde" };
|
||||
var lessons = new FakeLessons();
|
||||
lessons.Add(focus);
|
||||
lessons.Add(other);
|
||||
|
||||
var service = Build(lessons, new FakeGroups([group]), new FakeSubjects([]),
|
||||
new FakeCompetencyDomains(), new FakeAlternativeLessonPaths([]));
|
||||
|
||||
var accepted = new List<AiLesson>
|
||||
{
|
||||
new() { Id = focus.Id, Topic = "Fokus-Stunde, geändert" },
|
||||
new() { Id = other.Id, Topic = "Sollte verworfen werden" },
|
||||
new() { Id = null, Topic = "Neue Stunde sollte verworfen werden" },
|
||||
};
|
||||
var result = service.ApplyResponse(unit, accepted, focusLessonId: focus.Id);
|
||||
|
||||
var lesson = Assert.Single(result);
|
||||
Assert.Equal(focus.Id, lesson.Id);
|
||||
Assert.Equal("Fokus-Stunde, geändert", lesson.Topic);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ApplyResponse_NullId_WirdAlsNeueLessonBehandelt()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user