Web-M1-Ausbau: JSON-Gaesteliste, GA-Verlauf, Python-Serversteuerung, tische.ini-Upload
- bestellung.xml -> bestellung.json: neuer JSONConfig (loest XMLConfig ab), alle work-Beispiele konvertiert, Doku (CLAUDE/README/dateiformate) umgestellt - ga.py: Beobachtungsobjekt Entwicklung zeichnet den Loesungsverlauf auf, neuer Schalter --show-development erzeugt Entwicklung.svg (beste/mittlere/ schlechteste Wertigkeit ueber die Zyklus-Aktionen) - web/main.py: neuer Endpunkt /tische-datei (tische.ini-Upload, ast.literal_eval), Frontend kann jetzt eine tische.ini laden - libs/webserver.py: plattformunabhaengige start/stop/status-Steuerung der Web-Testinstanz (ersetzt run_web_helper.ps1), raeumt auch verwaiste --reload-Prozessbaeume zuverlaessig auf - Sicherheit/Modernisierung: eval() -> ast.literal_eval in Tische/Strafliste, sicherer Mini-Auswerter fuer die String-Ausdruecke in zyklus.cfg, defaultdict(set) in Plaetze - SVG: Tischnummer fett zentriert im Tischkreis statt "Tisch x" darueber - Tests: JSONConfig, Entwicklung und der Zyklus-Auswerter abgedeckt (9 Tests) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+14
-5
@@ -18,16 +18,21 @@ import optparse
|
||||
if __name__ == '__main__':
|
||||
|
||||
# Kommandozeilenoption --indir: Verzeichnis mit den Eingabedateien
|
||||
# (tische.ini, bestellung.xml) und Ziel fuer die Ausgabedateien
|
||||
# (tische.ini, bestellung.json) und Ziel fuer die Ausgabedateien
|
||||
# (TischePersonen.txt, PersonenTische.csv)
|
||||
parser = optparse.OptionParser()
|
||||
parser.add_option( "--indir", dest="indir", default=None,
|
||||
help="Verzeichnis mit tische.ini und bestellung.xml; "
|
||||
help="Verzeichnis mit tische.ini und bestellung.json; "
|
||||
"dort werden auch TischePersonen.txt und PersonenTische.csv abgelegt" )
|
||||
parser.add_option( "--tosvg", dest="tosvg", action="store_true", default=False,
|
||||
help="zusaetzlich eine Sitzplatzverteilung.svg im --indir Verzeichnis "
|
||||
"erzeugen (Tische als weisse Kreise, Personen als farbige "
|
||||
"Kreise je Gruppe)" )
|
||||
parser.add_option( "--show-development", dest="showdev", action="store_true",
|
||||
default=False,
|
||||
help="zusaetzlich eine Entwicklung.svg im --indir Verzeichnis "
|
||||
"erzeugen: Verlauf der Loesungsfindung (Zeitachse nach rechts, "
|
||||
"beste/durchschnittliche/schlechteste Wertigkeit auf der Y-Achse)" )
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
if options.indir is None:
|
||||
@@ -51,12 +56,13 @@ if __name__ == '__main__':
|
||||
|
||||
# lade Eingabedateien
|
||||
Tischconfig = os.path.join( InDir, 'tische.ini' )
|
||||
Bestellung = os.path.join( InDir, 'bestellung.xml' )
|
||||
Bestellung = os.path.join( InDir, 'bestellung.json' )
|
||||
|
||||
# lade Ausgabedateien
|
||||
AusgabeTP= os.path.join( InDir, 'TischePersonen.txt' )
|
||||
AusgabePT = os.path.join( InDir, 'PersonenTische.csv' )
|
||||
AusgabeSVG = os.path.join( InDir, 'Sitzplatzverteilung.svg' )
|
||||
AusgabeEntwicklung = os.path.join( InDir, 'Entwicklung.svg' )
|
||||
|
||||
Z = Zyklus()
|
||||
Z.laden( Zyklusconfig, Zyklusart )
|
||||
@@ -68,8 +74,8 @@ if __name__ == '__main__':
|
||||
TE.laden( Tischconfig )
|
||||
print(TE)
|
||||
|
||||
InputFile = XMLConfig()
|
||||
[ PN, GN, VIPGruppe, VIPListePT ] = InputFile.laden( Bestellung )
|
||||
InputFile = JSONConfig()
|
||||
[ PN, GN, VIPGruppe, VIPListePT, GruppenNamen ] = InputFile.laden( Bestellung )
|
||||
print(PN)
|
||||
print(GN)
|
||||
print(VIPGruppe)
|
||||
@@ -83,6 +89,9 @@ if __name__ == '__main__':
|
||||
S.speichern( AusgabeTP, AusgabePT )
|
||||
if options.tosvg:
|
||||
S.alsSVG( AusgabeSVG )
|
||||
if options.showdev:
|
||||
F1.Entwicklung.alsSVG( AusgabeEntwicklung )
|
||||
print( "Entwicklungsverlauf geschrieben:", AusgabeEntwicklung )
|
||||
|
||||
else:
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user