From 29aa250d41b82f20272833c82fdd329fc7aa37c9 Mon Sep 17 00:00:00 2001 From: Peter Buchmann Date: Sun, 11 Oct 2026 20:30:48 +0000 Subject: [PATCH 1/3] =?UTF-8?q?Absturzschutz,=20Programmsprache=20Deutsch?= =?UTF-8?q?=20und=20=C3=84nderungsprotokoll?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Unerwartete Fehler (Oberfläche, Programm, Hintergrundaufgaben, Abbruch eines Rechenthreads der Generierung) kommen in fehlerprotokoll.txt im Datenordner; der aktuelle Plan wird als gemerkter Plan "Notfallsicherung" abgelegt und einmal eine Meldung gezeigt, das Programm läuft weiter - Kultur der Anwendung fest de-DE - CHANGELOG.md mit den Änderungen je Version, verlinkt in der README - Anleitung (Abschnitt 13) und Checkliste für 1.0 im Migrationsplan ergänzt Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01KPXzdFCpdtwdYcyQVmsnhH --- CHANGELOG.md | 36 ++++++++ Doku/ANLEITUNG.md | 3 + Doku/Anleitung.pdf | Bin 2628620 -> 2634256 bytes Doku/MIGRATIONSPLAN.md | 9 +- README.md | 1 + .../Fehlerprotokoll.cs | 82 ++++++++++++++++++ src/AndiGenerator.Desktop/Program.cs | 8 ++ .../HauptfensterViewModel.cs | 55 ++++++++++++ src/AndiGenerator.UI/App.axaml.cs | 1 + src/AndiGenerator.UI/Fehlerbehandlung.cs | 70 +++++++++++++++ .../FehlerprotokollTests.cs | 54 ++++++++++++ .../HauptfensterTests.cs | 13 +++ 12 files changed, 328 insertions(+), 4 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 src/AndiGenerator.Application/Fehlerprotokoll.cs create mode 100644 src/AndiGenerator.UI/Fehlerbehandlung.cs create mode 100644 tests/AndiGenerator.Persistence.Tests/FehlerprotokollTests.cs diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..36a4166 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,36 @@ +# Änderungen + +Was sich von Version zu Version für Anwender ändert. Die Einzelheiten stehen in der [Anleitung](Doku/ANLEITUNG.md), die technische Geschichte im [Migrationsplan](Doku/MIGRATIONSPLAN.md). + +## Unveröffentlicht + +### Neu + +- **Absturzschutz:** Ein unerwarteter Fehler beendet das Programm nicht mehr still. Der aktuelle Plan wird als gemerkter Plan „Notfallsicherung“ abgelegt, die Einzelheiten kommen in `fehlerprotokoll.txt` im Datenordner, und eine Meldung sagt, wo sie liegen. Das gilt auch, wenn eine laufende Generierung abbricht. +- Die Oberfläche ist auch auf einem anders eingestellten System deutsch (Monatsnamen, Zahlen, Datumsformate); leere Zeitfelder zeigen „Stunde“ und „Minute“. +- **Leitstand** (vorher Maschinenraum): Rechenkerne, Schaubild Inseln → Koordinator → bester Plan mit einem grünen Punkt je Verbesserung und einem Kasten, was sich geändert hat; im Automodus die angehobenen Gewichte. +- **Verlauf:** Kosten bzw. Verstöße A, B und C seit dem Start, mit den Phasen des Automodus. +- **Gesicherter Plan:** Bevor ein Plan durch einen Neustart oder das Schließen verloren ginge, wird er gesichert bzw. mit dem bisher gesicherten verglichen und nachgefragt. +- **Spielplandaten:** Kalender der spielfreien Tage mit Grund im Tooltip, Wunschtermine als Kärtchen mit Ziehen und Ablegen (Strg kopiert) und Vorschlag der üblichen Uhrzeit, Setzliste per Ziehen, einheitliche Knöpfe neben den Listen, Marken und Änderungspunkte in der Seitenliste. + +### Geändert + +- Kopfzeile: ▶ Start / ⏸ Pausieren und ✕ Schließen / ■ Stopp; das Verfahren wird mit zwei Segmentknöpfen gewählt. +- Die Frage „nur Rückrunde planen?“ nennt den Beginn der Rückrunde. + +## 0.9.5 (10.10.2026) + +### Neu + +- Version für Macs (Apple-Chip und Intel) und für Windows auf ARM (Snapdragon). + +## 0.9.4 (05.10.2026) + +### Neu + +- **Automodus:** Die Suche lenkt sich selbst über die Gewichte – erst Pflichtregeln (Stufe A), dann Wünsche (B), dann die übrige Güte (C). +- Pakete für Chromebooks und Linux; die Bildschirmfotos der Anleitung entstehen automatisch. + +## 0.9.3 (01.10.2026) + +Erste öffentliche Beta: vollständige Portierung des AndiGenerators von Andreas Hofmann nach C#/.NET 10 mit neuer Oberfläche – Optimierung und Bewertung wie im Original, alle Ansichten, Spielplandaten, Export für click-TT, Druck und Excel, Installation und Updates über GitHub Releases. diff --git a/Doku/ANLEITUNG.md b/Doku/ANLEITUNG.md index 5ce5fe4..7bb11af 100644 --- a/Doku/ANLEITUNG.md +++ b/Doku/ANLEITUNG.md @@ -646,6 +646,9 @@ Im Bayerischen TTV werden Hallenbelegung und Spiele der Nachbarmannschaften bei **Wird mein Rechner während der Generierung langsam?** Das Programm lässt einen Prozessorkern frei und rechnet mit niedriger Priorität, damit andere Programme bedienbar bleiben. Wer den Rechner in Ruhe lassen möchte, pausiert die Generierung. +**Das Programm meldet einen unerwarteten Fehler.** +Dann ist etwas schiefgegangen, womit das Programm nicht gerechnet hat. Es beendet sich dabei nicht, sondern merkt den aktuellen Plan als **Notfallsicherung** (Sie finden ihn unter **Start mit** und in der Planauswahl der Ansichten) und schreibt die Einzelheiten in die Datei `fehlerprotokoll.txt` im Datenordner (unter Windows `%LOCALAPPDATA%\AndiGenerator.NET`); die Meldung nennt den genauen Pfad. Sie können weiterarbeiten, sicherer ist aber, den Plan zu exportieren oder zu merken und das Programm neu zu starten. Bricht eine laufende Generierung ab, steht das in der Statuszeile, und der beste Plan ist ebenso als Notfallsicherung gemerkt. Helfen Sie, den Fehler zu beheben: Schicken Sie das Fehlerprotokoll mit einer kurzen Beschreibung, was Sie gerade getan haben, über die [Fehlermeldungen auf GitHub](https://github.com/PBuchmann/AndiGenerator.NET/issues). Das Protokoll enthält keine Spielplandaten, kann aber Dateipfade Ihres Rechners nennen. + --- *AndiGenerator.NET – Portierung des AndiGenerators von Andreas Hofmann. Freie Software unter der GNU General Public License Version 3.* diff --git a/Doku/Anleitung.pdf b/Doku/Anleitung.pdf index 8395cf50d7a077324821fe5a9104540f453e1992..a494aa3871fc4d613a95a92ae53baad89045d18c 100644 GIT binary patch delta 140271 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

3k8!5mTj0clyMoDjLXqZn-RrR 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 delta 135729 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 +/// Protokoll unerwarteter Fehler im eigenen Datenordner (fehlerprotokoll.txt): Zeitpunkt, wobei der Fehler auftrat, +/// Programmversion, Betriebssystem und der vollständige Fehler. Das Original kennt so etwas nicht; dort beendet ein +/// unerwarteter Fehler das Programm ohne Spur. Die Datei bleibt auf dem Rechner, bis der Anwender sie selbst weitergibt. +/// +public static class Fehlerprotokoll +{ + ///

Dateiname des Protokolls im eigenen Datenordner. + public const string Dateiname = "fehlerprotokoll.txt"; + + /// Name der Datei, in die ein zu groß gewordenes Protokoll verschoben wird. + public const string AlterDateiname = "fehlerprotokoll.alt.txt"; + + /// Ab dieser Größe (Bytes) beginnt ein neues Protokoll; das alte bleibt als . + public const long Hoechstgroesse = 1_000_000; + + /// Wohin Anwender Fehler melden. + public const string Fehlermeldungsadresse = "https://github.com/PBuchmann/AndiGenerator.NET/issues"; + + /// Hängt einen Fehler an das Protokoll an. + /// Eigener Datenordner (). + /// Der Fehler. + /// Wobei er auftrat, z. B. „Oberfläche“ oder „Generierung“. + /// Pfad des Protokolls. + /// Das Protokoll ließ sich nicht schreiben. + /// Kein Schreibrecht im Datenordner. + public static string Schreiben(string basis, Exception fehler, string wobei) + { + ArgumentException.ThrowIfNullOrEmpty(basis); + ArgumentNullException.ThrowIfNull(fehler); + Directory.CreateDirectory(basis); + string pfad = Path.Combine(basis, Dateiname); + if (File.Exists(pfad) && new FileInfo(pfad).Length > Hoechstgroesse) + { + File.Move(pfad, Path.Combine(basis, AlterDateiname), overwrite: true); + } + + string version = Assembly.GetEntryAssembly()?.GetCustomAttribute()?.InformationalVersion ?? "unbekannt"; + string eintrag = string.Create( + CultureInfo.InvariantCulture, + $"===== {DateTime.Now:yyyy-MM-dd HH:mm:ss} · {wobei} · Version {version} · {RuntimeInformation.OSDescription}{Environment.NewLine}{fehler}{Environment.NewLine}{Environment.NewLine}"); + File.AppendAllText(pfad, eintrag, Encoding.UTF8); + return pfad; + } + + /// Meldung nach einem unerwarteten Fehler: was geschah, was gesichert wurde und wo das Protokoll liegt. + /// Der Fehler. + /// Name des gemerkten Plans mit der Notfallsicherung oder null. + /// Pfad des Fehlerprotokolls oder null. + /// Der Text. + public static string Meldung(Exception fehler, string? gesichert, string? protokoll) + { + ArgumentNullException.ThrowIfNull(fehler); + var text = new StringBuilder(); + text.Append("Es ist ein unerwarteter Fehler aufgetreten: ").Append(fehler.Message).AppendLine().AppendLine(); + if (gesichert is not null) + { + text.Append("Der aktuelle Plan wurde als gemerkter Plan „").Append(gesichert) + .Append("“ gesichert. Sie finden ihn unter „Start mit“ und in der Planauswahl der Ansichten.").AppendLine().AppendLine(); + } + + if (protokoll is not null) + { + text.Append("Einzelheiten stehen in ").Append(protokoll).Append(". Bitte schicken Sie diese Datei mit einer kurzen Beschreibung, ") + .Append("was Sie gerade getan haben, an die Entwickler (").Append(Fehlermeldungsadresse).Append(").").AppendLine().AppendLine(); + } + + text.Append("Sie können weiterarbeiten. Sicherer ist es, den Plan zu exportieren oder zu merken und das Programm neu zu starten."); + return text.ToString(); + } +} diff --git a/src/AndiGenerator.Desktop/Program.cs b/src/AndiGenerator.Desktop/Program.cs index 421fa99..207267f 100644 --- a/src/AndiGenerator.Desktop/Program.cs +++ b/src/AndiGenerator.Desktop/Program.cs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: 2026 Peter Buchmann // SPDX-License-Identifier: GPL-3.0-only +using System.Globalization; using AndiGenerator.UI; using Avalonia; using Velopack; @@ -18,6 +19,13 @@ public static void Main(string[] args) { // Velopack erledigt hier Installation, Deinstallation und das Einspielen von Updates und beendet dann selbst. VelopackApp.Build().Run(); + + // Die Oberfläche ist deutsch – auch auf einem anders eingestellten System (Monatsnamen, Zahlen, Datumsformate). + var deutsch = CultureInfo.GetCultureInfo("de-DE"); + CultureInfo.DefaultThreadCurrentCulture = deutsch; + CultureInfo.DefaultThreadCurrentUICulture = deutsch; + CultureInfo.CurrentCulture = deutsch; + CultureInfo.CurrentUICulture = deutsch; BuildAvaloniaApp().StartWithClassicDesktopLifetime(args); } diff --git a/src/AndiGenerator.Presentation/HauptfensterViewModel.cs b/src/AndiGenerator.Presentation/HauptfensterViewModel.cs index 7f5eb01..4796d48 100644 --- a/src/AndiGenerator.Presentation/HauptfensterViewModel.cs +++ b/src/AndiGenerator.Presentation/HauptfensterViewModel.cs @@ -29,6 +29,9 @@ public sealed class HauptfensterViewModel : ObservableObject, IDisposable /// Dateiname der Anleitung neben dem Programm. public const string Anleitungsdatei = "Anleitung.pdf"; + /// Name des gemerkten Plans, unter dem nach einem unerwarteten Fehler der aktuelle Plan gesichert wird. + public const string NotfallsicherungName = "Notfallsicherung"; + private const string KeinExportplan = "Kein Plan zum Exportieren – erst eine Generierung starten oder einen Plan wählen."; private static readonly CultureInfo Deutsch = CultureInfo.GetCultureInfo("de-DE"); @@ -49,6 +52,9 @@ public sealed class HauptfensterViewModel : ObservableObject, IDisposable private Plansitzung? sitzung; private Planstand? laufenderStand; + /// Abbruchfehler der Generierung, der schon gemeldet wurde (jeder wird nur einmal gemeldet). + private Exception? gemeldeterFehler; + /// Spiele des Plans, über dessen Sicherung schon entschieden ist (gesichert oder bewusst verworfen). private IReadOnlyList? sicherungEntschieden; private Planstand? clickTtStand; @@ -566,6 +572,31 @@ public void Dispose() /// false, wenn der Anwender abbricht und das Programm offen bleiben soll. public Task BeendenErlaubtAsync() => PlanSichernAsync("Das Programm wird beendet."); + /// + /// Sichert nach einem unerwarteten Fehler den aktuellen Plan als gemerkten Plan , ohne + /// zu fragen und ohne den gesicherten Plan anzutasten. Darf von jedem Thread aus aufgerufen werden; die Planauswahl wird + /// auf der Oberfläche nachgezogen. + /// + /// Der Name des gemerkten Plans oder null, wenn es keinen Plan gab oder er sich nicht schreiben ließ. + public string? NotfallSichern() + { + if (Volatile.Read(ref sitzung) is not Plansitzung s || laufenderStand is not Planstand aktuell) + { + return null; + } + + try + { + string name = s.PlanMerken(NotfallsicherungName, aktuell.Spiele).Name; + oberflaeche.AufOberflaeche(QuellenNeuAufbauen); + return name; + } + catch (Exception fehler) when (fehler is IOException or UnauthorizedAccessException) + { + return null; + } + } + /// /// Legt die Vergrößerung fest, mit der die Ansichten starten (von der Oberfläche einmal nach der Größe des /// Bildschirms ermittelt, siehe ); gilt für die offenen und alle neuen Ansichten. @@ -2111,5 +2142,29 @@ private void StatusAbfragen() maschinenraumAnsicht?.Uebernehmen(stand); } }); + if (fehler is not null && !ReferenceEquals(fehler, Interlocked.Exchange(ref gemeldeterFehler, fehler))) + { + oberflaeche.AufOberflaeche(() => _ = AbbruchMeldenAsync(fehler)); + } + } + + /// + /// Ein Rechenthread der Generierung ist an einem unerwarteten Fehler gescheitert: protokollieren, den besten Plan als + /// Notfallsicherung ablegen und den Anwender einmal informieren. + /// + private async Task AbbruchMeldenAsync(Exception fehler) + { + string? protokoll; + try + { + protokoll = Fehlerprotokoll.Schreiben(eigeneBasis, fehler, "Generierung"); + } + catch (Exception schreibfehler) when (schreibfehler is IOException or UnauthorizedAccessException) + { + protokoll = null; + } + + string? gesichert = NotfallSichern(); + await oberflaeche.MeldenAsync("Generierung abgebrochen", Fehlerprotokoll.Meldung(fehler, gesichert, protokoll)); } } diff --git a/src/AndiGenerator.UI/App.axaml.cs b/src/AndiGenerator.UI/App.axaml.cs index e7c9f70..bc47902 100644 --- a/src/AndiGenerator.UI/App.axaml.cs +++ b/src/AndiGenerator.UI/App.axaml.cs @@ -31,6 +31,7 @@ public override void OnFrameworkInitializationCompleted() var fenster = new HauptfensterView(); var oberflaeche = new AvaloniaOberflaeche(fenster); var modell = new HauptfensterViewModel(oberflaeche, () => new HostWindow()); + Fehlerbehandlung.Anmelden(modell, oberflaeche); fenster.DataContext = modell; desktop.MainWindow = fenster; diff --git a/src/AndiGenerator.UI/Fehlerbehandlung.cs b/src/AndiGenerator.UI/Fehlerbehandlung.cs new file mode 100644 index 0000000..c67a300 --- /dev/null +++ b/src/AndiGenerator.UI/Fehlerbehandlung.cs @@ -0,0 +1,70 @@ +// SPDX-FileCopyrightText: 2017 Andreas Hofmann +// SPDX-FileCopyrightText: 2026 Peter Buchmann +// SPDX-License-Identifier: GPL-3.0-only + +using AndiGenerator.Application; +using AndiGenerator.Presentation; +using Avalonia.Threading; + +namespace AndiGenerator.UI; + +/// +/// Fängt unerwartete Fehler ab, damit sie das Programm nicht still beenden: Jeder Fehler kommt ins Fehlerprotokoll im +/// eigenen Datenordner. Bei einem Fehler auf der Oberfläche wird zusätzlich der aktuelle Plan als „Notfallsicherung“ +/// gemerkt und einmal je Sitzung eine Meldung gezeigt; das Programm läuft weiter. Bei einem Fehler, der das Programm +/// ohnehin beendet (außerhalb der Oberfläche), wird der Plan noch gesichert und protokolliert. +/// +internal static class Fehlerbehandlung +{ + private static HauptfensterViewModel? modell; + private static IOberflaeche? oberflaeche; + private static int gemeldet; + + /// Meldet die Fehlerbehandlung für die ganze Anwendung an. + /// Das Hauptfenster (für die Notfallsicherung des Plans). + /// Dienste der Oberfläche (für die Meldung). + public static void Anmelden(HauptfensterViewModel hauptfenster, IOberflaeche dienste) + { + modell = hauptfenster; + oberflaeche = dienste; + Dispatcher.UIThread.UnhandledException += AufDerOberflaeche; + AppDomain.CurrentDomain.UnhandledException += Unbehandelt; + TaskScheduler.UnobservedTaskException += Unbeobachtet; + } + + private static async void AufDerOberflaeche(object? sender, DispatcherUnhandledExceptionEventArgs e) + { + e.Handled = true; + string text = Festhalten(e.Exception, "Oberfläche", sichern: true); + if (oberflaeche is not null && Interlocked.Exchange(ref gemeldet, 1) == 0) + { + await oberflaeche.MeldenAsync("Unerwarteter Fehler", text); + } + } + + private static void Unbehandelt(object? sender, UnhandledExceptionEventArgs e) => + Festhalten(e.ExceptionObject as Exception ?? new InvalidOperationException(e.ExceptionObject?.ToString()), "Programm", sichern: true); + + private static void Unbeobachtet(object? sender, UnobservedTaskExceptionEventArgs e) + { + Festhalten(e.Exception, "Hintergrundaufgabe", sichern: false); + e.SetObserved(); + } + + /// Protokolliert den Fehler, sichert auf Wunsch den Plan und liefert die Meldung für den Anwender. + private static string Festhalten(Exception fehler, string wobei, bool sichern) + { + string? protokoll; + try + { + protokoll = Fehlerprotokoll.Schreiben(Plansitzung.EigeneBasis(), fehler, wobei); + } + catch (Exception schreibfehler) when (schreibfehler is IOException or UnauthorizedAccessException) + { + protokoll = null; + } + + string? gesichert = sichern ? modell?.NotfallSichern() : null; + return Fehlerprotokoll.Meldung(fehler, gesichert, protokoll); + } +} diff --git a/tests/AndiGenerator.Persistence.Tests/FehlerprotokollTests.cs b/tests/AndiGenerator.Persistence.Tests/FehlerprotokollTests.cs new file mode 100644 index 0000000..7aba016 --- /dev/null +++ b/tests/AndiGenerator.Persistence.Tests/FehlerprotokollTests.cs @@ -0,0 +1,54 @@ +// SPDX-FileCopyrightText: 2017 Andreas Hofmann +// SPDX-FileCopyrightText: 2026 Peter Buchmann +// SPDX-License-Identifier: GPL-3.0-only + +using AndiGenerator.Application; + +namespace AndiGenerator.Persistence.Tests; + +/// Protokoll unerwarteter Fehler und die Meldung dazu. +public sealed class FehlerprotokollTests : IDisposable +{ + private readonly string basis = Path.Combine(Path.GetTempPath(), "andigen-fehler-" + Guid.NewGuid().ToString("N")); + + public void Dispose() + { + if (Directory.Exists(basis)) + { + Directory.Delete(basis, recursive: true); + } + } + + [Fact] + public void Fehler_werden_angehaengt_und_ein_zu_grosses_Protokoll_wird_beiseitegelegt() + { + string pfad = Fehlerprotokoll.Schreiben(basis, new InvalidOperationException("erster Fehler"), "Oberfläche"); + Fehlerprotokoll.Schreiben(basis, new InvalidOperationException("zweiter Fehler"), "Generierung"); + string inhalt = File.ReadAllText(pfad); + Assert.Contains("· Oberfläche ·", inhalt, StringComparison.Ordinal); + Assert.Contains("erster Fehler", inhalt, StringComparison.Ordinal); + Assert.Contains("· Generierung ·", inhalt, StringComparison.Ordinal); + Assert.Contains("zweiter Fehler", inhalt, StringComparison.Ordinal); + + File.AppendAllText(pfad, new string('x', (int)Fehlerprotokoll.Hoechstgroesse)); + Fehlerprotokoll.Schreiben(basis, new InvalidOperationException("dritter Fehler"), "Programm"); + Assert.True(File.Exists(Path.Combine(basis, Fehlerprotokoll.AlterDateiname))); + string neu = File.ReadAllText(pfad); + Assert.Contains("dritter Fehler", neu, StringComparison.Ordinal); + Assert.DoesNotContain("erster Fehler", neu, StringComparison.Ordinal); + } + + [Fact] + public void Die_Meldung_nennt_Fehler_Notfallsicherung_und_Protokoll() + { + string meldung = Fehlerprotokoll.Meldung(new InvalidOperationException("kaputt"), "Notfallsicherung", @"C:\Daten\fehlerprotokoll.txt"); + Assert.Contains("kaputt", meldung, StringComparison.Ordinal); + Assert.Contains("„Notfallsicherung“", meldung, StringComparison.Ordinal); + Assert.Contains(@"C:\Daten\fehlerprotokoll.txt", meldung, StringComparison.Ordinal); + Assert.Contains(Fehlerprotokoll.Fehlermeldungsadresse, meldung, StringComparison.Ordinal); + + string knapp = Fehlerprotokoll.Meldung(new InvalidOperationException("kaputt"), null, null); + Assert.DoesNotContain("gesichert", knapp, StringComparison.Ordinal); + Assert.DoesNotContain("Einzelheiten", knapp, StringComparison.Ordinal); + } +} diff --git a/tests/AndiGenerator.Presentation.Tests/HauptfensterTests.cs b/tests/AndiGenerator.Presentation.Tests/HauptfensterTests.cs index 5b6cb9d..f80621d 100644 --- a/tests/AndiGenerator.Presentation.Tests/HauptfensterTests.cs +++ b/tests/AndiGenerator.Presentation.Tests/HauptfensterTests.cs @@ -666,6 +666,19 @@ public async Task Vor_einem_Neustart_wird_der_Plan_gesichert_und_danach_gefragt( hf.StoppenCommand.Execute(null); } + [Fact] + public async Task Nach_einem_unerwarteten_Fehler_wird_der_Plan_als_Notfallsicherung_gemerkt() + { + Assert.Null(hf.NotfallSichern()); + await OeffnenAsync(); + Assert.Null(hf.NotfallSichern()); + + await PlanErrechnenAsync(); + hf.StoppenCommand.Execute(null); + Assert.Equal(HauptfensterViewModel.NotfallsicherungName, hf.NotfallSichern()); + Assert.Single(Directory.EnumerateFiles(Path.Combine(ordner, "basis"), "*" + HauptfensterViewModel.NotfallsicherungName + "*", SearchOption.AllDirectories)); + } + [Fact] public async Task Generierung_Pause_Plan_merken_exportieren_und_entfernen() { From c48ec01041e4f49c7836983e23c31adf4936861d Mon Sep 17 00:00:00 2001 From: Peter Buchmann Date: Sun, 11 Oct 2026 21:36:57 +0000 Subject: [PATCH 2/3] =?UTF-8?q?Klasse-3-Befunde=20korrigiert,=20Regel=20f?= =?UTF-8?q?=C3=BCr=20den=20Pflichtspieltag=20bei=20ungerader=20Zahl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - #3 Wunschtermin nur vom Eigentümer freigeben, #4 Überlappung des letzten Spieltags summieren, #5 vollständiges Raster bei ungerader Mannschaftszahl, #6 über die Auswärtskoppel nur offene Spiele terminieren (Domain.Optionen.Korrekturen, in Kern- und Referenzmodell gleich) - #33 als Einstellung: bei ungerader Zahl darf am Pflichtspieltag eine Mannschaft fehlen, die in der Woche davor spielt (Standard an) - Berechnungsoptionen.Original für die Paritätstests, andigen optimieren und bewerten mit --original, korrekturvergleich.cmd für die Messung - Anleitung, CHANGELOG, Migrationsplan mit Entscheidungen und Messergebnis Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01KPXzdFCpdtwdYcyQVmsnhH --- .gitignore | 1 + CHANGELOG.md | 2 + Doku/ANLEITUNG.md | 6 +- Doku/Anleitung.pdf | Bin 2634256 -> 2636252 bytes Doku/MIGRATIONSPLAN.md | 14 ++-- korrekturvergleich.cmd | 36 +++++++++ .../Optionsabweichungen.cs | 6 ++ .../Optionen/Berechnungsoptionen.cs | 16 ++++ .../Optionen/Korrekturen.cs | 40 +++++++++ .../Kern/KernDefinition.cs | 17 ++++ .../Kern/KernPlan.Cache.cs | 4 +- .../Kern/KernPlan.Kosten.cs | 47 ++++++++++- .../Kern/KernPlan.Optimierung.cs | 22 ++++- .../Kern/KernPlan.Plankosten.cs | 3 +- .../Referenz/RefMannschaft.Kosten.cs | 2 +- .../Referenz/RefMannschaft.cs | 29 +++++++ .../Referenz/RefPlan.Kosten.cs | 19 ++++- .../Referenz/RefPlan.Optimierung.cs | 21 +++-- src/AndiGenerator.Engine/Referenz/RefSpiel.cs | 10 ++- .../Optionen/OptionenDatei.cs | 18 ++++- .../OptionenAnsichtViewModel.cs | 18 +++++ .../Ansichten/OptionenAnsicht.axaml | 3 + .../KorrekturenTests.cs | 76 ++++++++++++++++++ .../ParitaetTests.cs | 4 +- tools/AndiGenerator.Cli/BewertenArgumente.cs | 8 ++ tools/AndiGenerator.Cli/BewertenBefehl.cs | 7 ++ .../AndiGenerator.Cli/OptimierenArgumente.cs | 8 ++ tools/AndiGenerator.Cli/OptimierenBefehl.cs | 6 ++ 28 files changed, 416 insertions(+), 27 deletions(-) create mode 100644 korrekturvergleich.cmd create mode 100644 src/AndiGenerator.Domain/Optionen/Korrekturen.cs create mode 100644 tests/AndiGenerator.Persistence.Tests/KorrekturenTests.cs diff --git a/.gitignore b/.gitignore index dca0b57..93cc6d1 100644 --- a/.gitignore +++ b/.gitignore @@ -67,6 +67,7 @@ optimierung-log.txt abdeckung-log.txt messen-log.txt inselvergleich-*.txt +korrekturvergleich/ bildschirmfotos-log.txt # Private Originaldaten (Klarnamen) – öffentlich nur die anonymisierte Kopie unter testdaten/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 36a4166..47e43f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ Was sich von Version zu Version für Anwender ändert. Die Einzelheiten stehen i ### Geändert +- **Fehler des Originals korrigiert:** Ein Wunschtermin gilt beim Zurücksetzen eines Spiels nicht mehr fälschlich als frei; beim Füllen über die Auswärtskoppel wird kein schon terminiertes Spiel mehr umgesetzt; das Startraster legt bei ungerader Mannschaftszahl alle Spieltage an; beim letzten Spieltag zählen alle Überlappungen (die Kosten können dadurch etwas höher sein als im alten AndiGenerator). +- **Pflichtspieltag bei ungerader Mannschaftszahl:** Die zwangsläufig spielfreie Mannschaft wird nicht mehr bestraft, wenn sie in der Woche davor spielt (abschaltbar in den Einstellungen). - Kopfzeile: ▶ Start / ⏸ Pausieren und ✕ Schließen / ■ Stopp; das Verfahren wird mit zwei Segmentknöpfen gewählt. - Die Frage „nur Rückrunde planen?“ nennt den Beginn der Rückrunde. diff --git a/Doku/ANLEITUNG.md b/Doku/ANLEITUNG.md index 7bb11af..dd913dc 100644 --- a/Doku/ANLEITUNG.md +++ b/Doku/ANLEITUNG.md @@ -392,7 +392,7 @@ Gewichten lässt sich auf drei Ebenen, die sich addieren: ![Gewichtung im Detailfeld](Anleitung/Bilder/09-gewichtung.png) -**In den Einstellungen** (links unter *Staffel*) finden Sie alle Gewichtungen auf einer Seite: die allgemeinen Plankosten, die Mannschaftskosten und die Gewichtung je Mannschaft. Auch hier gilt jede Änderung sofort. **Standard wiederherstellen …** setzt alles auf die Ausgangswerte zurück. +**In den Einstellungen** (links unter *Staffel*) finden Sie alle Gewichtungen auf einer Seite: die allgemeinen Plankosten, die Mannschaftskosten und die Gewichtung je Mannschaft. Unter den Mannschaftskosten stehen außerdem die Freitagsregel für die 60-km-Regel und die Regel für den Pflichtspieltag bei ungerader Mannschaftszahl (siehe [Pflichtspieltage](#pflichtspieltage)). Auch hier gilt jede Änderung sofort. **Standard wiederherstellen …** setzt alles auf die Ausgangswerte zurück. ![Einstellungen](Anleitung/Bilder/10-einstellungen.png) @@ -535,7 +535,7 @@ An einzelnen Tagen soll gar nicht gespielt werden – etwa weil die Relegationst Hier legen Sie fest, wie viele Spiele jede Mannschaft in einem Zeitraum mindestens machen muss – etwa mindestens ein Spiel zwischen dem 14. und 18. April oder mindestens drei Spiele im November. -Setzen Sie Pflichtspieltage sparsam ein: Sie nehmen dem Programm Freiheit und verschlechtern den Plan meist. Sinnvoll sind sie vor allem für einen gemeinsamen letzten Spieltag, falls das Programm ihn nicht ohnehin so plant. Bei **ungerader Mannschaftszahl** muss am Pflichtspieltag zwangsläufig eine Mannschaft pausieren und bekäme sonst in einer Woche zwei Spiele. Verlängern Sie dann den Zeitraum, oder löschen Sie die Pflichtspieltage und lassen Sie das Programm den letzten Spieltag über die Kosten optimieren. +Setzen Sie Pflichtspieltage sparsam ein: Sie nehmen dem Programm Freiheit und verschlechtern den Plan meist. Sinnvoll sind sie vor allem für einen gemeinsamen letzten Spieltag, falls das Programm ihn nicht ohnehin so plant. Bei **ungerader Mannschaftszahl** muss am Pflichtspieltag zwangsläufig eine Mannschaft pausieren. Das Original bestraft diese Mannschaft immer; AndiGenerator.NET lässt in einem Pflichtzeitraum mit einem Spiel genau eine fehlende Mannschaft zu, wenn sie in der Woche davor gespielt hat – sie spielt dann also am vorletzten Spieltag. Abschalten lässt sich das in den **Einstellungen** (*Bei ungerader Mannschaftszahl darf am Pflichtspieltag eine Mannschaft spielfrei sein …*); dann gilt die Strafe wie im Original. ### Manuell festgelegte Begegnungen @@ -578,7 +578,7 @@ In der Standardgewichtung haben die Kostenarten schon ein sinnvolles Verhältnis **Länge Spieltage** – Ein Spieltag soll sich über möglichst wenige Tage erstrecken. -**Überlappung letzter Spieltag** und **Länge letzter Spieltag** – dasselbe, nur für den letzten Spieltag. Er soll möglichst kurz sein und so liegen, dass alle Mannschaften zuletzt nur noch ein Spiel haben. +**Überlappung letzter Spieltag** und **Länge letzter Spieltag** – dasselbe, nur für den letzten Spieltag. Er soll möglichst kurz sein und so liegen, dass alle Mannschaften zuletzt nur noch ein Spiel haben. Anders als im Original zählen beim letzten Spieltag alle Überlappungen mit früheren Spieltagen, nicht nur die mit dem ältesten; die Kosten können deshalb etwas höher sein als im alten AndiGenerator. **Vereinsinterne Spiele am Anfang** – Mannschaften desselben Vereins sollen zu Beginn jeder Halbrunde gegeneinander spielen. diff --git a/Doku/Anleitung.pdf b/Doku/Anleitung.pdf index a494aa3871fc4d613a95a92ae53baad89045d18c..6253068ba64f83f86501ee750e33441d810e2472 100644 GIT binary patch delta 139087 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¨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 =U&}o{wR3{o@nA%ue}7WEuq{|$QWf3u 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

n2Rkv2$&&VQwm3HkvZr|$RME*w-oca-juC}Y| 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

_^vztxI0^7}hs8 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 a|9-Q?o_`$PzIq9Ny}x_&=I?+1x%(fexT$pj diff --git a/Doku/MIGRATIONSPLAN.md b/Doku/MIGRATIONSPLAN.md index e8d8b3a..f0099d4 100644 --- a/Doku/MIGRATIONSPLAN.md +++ b/Doku/MIGRATIONSPLAN.md @@ -441,10 +441,10 @@ Die Portierung soll sich deutlich vom Original unterscheiden, ohne ihre Herkunft |---|---|---|---| | 1 | PlanTypes Z. 5235/6120 | Hartes Limit 30 Mannschaften (`MAX_MANNSCHAFT`, Exception nur in „Abstand H/A“); Auswärtskoppel-Kosten prüfen nicht und schreiben bei > 31 Mannschaften über das Array hinaus | 1 | | 2 | PlanTypes Z. 6509 | Division durch 0 in „Spielverteilung", wenn ein Team keine Spiele hat | 1 | -| 3 | PlanTypes Z. 8137 | `setDate` löscht `assignedGame` des Wunschtermins ohne Besitzprüfung → Termin gilt ggf. fälschlich als frei | 3 | -| 4 | PlanTypes Z. 3944 | Überlappungskosten letzter Spieltag überschrieben statt summiert | 3 | -| 5 | PlanTypes Z. 1436 | Bei ungerader Teamzahl fehlt im Raster ein Spieltag | 3 | -| 6 | PlanTypes Z. 4695 | Auswärtskoppel-Pfad kann bereits datierte Spiele neu terminieren | 3 | +| 3 | PlanTypes Z. 8137 | `setDate` löscht `assignedGame` des Wunschtermins ohne Besitzprüfung → Termin gilt ggf. fälschlich als frei – **korrigiert** (Entscheidung 11.10.2026, `Korrekturen.WunschterminNurVomEigentuemerFreigeben`) | 3 | +| 4 | PlanTypes Z. 3944 | Überlappungskosten letzter Spieltag überschrieben statt summiert – **korrigiert** (Entscheidung 11.10.2026, `Korrekturen.LetzteUeberlappungSummieren`); die Kosten können dadurch etwas höher sein als im Original | 3 | +| 5 | PlanTypes Z. 1436 | Bei ungerader Teamzahl fehlt im Raster ein Spieltag – **korrigiert** (Entscheidung 11.10.2026, `Korrekturen.VollstaendigesRaster`) | 3 | +| 6 | PlanTypes Z. 4695 | Auswärtskoppel-Pfad kann bereits datierte Spiele neu terminieren – **korrigiert** (Entscheidung 11.10.2026, `Korrekturen.AuswaertskoppelNurOffeneSpiele`) | 3 | | 7 | PlanTypes Z. 8562 | Fehlendes Freitags-Attribut → `false` statt Standard `true`; Ladefehler verschluckt | 2 | | 8 | PlanTypes (CSV) | Lücken in der Nummerierung; undatierte Spiele mit `DateBegin` exportiert | 2 | | 9 | PlanMainThread Z. 199 | `DynamicThreads[0]` statt `[i]` → 1/3-Grenze wirkungslos – **in C# korrigiert** (Entscheidung 27.09.2026, `Insel.DynamischeAnpassen`) | 3 | @@ -471,7 +471,7 @@ Die Portierung soll sich deutlich vom Original unterscheiden, ohne ihre Herkunft | 30 | PlanTypes (CSV) | CSV-Kopfzeile hat 15 Felder, Datenzeilen 16 (abschließendes `;`) – für Byte-Parität beibehalten | – (Eigenheit) | | 31 | Druck (PrintUtil/Main) | Wechsel des Druckers im Druckdialog (z.B. auf „Microsoft Print to PDF“) → „Ausgewählter Drucker ist ungültig“ / „Operation auf ausgewähltem Drucker nicht verfügbar“; gedruckt werden kann nur auf den Windows-Standarddrucker | 2 (entfällt mit PDF-Export, E10) | | 32 | PlanDataObjects/PlanTypes (Import) | Mannschaftsnamen im click-TT-Export teils mit führendem Leerzeichen; das Original trimmt beim Laden, CSV und `.modifications` nutzen den getrimmten Namen | – (Eigenheit, beibehalten) | -| 33 | PlanTypes (`mktMandatoryGames`) | Bei ungerader Mannschaftszahl wird die am Pflichtspieltag zwangsläufig spielfreie Mannschaft immer bestraft (z.B. R3: 100 T); keine Regel „spielfreie Mannschaft spielt am vorletzten Spieltag“ | 3 (fachliche Erweiterung, siehe E14/A5) | +| 33 | PlanTypes (`mktMandatoryGames`) | Bei ungerader Mannschaftszahl wird die am Pflichtspieltag zwangsläufig spielfreie Mannschaft immer bestraft (z.B. R3: 100 T); keine Regel „spielfreie Mannschaft spielt am vorletzten Spieltag“ – **Regel eingebaut** (Entscheidung 11.10.2026): bei ungerader Zahl darf in einem Pflichtzeitraum mit einem Spiel die erste Mannschaft fehlen, die in der Woche davor gespielt hat; Einstellung `SpielfreiAmPflichtspieltag` (Standard an, Attribut `odd-team-free` nur bei „aus“ in der Optionsdatei) | 3 (fachliche Erweiterung, siehe E14/A5) | | 34 | AndiGeneratorMain (`OpenFile`) | Dialog „Benutzereinstellungen“: **„Nein, die Standardeinstellungen verwenden“ setzt die Optionen zurück und speichert sie sofort**, ohne Warnung und ohne Sicherung. Die gespeicherten Einstellungen der Staffel sind danach verloren (am 27.09.2026 bei den Referenzmessungen für 19 Staffeln passiert). C#: nie stillschweigend überschreiben; „Standard nur für diese Sitzung“ anbieten, vor dem Überschreiben sichern | 2 | | 35 | AndiGeneratorMain (`GetCurrentPlanDirectory`), AndiGeneratorMain (`ButtonSaveClick`) | Staffelordner = `Name + ' ' + Jahr(Beginn)`: ein Plan ohne Namen/Beginn (z. B. „Neu“) landet im Ordner „ 1899“ (vorhanden). Gemerkte Pläne speichern keine Spiellokale (Namensvergleich im Dialog „Plan merken“: getrimmt, ohne Groß-/Kleinschreibung, mit Rückfrage vor dem Überschreiben). C#: Verhalten beim Lesen/Schreiben übernommen; Ordner ohne Staffelnamen später abfangen (ein führendes Leerzeichen im Namen ist unter Windows problematisch, OneDrive synchronisiert solche Namen z. B. nicht) | 1 | @@ -528,7 +528,7 @@ Funktional ist der Umfang des Originals portiert und um Automodus, Leitstand, ge - [x] **Stand abschließen:** *(erledigt 11.10.2026, PR #11)* Branch `feature/automodus-uebergang` committen und zusammenführen; Bildschirmfotos und `Doku/Anleitung.pdf` neu erzeugen (Leitstand, Start/Pause/Stopp, Spielplandaten-Seiten haben sich geändert). - [x] **Absturzschutz:** *(erledigt 11.10.2026: `Fehlerprotokoll`, `Fehlerbehandlung`, `NotfallSichern`; statt den gesicherten Plan anzutasten, wird der Plan als gemerkter Plan „Notfallsicherung“ abgelegt)* globaler Fehlerfänger (`AppDomain.UnhandledException`, `TaskScheduler.UnobservedTaskException`, Fehler im UI-Thread): verständliche Meldung, Protokolldatei im Datenordner, vorher den laufenden Plan als gesicherten Plan ablegen. -- [ ] **Klasse-3-Befunde entscheiden (E9):** #3, #4, #5, #6, #9, #10 und #33 – je Befund korrigieren (ggf. als Schalter) oder bewusst wie im Original lassen; Entscheidung in Abschnitt 6 eintragen. +- [x] **Klasse-3-Befunde entscheiden (E9):** *(entschieden 11.10.2026: #3, #4, #5, #6 korrigiert, #33 als Einstellung; #9 und #10 waren schon korrigiert. Erste Messung 11.10.2026 mit `korrekturvergleich.cmd`, siehe Änderungsprotokoll; eine längere Messung der Suchkorrekturen steht noch aus)* #3, #4, #5, #6, #9, #10 und #33 – je Befund korrigieren (ggf. als Schalter) oder bewusst wie im Original lassen; Entscheidung in Abschnitt 6 eintragen. - [ ] **Signierung entscheiden (E12):** Zertifikat für Windows (SmartScreen-Warnung) bzw. Notarisierung für macOS – oder ein klarer Hinweis auf der Download-Seite. **Sollte vor 1.0** @@ -802,3 +802,5 @@ Befund: Billigere Pläne nach der Kostenfunktion des Originals sind nicht automa | 11.10.2026 | Nach Durchsicht der Bildschirmfotos: deutsche Platzhalter schon in `App.Initialize` (galten sonst nicht ohne Bildschirm), Koordinator und Automodus-Pult im Leitstand breiter (Text war abgeschnitten), Legende der Wunschtermine bricht um (Seite war breiter als der Dialog), Verlauf zeigt nach Wechsel von der Kostenoptimierung in den Automodus zusätzlich die Kosten (Zeit davor war leer) | | 11.10.2026 | Leitstand: Schaubild und Inselkarte widersprachen sich („kommt voran“ gegenüber „beginnt gleich neu“). Jetzt geht im Schaubild „beginnt gleich neu“ vor (schlechteste Insel über der Neustart-Grenze, auch nach frischer Verbesserung), wie auf der Karte; Test `Die_schlechteste_Insel_ueber_der_Grenze_beginnt_gleich_neu_auch_wenn_sie_eben_verbessert_hat` | | 11.10.2026 | Absturzschutz: unerwartete Fehler (Oberfläche, Programm, Hintergrundaufgaben, Abbruch eines Rechenthreads der Generierung) kommen in `fehlerprotokoll.txt` im Datenordner (ab 1 MB beginnt ein neues, das alte bleibt als `fehlerprotokoll.alt.txt`); bei Fehlern auf der Oberfläche und Abbrüchen wird der Plan als gemerkter Plan „Notfallsicherung“ abgelegt und einmal eine Meldung gezeigt, das Programm läuft weiter. Kultur der Anwendung fest de-DE (`Program.Main`) | +| 11.10.2026 | Klasse-3-Befunde entschieden (E9): #3, #4, #5, #6 werden korrigiert (`Domain.Optionen.Korrekturen`, Standard `Alle`, in Kern- und Referenzmodell gleich, damit die Differenztests greifen), #33 als Einstellung „Bei ungerader Mannschaftszahl darf am Pflichtspieltag eine Mannschaft spielfrei sein“ (Standard an). `Berechnungsoptionen.Original` rechnet wie das Original (Paritätstests); `andigen optimieren --original` zum Vergleich. Mit der Regel hängt der Kostenwert Pflichtspieltage jeder Mannschaft von allen ab; der Cache rechnet diese Kostenart dann bei jeder Änderung für alle Mannschaften | +| 11.10.2026 | Messung der Korrekturen (`korrekturvergleich.cmd`: drei Staffeln mit ungerader Mannschaftszahl, je Variante 2 × 120 s Kostenoptimierung aus leerem Plan, alle Pläne in beiden Kostenmodellen bewertet; Mittel im neuen Kostenmodell). **R3** (9 Mannschaften, Pflichtspieltage): neu 50 T, Original 98 T – das Original weicht der Pflichtspieltag-Strafe aus, indem eine Mannschaft zwei Spiele in einer Woche bekommt (je 40 T), mit der Regel spielt sie stattdessen in der Woche davor. **R19** (11): neu 481 T, Original 532 T. **3. Kreisklasse** (13): neu 438 T, Original 377 T. Die Streuung innerhalb einer Variante (z. B. 524 T / 352 T) ist größer als die Unterschiede; für die Suchkorrekturen #3, #5, #6 ist damit weder ein Vorteil noch ein Nachteil belegt. Die summierte Überlappung des letzten Spieltags (#4) änderte bei keinem der zwölf Pläne den Wert. Geschwindigkeit: bei R3 mit der Pflichtspieltag-Regel rund 3 % weniger Pläne/s (Kostenart wird für alle Mannschaften neu gerechnet), sonst gleich | diff --git a/korrekturvergleich.cmd b/korrekturvergleich.cmd new file mode 100644 index 0000000..066c9c6 --- /dev/null +++ b/korrekturvergleich.cmd @@ -0,0 +1,36 @@ +@echo off +rem Vergleich der Korrekturen (Klasse-3-Befunde, Regel fuer den Pflichtspieltag) mit dem Original-Verhalten: +rem drei Staffeln mit ungerader Mannschaftszahl, je Variante zwei Laeufe zu 120 s Kostenoptimierung aus leerem Plan +rem (zusammen gut 25 Minuten). Danach werden alle Plaene in beiden Kostenmodellen bewertet. Ergebnisse im Ordner +rem korrekturvergleich (wird von Claude gelesen). Vorher bauen.cmd ausfuehren und den Rechner moeglichst nicht belasten. +chcp 65001 >nul +cd /d "%~dp0" +set "EXE=%LOCALAPPDATA%\AndiGenerator.NET\artifacts\bin\AndiGenerator.Cli\release\andigen.exe" +set "ZIEL=%~dp0korrekturvergleich" +if not exist "%EXE%" ( + echo andigen.exe nicht gefunden - bitte zuerst bauen.cmd ausfuehren. + pause + exit /b 1 +) +if not exist "%ZIEL%" mkdir "%ZIEL%" +call :staffel R3 "%~dp0testdaten\referenz\eingabe\R3_Damen_Bezirksoberliga_Rheinhessen (1).xml" +call :staffel R19 "%~dp0testdaten\referenz\eingabe\R19_1__Kreisklasse (7).xml" +call :staffel KK3 "%~dp0testdaten\referenz\perf\3__Kreisklasse (8).xml" +echo. +echo Fertig. Ergebnisse im Ordner korrekturvergleich - Claude kann sie jetzt lesen. +echo ===== ENDE %DATE% %TIME% > "%ZIEL%\fertig.txt" +pause +goto :eof + +:staffel +for %%l in (1 2) do ( + echo. + echo ======== %1 neu, Lauf %%l ======== + "%EXE%" optimieren %2 --leer --sekunden 120 --intervall 30 --plan "%ZIEL%\%1-neu-%%l.xml" --ausgabe "%ZIEL%\%1-neu-%%l.txt" + echo. + echo ======== %1 original, Lauf %%l ======== + "%EXE%" optimieren %2 --leer --sekunden 120 --intervall 30 --original --plan "%ZIEL%\%1-original-%%l.xml" --ausgabe "%ZIEL%\%1-original-%%l.txt" +) +"%EXE%" bewerten %2 "%ZIEL%\%1-neu-1.xml" "%ZIEL%\%1-neu-2.xml" "%ZIEL%\%1-original-1.xml" "%ZIEL%\%1-original-2.xml" --ausgabe "%ZIEL%\%1-bewertung-neu.txt" +"%EXE%" bewerten %2 "%ZIEL%\%1-neu-1.xml" "%ZIEL%\%1-neu-2.xml" "%ZIEL%\%1-original-1.xml" "%ZIEL%\%1-original-2.xml" --original --ausgabe "%ZIEL%\%1-bewertung-original.txt" +goto :eof diff --git a/src/AndiGenerator.Application/Optionsabweichungen.cs b/src/AndiGenerator.Application/Optionsabweichungen.cs index b927fbd..06a912e 100644 --- a/src/AndiGenerator.Application/Optionsabweichungen.cs +++ b/src/AndiGenerator.Application/Optionsabweichungen.cs @@ -36,6 +36,12 @@ public static IReadOnlyList Meldungen(Berechnungsoptionen optionen, Staf ergebnis.Add(string.Empty); } + if (!optionen.SpielfreiAmPflichtspieltag) + { + ergebnis.Add("Bei ungerader Mannschaftszahl wird die am Pflichtspieltag spielfreie Mannschaft bestraft (wie im Original)"); + ergebnis.Add(string.Empty); + } + string? runde = optionen.Rundenplanung switch { Rundenplanung.Halbrunde => "Halbrunde wird generiert", diff --git a/src/AndiGenerator.Domain/Optionen/Berechnungsoptionen.cs b/src/AndiGenerator.Domain/Optionen/Berechnungsoptionen.cs index 6877915..e370d34 100644 --- a/src/AndiGenerator.Domain/Optionen/Berechnungsoptionen.cs +++ b/src/AndiGenerator.Domain/Optionen/Berechnungsoptionen.cs @@ -52,6 +52,22 @@ public sealed record Berechnungsoptionen( Mitte1: null, Mitte2: null); + ///

Wie das Original: Standardeinstellungen ohne die Korrekturen und ohne die Regel für den Pflichtspieltag. + public static Berechnungsoptionen Original => Standard with { Korrekturen = Korrekturen.Keine, SpielfreiAmPflichtspieltag = false }; + + /// + /// Holt die Korrekturen an Fehlern des Originals in Suche und Kostenrechnung (nicht in der Optionsdatei; Standard: alle). + /// + public Korrekturen Korrekturen { get; init; } = Korrekturen.Alle; + + /// + /// Holt einen Wert, der angibt, ob bei ungerader Mannschaftszahl in einem Pflichtzeitraum mit einem Spiel genau eine + /// Mannschaft fehlen darf, wenn sie in der Woche davor gespielt hat (Befund #33, MIGRATIONSPLAN E14/A5; Attribut + /// odd-team-free im Element mandatory-games, Standard true). Das Original bestraft diese + /// zwangsläufig spielfreie Mannschaft immer. + /// + public bool SpielfreiAmPflichtspieltag { get; init; } = true; + /// Gewichtung einer Kostenart für alle Mannschaften. /// Kostenart. /// Die Gewichtung dieser Kostenart. diff --git a/src/AndiGenerator.Domain/Optionen/Korrekturen.cs b/src/AndiGenerator.Domain/Optionen/Korrekturen.cs new file mode 100644 index 0000000..94b9867 --- /dev/null +++ b/src/AndiGenerator.Domain/Optionen/Korrekturen.cs @@ -0,0 +1,40 @@ +// SPDX-FileCopyrightText: 2017 Andreas Hofmann +// SPDX-FileCopyrightText: 2026 Peter Buchmann +// SPDX-License-Identifier: GPL-3.0-only + +namespace AndiGenerator.Domain.Optionen; + +/// +/// Korrekturen an Fehlern des Originals in Suche und Kostenrechnung (Klasse-3-Befunde, MIGRATIONSPLAN E9, Entscheidung +/// 11.10.2026). Jede lässt sich einzeln abschalten; rechnet und sucht genau wie das Original +/// (Paritätstests, Vergleichsmessungen). +/// +/// +/// Befund #3 (TGame.setDate): Ein Spiel gibt beim Umsetzen nur einen Wunschtermin frei, den es selbst belegt. Im +/// Original kann das Zurücksetzen eines Spiels den Termin eines anderen Spiels als frei markieren. +/// +/// +/// Befund #4 (LastKostenOverlap): Die Überlappungen des letzten Spieltags werden summiert. Das Original behält nur +/// die des ältesten überlappenden Spieltags (den größten Anteil). +/// +/// +/// Befund #5 (CreateRasterOneRound): Bei ungerader Mannschaftszahl legt das Raster alle n Spieltage des +/// Kreisverfahrens an. Das Original legt einen zu wenig an; dessen Spiele setzt es danach zufällig. +/// +/// +/// Befund #6 (FillTermineIntern): Beim Füllen werden nur Spiele ohne Termin terminiert, auch über den Weg der +/// Auswärtskoppel. Das Original kann dort ein schon terminiertes Spiel neu terminieren (bei der Doppelrunde auch in eine +/// andere Hauptrunde). +/// +public sealed record Korrekturen( + bool WunschterminNurVomEigentuemerFreigeben, + bool LetzteUeberlappungSummieren, + bool VollstaendigesRaster, + bool AuswaertskoppelNurOffeneSpiele) +{ + /// Alle Korrekturen (Standard). + public static Korrekturen Alle { get; } = new(true, true, true, true); + + /// Keine Korrektur: wie das Original. + public static Korrekturen Keine { get; } = new(false, false, false, false); +} diff --git a/src/AndiGenerator.Engine/Kern/KernDefinition.cs b/src/AndiGenerator.Engine/Kern/KernDefinition.cs index 032b167..f9bc6f0 100644 --- a/src/AndiGenerator.Engine/Kern/KernDefinition.cs +++ b/src/AndiGenerator.Engine/Kern/KernDefinition.cs @@ -29,6 +29,8 @@ public KernDefinition(RefPlan plan) Rundenplanung = Optionen.Rundenplanung; Doppelrunde = Optionen.Doppelrunde; FreitagZaehltZumWochenende = Optionen.FreitagZaehltZumWochenende; + Korrekturen = Optionen.Korrekturen; + SpielfreiAmPflichtspieltag = Optionen.SpielfreiAmPflichtspieltag && plan.Mannschaften.Count % 2 == 1; // Gleichheitsklassen der click-TT-Ids (das Original vergleicht Spiele und Paarungen über die Id). var idKlassen = new Dictionary(StringComparer.Ordinal); @@ -263,6 +265,21 @@ public KernDefinition(RefPlan plan) public bool FreitagZaehltZumWochenende { get; } + /// Korrekturen an Fehlern des Originals (Klasse-3-Befunde). + public Korrekturen Korrekturen { get; } + + /// + /// Bei ungerader Mannschaftszahl darf in einem Pflichtzeitraum mit einem Spiel eine Mannschaft fehlen, die in der Woche + /// davor gespielt hat (Befund #33); nur gesetzt, wenn die Einstellung an und die Mannschaftszahl ungerade ist. + /// + public bool SpielfreiAmPflichtspieltag { get; } + + /// + /// Spieltage des Rasters je Runde: beim Kreisverfahren n − 1 bei gerader, n bei ungerader Mannschaftszahl. Das Original + /// nimmt immer n − 1 (Befund #5). + /// + public int RasterSpieltage => N % 2 == 1 && Korrekturen.VollstaendigesRaster ? N : N - 1; + public RefRunde[] Runden { get; } public bool[] RundeZuPlanen { get; } diff --git a/src/AndiGenerator.Engine/Kern/KernPlan.Cache.cs b/src/AndiGenerator.Engine/Kern/KernPlan.Cache.cs index d650a87..22b214e 100644 --- a/src/AndiGenerator.Engine/Kern/KernPlan.Cache.cs +++ b/src/AndiGenerator.Engine/Kern/KernPlan.Cache.cs @@ -69,7 +69,9 @@ private void AenderungenErmitteln() /// Original CalculateMannschaftsKosten mit Cache: nur geänderte Mannschaften werden neu gerechnet. private double MannschaftsKostenGecacht(MannschaftsKostenart art) { - bool alle = !artBerechnet[(int)art]; + // Mit der Regel für den Pflichtspieltag hängen die Kosten jeder Mannschaft von allen ab (Befund #33). + bool alle = !artBerechnet[(int)art] + || (art == MannschaftsKostenart.Pflichtspieltage && D.SpielfreiAmPflichtspieltag && Array.IndexOf(geaendert, true) >= 0); bool[] betroffen = art is MannschaftsKostenart.Hallenbelegung or MannschaftsKostenart.ParalleleSpiele ? vereinGeaendert : geaendert; double ergebnis = 0; for (int t = 0; t < D.N; t++) diff --git a/src/AndiGenerator.Engine/Kern/KernPlan.Kosten.cs b/src/AndiGenerator.Engine/Kern/KernPlan.Kosten.cs index 919973b..234dabe 100644 --- a/src/AndiGenerator.Engine/Kern/KernPlan.Kosten.cs +++ b/src/AndiGenerator.Engine/Kern/KernPlan.Kosten.cs @@ -246,7 +246,7 @@ private void Pflichtspieltage(int t, int k, double faktor) } } - if (anzahl < zeit.AnzahlSpiele) + if (anzahl < zeit.AnzahlSpiele && !(D.SpielfreiAmPflichtspieltag && zeit.AnzahlSpiele == 1 && SpielfreieMannschaft(zeit) == t)) { KostenAnzahl[k] += zeit.AnzahlSpiele - anzahl; } @@ -257,6 +257,51 @@ private void Pflichtspieltage(int t, int k, double faktor) KostenAlle[k] = alle; } + /// + /// Befund #33: Bei ungerader Mannschaftszahl ist in einem Pflichtzeitraum mit einem Spiel eine Mannschaft zwangsläufig + /// spielfrei. Zulässig ist das für die erste Mannschaft, die im Zeitraum nicht, aber in der Woche davor gespielt hat. + /// + /// Die Mannschaft oder −1. + private int SpielfreieMannschaft(RefPflichtzeit zeit) + { + for (int u = 0; u < D.N; u++) + { + if (SpieleZwischen(u, zeit.Von, zeit.Bis) == 0 && SpieleZwischen(u, zeit.Von - 7, zeit.Von - 1) > 0) + { + return u; + } + } + + return -1; + } + + /// Terminierte Spiele einer Mannschaft zwischen zwei Tagen (einschließlich). + private int SpieleZwischen(int t, double von, double bis) + { + int anzahl = 0; + int[] liste = Spiele[t]; + for (int i = ErsterIndexAb(t, von); i < SpieleAnzahl[t]; i++) + { + int s = liste[i]; + if (Datum[s] == 0.0) + { + continue; + } + + if (Tag[s] > bis) + { + break; + } + + if (Tag[s] >= von) + { + anzahl++; + } + } + + return anzahl; + } + /// Original TGameList.getFirstGameRefIndexByDate. private int ErsterIndexAb(int t, double datum) { diff --git a/src/AndiGenerator.Engine/Kern/KernPlan.Optimierung.cs b/src/AndiGenerator.Engine/Kern/KernPlan.Optimierung.cs index 565a108..36650eb 100644 --- a/src/AndiGenerator.Engine/Kern/KernPlan.Optimierung.cs +++ b/src/AndiGenerator.Engine/Kern/KernPlan.Optimierung.cs @@ -31,6 +31,12 @@ public void Zuruecksetzen() { if (!Fest[s]) { + // Befund #3: Gehört der Wunschtermin inzwischen einem anderen Spiel, bleibt er dessen Termin. + if (D.Korrekturen.WunschterminNurVomEigentuemerFreigeben && Wunsch[s] >= 0 && WunschSpiel[Wunsch[s]] != s) + { + Wunsch[s] = -1; + } + SetzeDatum(s, gemerktDatum[s], gemerktOptionen[s], gemerktMaxHeim[s], false, gemerktNichtNotwendig[s], gemerktWunsch[s]); } } @@ -175,12 +181,13 @@ public void RasterErzeugen(Zufall zufall) } Mischen(reihenfolge, n, zufall); - for (int i = 0; i < n - 1; i++) + int spieltage = D.RasterSpieltage; + for (int i = 0; i < spieltage; i++) { spieltagIndexe[i] = i; } - Mischen(spieltagIndexe, n - 1, zufall); + Mischen(spieltagIndexe, spieltage, zufall); for (int i = 0; i < D.Runden.Length; i++) { RasterEinerRunde(i, i % 2 == 0, zufall); @@ -353,7 +360,9 @@ private void TermineFuellenIntern(bool alleZweitzeitenGueltig, Zufall zufall) { int i = zufall.Zahl(anzahlOffen); int s = offen[i]; - if (!NichtNotwendig[s]) + + // Befund #6: Ein Spiel, das inzwischen über die Auswärtskoppel einen Termin bekam, wird nicht neu terminiert. + if (!NichtNotwendig[s] && (!D.Korrekturen.AuswaertskoppelNurOffeneSpiele || Datum[s] == 0.0)) { SpielFuellen(s, alleZweitzeitenGueltig, zufall); } @@ -388,6 +397,11 @@ private void SpielFuellen(int s, bool alleZweitzeitenGueltig, Zufall zufall) } int zweites = abhaengig[zufall.Zahl(abhaengig.Length)]; + if (D.Korrekturen.AuswaertskoppelNurOffeneSpiele && (Datum[zweites] != 0.0 || NichtNotwendig[zweites])) + { + return; + } + int zweitesHeim = Heim[zweites]; int start = D.WunschStart[zweitesHeim]; int passend = 0; @@ -459,7 +473,7 @@ private void RasterEinerRunde(int runde, bool rueckrunde, Zufall zufall) double[] alle = D.RundenMontage[runde]; int anzahlMontage = alle.Length; Array.Copy(alle, montage, anzahlMontage); - while (anzahlMontage > D.N - 1) + while (anzahlMontage > D.RasterSpieltage) { int index = zufall.Zahl(anzahlMontage); Array.Copy(montage, index + 1, montage, index, anzahlMontage - index - 1); diff --git a/src/AndiGenerator.Engine/Kern/KernPlan.Plankosten.cs b/src/AndiGenerator.Engine/Kern/KernPlan.Plankosten.cs index 27c1007..27546f3 100644 --- a/src/AndiGenerator.Engine/Kern/KernPlan.Plankosten.cs +++ b/src/AndiGenerator.Engine/Kern/KernPlan.Plankosten.cs @@ -180,7 +180,8 @@ public RefPlan.Spieltagskosten SpieltagsKosten() double wert = abstand * faktor; if (spieltage - 1 == i) { - letzteUeberlappung = wert * 20.0; + // Befund #4: Das Original behält nur den Wert des ältesten überlappenden Spieltags. + letzteUeberlappung = optionen.Korrekturen.LetzteUeberlappungSummieren ? letzteUeberlappung + (wert * 20.0) : wert * 20.0; } ueberlappung += wert; diff --git a/src/AndiGenerator.Engine/Referenz/RefMannschaft.Kosten.cs b/src/AndiGenerator.Engine/Referenz/RefMannschaft.Kosten.cs index 552260e..713f5d9 100644 --- a/src/AndiGenerator.Engine/Referenz/RefMannschaft.Kosten.cs +++ b/src/AndiGenerator.Engine/Referenz/RefMannschaft.Kosten.cs @@ -226,7 +226,7 @@ private void Pflichtspieltage(RefPlan plan, MannschaftsKostenart art, RefMannsch } } - if (anzahl < zeit.AnzahlSpiele) + if (anzahl < zeit.AnzahlSpiele && !(zeit.AnzahlSpiele == 1 && ReferenceEquals(plan.SpielfreieMannschaft(zeit), this))) { kosten.Werte[(int)art].Anzahl += zeit.AnzahlSpiele - anzahl; if (meldungen) diff --git a/src/AndiGenerator.Engine/Referenz/RefMannschaft.cs b/src/AndiGenerator.Engine/Referenz/RefMannschaft.cs index 4ed62f8..4667143 100644 --- a/src/AndiGenerator.Engine/Referenz/RefMannschaft.cs +++ b/src/AndiGenerator.Engine/Referenz/RefMannschaft.cs @@ -365,6 +365,35 @@ public int ParalleleSpiele(double datum, RefPlan plan) return anzahl; } + /// Terminierte Spiele dieser Mannschaft zwischen zwei Tagen (einschließlich). + /// Erster Tag. + /// Letzter Tag. + /// Die Anzahl. + public int SpieleZwischen(double von, double bis) + { + int anzahl = 0; + for (int i = ErsterIndexAb(von); i < Spiele.Count; i++) + { + if (!Spiele[i].DatumGueltig) + { + continue; + } + + int tag = DelphiDatum.Trunc(Spiele[i].Datum); + if (tag > bis) + { + break; + } + + if (tag >= von) + { + anzahl++; + } + } + + return anzahl; + } + /// Original TAuswaertsKoppelCachedTeams.AddTeamIdToTeamId. private static void PartnerHinzufuegen(Dictionary> partner, string von, string zu) { diff --git a/src/AndiGenerator.Engine/Referenz/RefPlan.Kosten.cs b/src/AndiGenerator.Engine/Referenz/RefPlan.Kosten.cs index b441c90..5d818a3 100644 --- a/src/AndiGenerator.Engine/Referenz/RefPlan.Kosten.cs +++ b/src/AndiGenerator.Engine/Referenz/RefPlan.Kosten.cs @@ -129,6 +129,22 @@ public double VereinsinterneSpieleAmAnfangKosten() return Math.Min(MaxKostenOhneHartenFehler, wert); } + /// + /// Befund #33: Bei ungerader Mannschaftszahl ist in einem Pflichtzeitraum mit einem Spiel eine Mannschaft zwangsläufig + /// spielfrei. Zulässig ist das für die erste Mannschaft, die im Zeitraum nicht, aber in der Woche davor gespielt hat. + /// + /// Der Pflichtzeitraum. + /// Die Mannschaft oder null (auch, wenn die Regel nicht gilt). + public RefMannschaft? SpielfreieMannschaft(RefPflichtzeit zeit) + { + if (!Optionen.SpielfreiAmPflichtspieltag || Mannschaften.Count % 2 == 0) + { + return null; + } + + return Mannschaften.FirstOrDefault(m => m.SpieleZwischen(zeit.Von, zeit.Bis) == 0 && m.SpieleZwischen(zeit.Von - 7, zeit.Von - 1) > 0); + } + /// Original CalculateSpielTagKosten. public Spieltagskosten SpieltagsKosten() { @@ -166,7 +182,8 @@ public Spieltagskosten SpieltagsKosten() double wert = abstand * faktor; if (spieltage - 1 == i) { - letzteUeberlappung = wert * 20.0; + // Befund #4: Das Original behält nur den Wert des ältesten überlappenden Spieltags. + letzteUeberlappung = Optionen.Korrekturen.LetzteUeberlappungSummieren ? letzteUeberlappung + (wert * 20.0) : wert * 20.0; } ueberlappung += wert; diff --git a/src/AndiGenerator.Engine/Referenz/RefPlan.Optimierung.cs b/src/AndiGenerator.Engine/Referenz/RefPlan.Optimierung.cs index d5d4633..8dcdd69 100644 --- a/src/AndiGenerator.Engine/Referenz/RefPlan.Optimierung.cs +++ b/src/AndiGenerator.Engine/Referenz/RefPlan.Optimierung.cs @@ -53,9 +53,10 @@ public void Merken() /// Original TransferRefDateToDate (die Spiellisten der Mannschaften werden wie im Original nicht neu sortiert). public void Zuruecksetzen() { + bool nurEigene = Optionen.Korrekturen.WunschterminNurVomEigentuemerFreigeben; foreach (RefSpiel spiel in SpieleErlaubt) { - spiel.Zuruecksetzen(); + spiel.Zuruecksetzen(nurEigene); } } @@ -159,7 +160,7 @@ public void RasterErzeugen(Zufall zufall) } } - var spieltagIndexe = Enumerable.Range(0, mannschaften.Count - 1).ToList(); + var spieltagIndexe = Enumerable.Range(0, RasterSpieltage()).ToList(); for (int i = 0; i <= 100; i++) { int i1 = zufall.Zahl(spieltagIndexe.Count); @@ -274,7 +275,9 @@ private void TermineFuellenIntern(bool alleZweitzeitenGueltig, Zufall zufall) { int i = zufall.Zahl(offen.Count); RefSpiel spiel = offen[i]; - if (spiel.NichtNotwendig) + + // Befund #6: Ein Spiel, das inzwischen über die Auswärtskoppel einen Termin bekam, wird nicht neu terminiert. + if (spiel.NichtNotwendig || (Optionen.Korrekturen.AuswaertskoppelNurOffeneSpiele && spiel.Datum != 0.0)) { offen.RemoveAt(i); continue; @@ -288,10 +291,11 @@ private void TermineFuellenIntern(bool alleZweitzeitenGueltig, Zufall zufall) if (abhaengig is { Count: > 0 }) { RefSpiel zweites = abhaengig[zufall.Zahl(abhaengig.Count)]; + bool zweitesOffen = !Optionen.Korrekturen.AuswaertskoppelNurOffeneSpiele || (zweites.Datum == 0.0 && !zweites.NichtNotwendig); List indexe = Enumerable.Range(0, zweites.Heim.Wunschtermine.Count) .Where(k => Math.Abs(DelphiDatum.Trunc(spiel.Datum) - DelphiDatum.Trunc(zweites.Heim.Wunschtermine[k].Datum)) <= 1) .ToList(); - if (indexe.Count > 0) + if (zweitesOffen && indexe.Count > 0) { TerminFuellen(zweites, indexe, alleZweitzeitenGueltig, zufall); } @@ -352,11 +356,18 @@ private void UngueltigeZweitterminSpieleEntfernen() } } + /// + /// Spieltage des Rasters je Runde: beim Kreisverfahren n − 1 bei gerader, n bei ungerader Mannschaftszahl. Das Original + /// nimmt immer n − 1 (Befund #5). + /// + private int RasterSpieltage() => + Mannschaften.Count % 2 == 1 && Optionen.Korrekturen.VollstaendigesRaster ? Mannschaften.Count : Mannschaften.Count - 1; + /// Original CreateRasterOneRound. private void RasterEinerRunde(List mannschaften, List spieltagIndexe, RefRunde runde, bool rueckrunde, Zufall zufall) { List montage = SpieltagMontage(runde.Von, runde.Bis); - while (montage.Count > mannschaften.Count - 1) + while (montage.Count > RasterSpieltage()) { montage.RemoveAt(zufall.Zahl(montage.Count)); } diff --git a/src/AndiGenerator.Engine/Referenz/RefSpiel.cs b/src/AndiGenerator.Engine/Referenz/RefSpiel.cs index c71c185..4574678 100644 --- a/src/AndiGenerator.Engine/Referenz/RefSpiel.cs +++ b/src/AndiGenerator.Engine/Referenz/RefSpiel.cs @@ -60,10 +60,18 @@ public void SetzeDatum(double datum, Wunschterminoptionen optionen, int maxHeim, public void Merken() => gemerkt = (Datum, DatumOptionen, DatumMaxHeim, Wunschtermin, NichtNotwendig); /// Original TransferRefDateToDate für dieses Spiel (feste Spiele bleiben). - public void Zuruecksetzen() + /// + /// Befund #3: Den bisherigen Wunschtermin nur freigeben, wenn er noch diesem Spiel gehört (das Original gibt ihn immer frei). + /// + public void Zuruecksetzen(bool nurEigeneFreigeben) { if (!FestesDatum) { + if (nurEigeneFreigeben && Wunschtermin is not null && !ReferenceEquals(Wunschtermin.ZugeordnetesSpiel, this)) + { + Wunschtermin = null; + } + SetzeDatum(gemerkt.Datum, gemerkt.Optionen, gemerkt.MaxHeim, false, gemerkt.NichtNotwendig, gemerkt.Wunsch); } } diff --git a/src/AndiGenerator.Persistence/Optionen/OptionenDatei.cs b/src/AndiGenerator.Persistence/Optionen/OptionenDatei.cs index 216402d..f18b184 100644 --- a/src/AndiGenerator.Persistence/Optionen/OptionenDatei.cs +++ b/src/AndiGenerator.Persistence/Optionen/OptionenDatei.cs @@ -168,7 +168,17 @@ public static byte[] ErzeugenBytes(Berechnungsoptionen optionen) } } - text.Append("/>\r\n"); + text.Append("/>"); + + // Nur bei Abweichung vom Standard: So bleibt die Datei sonst byte-gleich zum Original, das das Element nicht kennt. + if (!optionen.SpielfreiAmPflichtspieltag) + { + text.Append(""); + } + + text.Append("\r\n"); return Iso885915.GetBytes(text.ToString()); } @@ -260,6 +270,12 @@ private static Berechnungsoptionen Auswerten(XElement wurzel) }; } + XElement? pflicht = wurzel.Elements("mandatory-games").FirstOrDefault(); + if (pflicht is not null) + { + o = o with { SpielfreiAmPflichtspieltag = AttributLesen(pflicht, "odd-team-free") != "false" }; + } + return o; } diff --git a/src/AndiGenerator.Presentation/OptionenAnsichtViewModel.cs b/src/AndiGenerator.Presentation/OptionenAnsichtViewModel.cs index 21f6e00..89f7477 100644 --- a/src/AndiGenerator.Presentation/OptionenAnsichtViewModel.cs +++ b/src/AndiGenerator.Presentation/OptionenAnsichtViewModel.cs @@ -20,6 +20,7 @@ public sealed class OptionenAnsichtViewModel : Document private readonly HauptfensterViewModel hauptfenster; private bool laden; private bool freitag; + private bool spielfreiAmPflichtspieltag; private int rundenplanung; private bool doppelrunde; private bool automatischeMitte; @@ -63,6 +64,22 @@ public bool FreitagZaehltZumWochenende } } + /// + /// Holt oder setzt einen Wert, der angibt, ob bei ungerader Mannschaftszahl am Pflichtspieltag eine Mannschaft spielfrei + /// sein darf, wenn sie in der Woche davor gespielt hat (Befund #33). + /// + public bool SpielfreiAmPflichtspieltag + { + get => spielfreiAmPflichtspieltag; + set + { + if (SetProperty(ref spielfreiAmPflichtspieltag, value)) + { + Aendern(o => o with { SpielfreiAmPflichtspieltag = value }); + } + } + } + /// Holt oder setzt die Rundenplanung als Index in . public int RundenplanungIndex { @@ -180,6 +197,7 @@ internal void Laden() try { FreitagZaehltZumWochenende = o.FreitagZaehltZumWochenende; + SpielfreiAmPflichtspieltag = o.SpielfreiAmPflichtspieltag; RundenplanungIndex = (int)o.Rundenplanung; Doppelrunde = o.Doppelrunde; AutomatischeMitte = o.AutomatischeMitte; diff --git a/src/AndiGenerator.UI/Ansichten/OptionenAnsicht.axaml b/src/AndiGenerator.UI/Ansichten/OptionenAnsicht.axaml index 7c83154..9b410ac 100644 --- a/src/AndiGenerator.UI/Ansichten/OptionenAnsicht.axaml +++ b/src/AndiGenerator.UI/Ansichten/OptionenAnsicht.axaml @@ -89,6 +89,9 @@ + diff --git a/tests/AndiGenerator.Persistence.Tests/KorrekturenTests.cs b/tests/AndiGenerator.Persistence.Tests/KorrekturenTests.cs new file mode 100644 index 0000000..a0f812a --- /dev/null +++ b/tests/AndiGenerator.Persistence.Tests/KorrekturenTests.cs @@ -0,0 +1,76 @@ +// SPDX-FileCopyrightText: 2017 Andreas Hofmann +// SPDX-FileCopyrightText: 2026 Peter Buchmann +// SPDX-License-Identifier: GPL-3.0-only + +using AndiGenerator.Domain.Optionen; +using AndiGenerator.Domain.Stammdaten; +using AndiGenerator.Engine.Referenz; +using AndiGenerator.Persistence.Optionen; + +namespace AndiGenerator.Persistence.Tests; + +/// Korrekturen der Klasse-3-Befunde (MIGRATIONSPLAN E9, Entscheidung 11.10.2026) und die Regel für den Pflichtspieltag. +public sealed class KorrekturenTests +{ + [Fact] + public void Standard_korrigiert_alles_Original_nichts() + { + Assert.Equal(Korrekturen.Alle, Berechnungsoptionen.Standard.Korrekturen); + Assert.True(Berechnungsoptionen.Standard.SpielfreiAmPflichtspieltag); + Assert.Equal(Korrekturen.Keine, Berechnungsoptionen.Original.Korrekturen); + Assert.False(Berechnungsoptionen.Original.SpielfreiAmPflichtspieltag); + } + + [Theory] + [MemberData(nameof(ParitaetTests.Referenzfaelle), MemberType = typeof(ParitaetTests))] + public void Die_Regel_fuer_den_Pflichtspieltag_entlastet_hoechstens_eine_Mannschaft_je_Zeitraum(string fall) + { + Staffel staffel = ParitaetTests.StaffelLaden(fall); + int vorher = Pflichtverstoesse(Referenzbewertung.Bewerten(staffel, Berechnungsoptionen.Original)); + int nachher = Pflichtverstoesse(Referenzbewertung.Bewerten(staffel, Berechnungsoptionen.Original with { SpielfreiAmPflichtspieltag = true })); + if (staffel.Mannschaften.Count % 2 == 0) + { + Assert.Equal(vorher, nachher); + } + else + { + Assert.InRange(vorher - nachher, 0, staffel.Pflichtspielzeitraeume.Count(z => z.AnzahlSpiele == 1)); + } + } + + [Theory] + [MemberData(nameof(ParitaetTests.Referenzfaelle), MemberType = typeof(ParitaetTests))] + public void Summiert_wird_die_Ueberlappung_des_letzten_Spieltags_nie_kleiner(string fall) + { + Staffel staffel = ParitaetTests.StaffelLaden(fall); + Planbewertung original = Referenzbewertung.Bewerten(staffel, Berechnungsoptionen.Original); + Planbewertung summiert = Referenzbewertung.Bewerten( + staffel, + Berechnungsoptionen.Original with { Korrekturen = Korrekturen.Keine with { LetzteUeberlappungSummieren = true } }); + Assert.True(summiert.UeberlappungLetzterSpieltag >= original.UeberlappungLetzterSpieltag); + Assert.Equal(original.UeberlappungSpieltage, summiert.UeberlappungSpieltage); + } + + [Fact] + public void Die_Einstellung_wird_nur_bei_Abweichung_gespeichert() + { + byte[] standard = OptionenDatei.ErzeugenBytes(Berechnungsoptionen.Standard); + Assert.DoesNotContain("mandatory-games", System.Text.Encoding.Latin1.GetString(standard), StringComparison.Ordinal); + + string pfad = Path.Combine(Path.GetTempPath(), "andigen-korrektur-" + Guid.NewGuid().ToString("N") + ".options"); + try + { + OptionenDatei.Speichern(pfad, Berechnungsoptionen.Standard with { SpielfreiAmPflichtspieltag = false }); + Assert.False(OptionenDatei.Laden(pfad).SpielfreiAmPflichtspieltag); + OptionenDatei.Speichern(pfad, Berechnungsoptionen.Standard); + Assert.True(OptionenDatei.Laden(pfad).SpielfreiAmPflichtspieltag); + } + finally + { + File.Delete(pfad); + } + } + + private static int Pflichtverstoesse(Planbewertung bewertung) => + bewertung.Mannschaften.Sum(m => m.JeKostenart[(int)MannschaftsKostenart.Pflichtspieltage].Anzahl); +} diff --git a/tests/AndiGenerator.Persistence.Tests/ParitaetTests.cs b/tests/AndiGenerator.Persistence.Tests/ParitaetTests.cs index 297410f..ec31aa7 100644 --- a/tests/AndiGenerator.Persistence.Tests/ParitaetTests.cs +++ b/tests/AndiGenerator.Persistence.Tests/ParitaetTests.cs @@ -35,7 +35,7 @@ public void Kostentabelle_entspricht_dem_Original(string fall) { using JsonDocument json = JsonDocument.Parse(File.ReadAllText(Path.Combine(Referenzordner(), "werte", fall + ".json"))); JsonElement erwartet = json.RootElement; - Planbewertung bewertung = Referenzbewertung.Bewerten(StaffelLaden(fall), Berechnungsoptionen.Standard); + Planbewertung bewertung = Referenzbewertung.Bewerten(StaffelLaden(fall), Berechnungsoptionen.Original); var fehler = new List(); int vorher = verglichen; @@ -84,7 +84,7 @@ public void Kostentabelle_entspricht_dem_Original(string fall) Assert.True(verglichen - vorher >= 30, $"{fall}: nur {verglichen - vorher} Werte verglichen."); } - private static Staffel StaffelLaden(string fall) + internal static Staffel StaffelLaden(string fall) { string ordner = Path.Combine(Referenzordner(), "eingabe"); string xml = Directory.GetFiles(ordner, fall + "_*.xml").Single(); diff --git a/tools/AndiGenerator.Cli/BewertenArgumente.cs b/tools/AndiGenerator.Cli/BewertenArgumente.cs index bc41e1a..1dfe6c9 100644 --- a/tools/AndiGenerator.Cli/BewertenArgumente.cs +++ b/tools/AndiGenerator.Cli/BewertenArgumente.cs @@ -21,6 +21,8 @@ internal sealed class BewertenArgumente public bool Details { get; private set; } + public bool Original { get; private set; } + public string? Ausgabe { get; private set; } /// Liest die Argumente nach dem Befehlswort; null bei Fehlern (Meldung in ). @@ -72,6 +74,12 @@ private bool Setzen(string arg, Queue werte, out string fehler) return true; } + if (arg == "--original") + { + Original = true; + return true; + } + if (arg == "--hilfe") { return false; diff --git a/tools/AndiGenerator.Cli/BewertenBefehl.cs b/tools/AndiGenerator.Cli/BewertenBefehl.cs index 5dfa25f..f53c66e 100644 --- a/tools/AndiGenerator.Cli/BewertenBefehl.cs +++ b/tools/AndiGenerator.Cli/BewertenBefehl.cs @@ -23,6 +23,7 @@ internal static class BewertenBefehl --optionen DATEI Optionsdatei (.options); "auto" = Staffelordner des Originals; Standard: Standardoptionen --rundenplanung R beide | halbrunde | vorrunde | rueckrunde (überschreibt die Optionsdatei) --details zusätzlich die Meldungen je Mannschaft ausgeben + --original Kosten wie im Original (ohne die Korrekturen und ohne die Regel für den Pflichtspieltag) --ausgabe DATEI Bildschirmausgabe zusätzlich in diese Datei schreiben Eine .modifications-Datei neben der XML-Datei wird automatisch berücksichtigt. """; @@ -69,6 +70,12 @@ private static int Bewerten(BewertenArgumente a) optionen = optionen with { Rundenplanung = r }; } + if (a.Original) + { + optionen = optionen with { Korrekturen = Korrekturen.Keine, SpielfreiAmPflichtspieltag = false }; + herkunft += ", wie im Original (ohne Korrekturen)"; + } + Console.WriteLine($"Staffel: {staffel.Name} ({staffel.Mannschaften.Count} Mannschaften)"); Console.WriteLine($"Optionen: {herkunft}, Rundenplanung {optionen.Rundenplanung}"); Console.WriteLine(); diff --git a/tools/AndiGenerator.Cli/OptimierenArgumente.cs b/tools/AndiGenerator.Cli/OptimierenArgumente.cs index 81d20c8..b31cf4a 100644 --- a/tools/AndiGenerator.Cli/OptimierenArgumente.cs +++ b/tools/AndiGenerator.Cli/OptimierenArgumente.cs @@ -21,6 +21,8 @@ internal sealed class OptimierenArgumente --rundenplanung R beide | halbrunde | vorrunde | rueckrunde (überschreibt die Optionsdatei) --leer mit leerem Plan beginnen (sonst mit dem bestehenden Spielplan der Datei) --ohne-spezial ohne Spezial-Insel + --original Suche und Kosten wie im Original (ohne die Korrekturen der Klasse-3-Befunde + und ohne die Regel für den Pflichtspieltag; zum Vergleich) --intervall N Statuszeile alle N Sekunden (Standard 10) --protokoll DATEI Verlauf als CSV (Sekunden;Durchläufe;Pläne/s;Kosten;Verbesserungen;Neustarts;Spezial) --plan DATEI besten Plan als gemerkten Plan (Format des Originals) speichern @@ -48,6 +50,9 @@ Eine .modifications-Datei neben der XML-Datei wird automatisch berücksichtigt. public bool OhneSpezial { get; private set; } + /// Holt einen Wert, der angibt, ob ohne Korrekturen gerechnet wird (wie das Original). + public bool Original { get; private set; } + public int Intervall { get; private set; } = 10; public string? Protokoll { get; private set; } @@ -121,6 +126,9 @@ private bool Setzen(string arg, Queue werte, out string fehler) case "--ohne-spezial": OhneSpezial = true; return true; + case "--original": + Original = true; + return true; case "--sekunden" when Zahl(werte, arg, out zahl, out fehler): Sekunden = (int)Math.Min(zahl, int.MaxValue); return true; diff --git a/tools/AndiGenerator.Cli/OptimierenBefehl.cs b/tools/AndiGenerator.Cli/OptimierenBefehl.cs index b88f3d3..20a41c2 100644 --- a/tools/AndiGenerator.Cli/OptimierenBefehl.cs +++ b/tools/AndiGenerator.Cli/OptimierenBefehl.cs @@ -84,6 +84,12 @@ private static async Task Optimieren(OptimierenArgumente a) { Staffel staffel = StaffelLaden(a.Datei, a.Leer); (Berechnungsoptionen optionen, string herkunft) = OptionenLaden(a.Optionen, staffel); + if (a.Original) + { + optionen = optionen with { Korrekturen = Korrekturen.Keine, SpielfreiAmPflichtspieltag = false }; + herkunft += ", wie im Original (ohne Korrekturen)"; + } + if (a.Rundenplanung is Rundenplanung runde) { optionen = optionen with { Rundenplanung = runde }; From 789405d64af38f6a6b915c42f755ea66aed802cc Mon Sep 17 00:00:00 2001 From: Peter Buchmann Date: Sun, 11 Oct 2026 21:45:53 +0000 Subject: [PATCH 3/3] Signierung: vorerst unsigniert; Release Notes aus dem CHANGELOG MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SignPath Foundation hat abgelehnt; CODE_SIGNING.md und Migrationsplan (E12) nennen den Stand, 1.0 erscheint kostenfrei unsigniert - release.yml übernimmt den Abschnitt der Version aus CHANGELOG.md als Text des Releases; CONTRIBUTING.md beschreibt den Ablauf - CHANGELOG: bisher Unveröffentlichtes als 0.9.6 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01KPXzdFCpdtwdYcyQVmsnhH --- .github/workflows/release.yml | 27 +++++++++++++++++++++++++++ CHANGELOG.md | 2 +- CODE_SIGNING.md | 4 ++-- CONTRIBUTING.md | 6 +++++- Doku/MIGRATIONSPLAN.md | 3 ++- 5 files changed, 37 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a9b303b..c35f97b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -118,6 +118,33 @@ jobs: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: gh release upload ${{ github.ref_name }} AndiGeneratorNET-${{ steps.version.outputs.version }}-sbom.spdx.json + # Der Abschnitt „## “ aus CHANGELOG.md wird zum Text des Releases. Fehlt er, bleibt der Text leer. + - name: Release Notes aus CHANGELOG.md + continue-on-error: true + shell: pwsh + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + $version = '${{ steps.version.outputs.version }}' + $zeilen = @(Get-Content CHANGELOG.md -Encoding utf8) + $start = -1 + for ($i = 0; $i -lt $zeilen.Count; $i++) { + if ($zeilen[$i] -match ('^## ' + [regex]::Escape($version) + '(\s|$)')) { $start = $i; break } + } + if ($start -lt 0) { + Write-Host "Kein Abschnitt '## $version' in CHANGELOG.md - der Release-Text bleibt leer." + exit 0 + } + $ende = $zeilen.Count + for ($i = $start + 1; $i -lt $zeilen.Count; $i++) { + if ($zeilen[$i] -match '^## ') { $ende = $i; break } + } + $text = '' + if ($ende -gt $start + 1) { $text = ($zeilen[($start + 1)..($ende - 1)] -join "`n").Trim() } + $text += "`n`nAlle Änderungen: [CHANGELOG.md](${{ github.server_url }}/${{ github.repository }}/blob/${{ github.ref_name }}/CHANGELOG.md)" + Set-Content -Path release-notes.md -Value $text -Encoding utf8 + gh release edit ${{ github.ref_name }} --notes-file release-notes.md + # Linux (Chromebooks mit Linux-Entwicklungsumgebung, auch andere Linux-Systeme): eigenständig veröffentlichen und als # Debian-Paket und tar.gz an das Release hängen, das der Windows-Job angelegt hat. Getestet wird im Windows-Job. linux: diff --git a/CHANGELOG.md b/CHANGELOG.md index 47e43f5..e661f24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ Was sich von Version zu Version für Anwender ändert. Die Einzelheiten stehen in der [Anleitung](Doku/ANLEITUNG.md), die technische Geschichte im [Migrationsplan](Doku/MIGRATIONSPLAN.md). -## Unveröffentlicht +## 0.9.6 ### Neu diff --git a/CODE_SIGNING.md b/CODE_SIGNING.md index 02e8a02..d40362e 100644 --- a/CODE_SIGNING.md +++ b/CODE_SIGNING.md @@ -7,7 +7,7 @@ Die Programmdateien und das Setup von AndiGenerator.NET sollen künftig digital signiert werden, damit Windows sie als vertrauenswürdig erkennt. **Kostenlose Code-Signierung bereitgestellt von [SignPath.io](https://about.signpath.io), Zertifikat von der [SignPath Foundation](https://signpath.org).** -*(Die Aufnahme in das Programm der SignPath Foundation ist beantragt. Bis zur Zusage sind die veröffentlichten Dateien noch nicht signiert.)* +*(Die SignPath Foundation hat den ersten Antrag im Oktober 2026 abgelehnt: Das Projekt sei öffentlich noch nicht bekannt genug. Eine erneute Bewerbung ist ausdrücklich möglich, sobald es breiter genutzt wird. Bis dahin sind die veröffentlichten Dateien nicht signiert; eine bezahlte Signierung ist derzeit nicht vorgesehen. Die Herkunftsnachweise von GitHub (siehe unten) belegen trotzdem, dass jede Datei aus diesem Repository gebaut wurde.)* Signiert werden ausschließlich Dateien, die aus dem Quellcode dieses Repositorys gebaut werden: @@ -44,4 +44,4 @@ Links, die Sie im Programm anklicken (z. B. zum Lizenztext), öffnen Ihren Brows ### English summary -Free code signing provided by SignPath.io, certificate by SignPath Foundation (application pending; releases are unsigned until approval). Only binaries built from this repository by GitHub Actions are signed, and every signing request is approved manually. Committer, reviewer and approver: Peter Buchmann (@PBuchmann), using multi-factor authentication. Privacy: the program does not transfer any data to other networked systems, except for an update check against GitHub at startup, which sends no user data and can be turned off in the *About* dialog. +Free code signing provided by SignPath.io, certificate by SignPath Foundation (first application declined in October 2026 for lack of public visibility; we will reapply once the project is more widely used – until then releases are unsigned, but carry GitHub build provenance attestations). Only binaries built from this repository by GitHub Actions are signed, and every signing request is approved manually. Committer, reviewer and approver: Peter Buchmann (@PBuchmann), using multi-factor authentication. Privacy: the program does not transfer any data to other networked systems, except for an update check against GitHub at startup, which sends no user data and can be turned off in the *About* dialog. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 59f8a19..9492137 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,12 +19,16 @@ Auf `main` wird nicht direkt gepusht. Jede Änderung läuft über einen eigenen Kleine, in sich abgeschlossene Pull Requests lassen sich schneller prüfen als große. +## Neue Version + +Was sich für Anwender ändert, kommt mit jedem Pull Request in [CHANGELOG.md](CHANGELOG.md) unter **Unveröffentlicht**. Vor einer neuen Version wird diese Überschrift zu `## x.y.z (Datum)`; danach den Tag `vx.y.z` auf `main` setzen. Der Release-Workflow übernimmt den Abschnitt der Version als Text des Releases auf GitHub. + ## Code-Stil - **Warnungen sind Fehler** – auch die von StyleCop und SonarAnalyzer. Einstellungen in `.editorconfig` und `stylecop.json`. - **Deutsche Fachbegriffe** für Klassen, Methoden und Variablen (`Mannschaft`, `Spieltag`, `Wunschtermin`), technische Begriffe englisch, wo sie üblich sind (`Command`, `ViewModel`). Kommentare und XML-Dokumentation auf Deutsch. - **Schichten einhalten:** Domain ← Engine ← Persistence ← Application ← Presentation ← UI ← Desktop; Rendering zeichnet für Bildschirm und PDF. Die Presentation-Schicht kennt Avalonia nicht. Die Architekturtests prüfen das. -- **Referenzmodell:** `src/AndiGenerator.Engine/Referenz` ist eine bewusst wörtliche Portierung des Originals und dient als Maßstab der Paritätstests. Änderungen dort nur, wenn das Verhalten des Originals falsch übertragen wurde. +- **Referenzmodell:** `src/AndiGenerator.Engine/Referenz` ist eine bewusst wörtliche Portierung des Originals und dient als Maßstab der Paritätstests. Änderungen dort nur, wenn das Verhalten des Originals falsch übertragen wurde, oder als abschaltbare Korrektur eines Fehlers des Originals (`Domain.Optionen.Korrekturen`; `Berechnungsoptionen.Original` rechnet weiter wie das Original). - **Fachliche Abweichungen vom Original** nur nach Absprache und als Eintrag im Migrationsplan (Abschnitt Befunde/Entscheidungen). ## Dateikopf und Lizenz diff --git a/Doku/MIGRATIONSPLAN.md b/Doku/MIGRATIONSPLAN.md index f0099d4..edd421e 100644 --- a/Doku/MIGRATIONSPLAN.md +++ b/Doku/MIGRATIONSPLAN.md @@ -529,7 +529,7 @@ Funktional ist der Umfang des Originals portiert und um Automodus, Leitstand, ge - [x] **Stand abschließen:** *(erledigt 11.10.2026, PR #11)* Branch `feature/automodus-uebergang` committen und zusammenführen; Bildschirmfotos und `Doku/Anleitung.pdf` neu erzeugen (Leitstand, Start/Pause/Stopp, Spielplandaten-Seiten haben sich geändert). - [x] **Absturzschutz:** *(erledigt 11.10.2026: `Fehlerprotokoll`, `Fehlerbehandlung`, `NotfallSichern`; statt den gesicherten Plan anzutasten, wird der Plan als gemerkter Plan „Notfallsicherung“ abgelegt)* globaler Fehlerfänger (`AppDomain.UnhandledException`, `TaskScheduler.UnobservedTaskException`, Fehler im UI-Thread): verständliche Meldung, Protokolldatei im Datenordner, vorher den laufenden Plan als gesicherten Plan ablegen. - [x] **Klasse-3-Befunde entscheiden (E9):** *(entschieden 11.10.2026: #3, #4, #5, #6 korrigiert, #33 als Einstellung; #9 und #10 waren schon korrigiert. Erste Messung 11.10.2026 mit `korrekturvergleich.cmd`, siehe Änderungsprotokoll; eine längere Messung der Suchkorrekturen steht noch aus)* #3, #4, #5, #6, #9, #10 und #33 – je Befund korrigieren (ggf. als Schalter) oder bewusst wie im Original lassen; Entscheidung in Abschnitt 6 eintragen. -- [ ] **Signierung entscheiden (E12):** Zertifikat für Windows (SmartScreen-Warnung) bzw. Notarisierung für macOS – oder ein klarer Hinweis auf der Download-Seite. +- [x] **Signierung entscheiden (E12):** *(entschieden 11.10.2026: Die SignPath Foundation hat abgelehnt – zu wenig öffentliche Sichtbarkeit, erneuter Antrag später möglich. Die Signierung darf derzeit nichts kosten, deshalb erscheint 1.0 **unsigniert** mit dem Hinweis zur SmartScreen-Warnung in Anleitung und README und mit den Herkunftsnachweisen von GitHub. Geprüfte, aber kostenpflichtige Wege: Azure Artifact Signing, ca. 9,99 $/Monat, für Einzelpersonen außerhalb USA/Kanada unklar; Certum Open Source, ab 49 €; OV-Zertifikat. Kostenlos wäre später der Microsoft Store mit MSIX-Paket – Microsoft signiert dann selbst, allerdings ohne Velopack-Updates)* **Sollte vor 1.0** @@ -804,3 +804,4 @@ Befund: Billigere Pläne nach der Kostenfunktion des Originals sind nicht automa | 11.10.2026 | Absturzschutz: unerwartete Fehler (Oberfläche, Programm, Hintergrundaufgaben, Abbruch eines Rechenthreads der Generierung) kommen in `fehlerprotokoll.txt` im Datenordner (ab 1 MB beginnt ein neues, das alte bleibt als `fehlerprotokoll.alt.txt`); bei Fehlern auf der Oberfläche und Abbrüchen wird der Plan als gemerkter Plan „Notfallsicherung“ abgelegt und einmal eine Meldung gezeigt, das Programm läuft weiter. Kultur der Anwendung fest de-DE (`Program.Main`) | | 11.10.2026 | Klasse-3-Befunde entschieden (E9): #3, #4, #5, #6 werden korrigiert (`Domain.Optionen.Korrekturen`, Standard `Alle`, in Kern- und Referenzmodell gleich, damit die Differenztests greifen), #33 als Einstellung „Bei ungerader Mannschaftszahl darf am Pflichtspieltag eine Mannschaft spielfrei sein“ (Standard an). `Berechnungsoptionen.Original` rechnet wie das Original (Paritätstests); `andigen optimieren --original` zum Vergleich. Mit der Regel hängt der Kostenwert Pflichtspieltage jeder Mannschaft von allen ab; der Cache rechnet diese Kostenart dann bei jeder Änderung für alle Mannschaften | | 11.10.2026 | Messung der Korrekturen (`korrekturvergleich.cmd`: drei Staffeln mit ungerader Mannschaftszahl, je Variante 2 × 120 s Kostenoptimierung aus leerem Plan, alle Pläne in beiden Kostenmodellen bewertet; Mittel im neuen Kostenmodell). **R3** (9 Mannschaften, Pflichtspieltage): neu 50 T, Original 98 T – das Original weicht der Pflichtspieltag-Strafe aus, indem eine Mannschaft zwei Spiele in einer Woche bekommt (je 40 T), mit der Regel spielt sie stattdessen in der Woche davor. **R19** (11): neu 481 T, Original 532 T. **3. Kreisklasse** (13): neu 438 T, Original 377 T. Die Streuung innerhalb einer Variante (z. B. 524 T / 352 T) ist größer als die Unterschiede; für die Suchkorrekturen #3, #5, #6 ist damit weder ein Vorteil noch ein Nachteil belegt. Die summierte Überlappung des letzten Spieltags (#4) änderte bei keinem der zwölf Pläne den Wert. Geschwindigkeit: bei R3 mit der Pflichtspieltag-Regel rund 3 % weniger Pläne/s (Kostenart wird für alle Mannschaften neu gerechnet), sonst gleich | +| 11.10.2026 | E12 Signierung: SignPath Foundation hat abgelehnt; 1.0 erscheint unsigniert (kostenfrei), `CODE_SIGNING.md` angepasst. Release-Workflow übernimmt den Abschnitt der Version aus `CHANGELOG.md` als Release Notes |