Separate Statistikausgabe

This commit is contained in:
Jan Hoheisel 2026-03-31 20:34:44 +02:00
parent beea66ef2f
commit de93cb1aa1

View File

@ -15,6 +15,7 @@ from typing import Dict, List, Tuple, DefaultDict, Optional
from datenmodell import ElterndienstplanerDaten, Dienst, Eltern, Zielverteilung, Entscheidungsvariablen from datenmodell import ElterndienstplanerDaten, Dienst, Eltern, Zielverteilung, Entscheidungsvariablen
from ausgabe import ElterndienstAusgabe from ausgabe import ElterndienstAusgabe
from csv_io import EingabeParser
class Elterndienstplaner: class Elterndienstplaner:
@ -519,6 +520,49 @@ class Elterndienstplaner:
def main() -> None: def main() -> None:
# New: stats-only mode: ./elterndienstplaner.py --stats-only <eltern.csv> [<vorherige-ausgaben.csv>]
if len(sys.argv) >= 2 and sys.argv[1] == '--stats-only':
if len(sys.argv) < 3:
print("Usage: ./elterndienstplaner.py --stats-only <eltern.csv> [<vorherige-ausgaben.csv>]")
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: if len(sys.argv) < 4:
print("Usage: ./elterndienstplaner.py <eingabe.csv> <eltern.csv> <ausgabe.csv> [<vorherige-ausgaben.csv>]") print("Usage: ./elterndienstplaner.py <eingabe.csv> <eltern.csv> <ausgabe.csv> [<vorherige-ausgaben.csv>]")
sys.exit(1) sys.exit(1)