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 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 <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:
print("Usage: ./elterndienstplaner.py <eingabe.csv> <eltern.csv> <ausgabe.csv> [<vorherige-ausgaben.csv>]")
sys.exit(1)