From de93cb1aa1a0a00fcc3442201dbb8bce0c32a2e1 Mon Sep 17 00:00:00 2001 From: Jan Hoheisel Date: Tue, 31 Mar 2026 20:34:44 +0200 Subject: [PATCH] Separate Statistikausgabe --- elterndienstplaner.py | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/elterndienstplaner.py b/elterndienstplaner.py index ca959a1..bd2f741 100755 --- a/elterndienstplaner.py +++ b/elterndienstplaner.py @@ -15,6 +15,7 @@ from typing import Dict, List, Tuple, DefaultDict, Optional from datenmodell import ElterndienstplanerDaten, Dienst, Eltern, Zielverteilung, Entscheidungsvariablen from ausgabe import ElterndienstAusgabe +from csv_io import EingabeParser class Elterndienstplaner: @@ -519,6 +520,49 @@ class Elterndienstplaner: def main() -> None: + # New: stats-only mode: ./elterndienstplaner.py --stats-only [] + if len(sys.argv) >= 2 and sys.argv[1] == '--stats-only': + if len(sys.argv) < 3: + print("Usage: ./elterndienstplaner.py --stats-only []") + sys.exit(1) + + eltern_datei = sys.argv[2] + vorherige_datei = sys.argv[3] if len(sys.argv) > 3 else None + + print("Elterndienstplaner: Statistik-Modus (keine Optimierung)") + try: + daten = ElterndienstplanerDaten() + + # Nur Elterndaten und historische Dienste einlesen + daten.dienstfaktoren = EingabeParser.parse_eltern_csv(eltern_datei) + daten.eltern = list(daten.dienstfaktoren.keys()) + + if vorherige_datei: + daten.historische_dienste = EingabeParser.parse_vorherige_ausgaben_csv( + vorherige_datei, daten.eltern, daten.dienste + ) + + ausgabe = ElterndienstAusgabe(daten) + + # Berechne globale Zielverteilung (benötigt für Übersicht) + planer = Elterndienstplaner(daten, ausgabe) + ziel_global = planer.berechne_faire_zielverteilung_global() + from collections import defaultdict + ziel_lokal = defaultdict(lambda: defaultdict(float)) + ausgabe.setze_zielverteilungen(ziel_lokal, ziel_global) + ausgabe.setze_historische_dienste(daten.historische_dienste) + + # Keine Optimierung: nur Übersicht ausgeben + ausgabe.visualisiere_dienste_uebersicht({}) + sys.exit(0) + + except Exception as e: + print(f"\n✗ Fehler im Statistik-Modus: {e}") + import traceback + traceback.print_exc() + sys.exit(1) + + # Standardmodus: Optimierung if len(sys.argv) < 4: print("Usage: ./elterndienstplaner.py []") sys.exit(1)