KI-Backend: deutsches Datumsformat fixen, Fortschrittsanzeige + Nachfassen im Dialog
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>
This commit is contained in:
@@ -103,6 +103,46 @@ public sealed class AiPlanningServiceTests
|
||||
Assert.Contains(context.AlternativePathCatalog, p => p.Name == "Vertiefung" && p.Id == path.Id);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BuildContext_DraftOverride_ErsetztBestehendeLessonMitGleicherId()
|
||||
{
|
||||
var group = new LearningGroup();
|
||||
var unit = new Unit { GroupId = group.Id, Title = "T" };
|
||||
var existing = new Lesson { UnitId = unit.Id, GroupId = group.Id, Topic = "Alter Titel" };
|
||||
var lessons = new FakeLessons();
|
||||
lessons.Add(existing);
|
||||
|
||||
var service = Build(lessons, new FakeGroups([group]), new FakeSubjects([]),
|
||||
new FakeCompetencyDomains(), new FakeAlternativeLessonPaths([]));
|
||||
|
||||
var draft = new List<AiLesson> { new() { Id = existing.Id, Topic = "Neuer Entwurfstitel", Phases = [] } };
|
||||
var context = service.BuildContext(unit, "", draft);
|
||||
|
||||
var aiLesson = Assert.Single(context.Lessons);
|
||||
Assert.Equal(existing.Id, aiLesson.Id);
|
||||
Assert.Equal("Neuer Entwurfstitel", aiLesson.Topic);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BuildContext_DraftOverride_HaengtNeueEntwurfLessonsOhneIdAn()
|
||||
{
|
||||
var group = new LearningGroup();
|
||||
var unit = new Unit { GroupId = group.Id, Title = "T" };
|
||||
var existing = new Lesson { UnitId = unit.Id, GroupId = group.Id, Topic = "Bestehend" };
|
||||
var lessons = new FakeLessons();
|
||||
lessons.Add(existing);
|
||||
|
||||
var service = Build(lessons, new FakeGroups([group]), new FakeSubjects([]),
|
||||
new FakeCompetencyDomains(), new FakeAlternativeLessonPaths([]));
|
||||
|
||||
var draft = new List<AiLesson> { new() { Id = null, Topic = "Neu aus Runde 1", Phases = [] } };
|
||||
var context = service.BuildContext(unit, "", draft);
|
||||
|
||||
Assert.Equal(2, context.Lessons.Count);
|
||||
Assert.Contains(context.Lessons, l => l.Topic == "Bestehend");
|
||||
Assert.Contains(context.Lessons, l => l.Topic == "Neu aus Runde 1" && l.Id == null);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ApplyResponse_BekannteId_WirdAlsUpdateBehandelt()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user