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:
Michael Stangl
2026-07-11 12:49:42 +02:00
parent 00dffc59eb
commit 9de80d2f2a
41 changed files with 5054 additions and 4033 deletions
+19 -19
View File
@@ -1,27 +1,27 @@
[1]
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 1
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 2
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 3
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 4
Dipl. Ing. A AA = Hof 1, Tisch 1, Nummer 5
Prof. B BB = Hof 1, Tisch 1, Nummer 1
Prof. B BB = Hof 1, Tisch 1, Nummer 2
Prof. B BB = Hof 1, Tisch 1, Nummer 3
Prof. B BB = Hof 1, Tisch 1, Nummer 4
[2]
Dipl. Ing. A AA = Hof 1, Tisch 2, Nummer 1
Dipl. Ing. A AA = Hof 1, Tisch 2, Nummer 2
Dipl. Ing. A AA = Hof 1, Tisch 2, Nummer 3
Dipl. Ing. A AA = Hof 1, Tisch 2, Nummer 4
Dipl. Ing. A AA = Hof 1, Tisch 2, Nummer 5
Dr. C CC = Hof 1, Tisch 2, Nummer 1
Dr. C CC = Hof 1, Tisch 2, Nummer 2
Dr. C CC = Hof 1, Tisch 2, Nummer 3
Dr. C CC = Hof 1, Tisch 2, Nummer 4
Dr. C CC = Hof 1, Tisch 2, Nummer 5
[3]
Prof. B BB = Hof 1, Tisch 3, Nummer 1
Prof. B BB = Hof 1, Tisch 3, Nummer 2
Prof. B BB = Hof 1, Tisch 3, Nummer 3
Prof. B BB = Hof 1, Tisch 3, Nummer 4
Dipl. Ing. A AA = Hof 1, Tisch 3, Nummer 1
Dipl. Ing. A AA = Hof 1, Tisch 3, Nummer 2
Dipl. Ing. A AA = Hof 1, Tisch 3, Nummer 3
Dipl. Ing. A AA = Hof 1, Tisch 3, Nummer 4
Dipl. Ing. A AA = Hof 1, Tisch 3, Nummer 5
[4]
Dr. C CC = Hof 1, Tisch 4, Nummer 1
Dr. C CC = Hof 1, Tisch 4, Nummer 2
Dr. C CC = Hof 1, Tisch 4, Nummer 3
Dr. C CC = Hof 1, Tisch 4, Nummer 4
Dr. C CC = Hof 1, Tisch 4, Nummer 5
Dipl. Ing. A AA = Hof 1, Tisch 4, Nummer 1
Dipl. Ing. A AA = Hof 1, Tisch 4, Nummer 2
Dipl. Ing. A AA = Hof 1, Tisch 4, Nummer 3
Dipl. Ing. A AA = Hof 1, Tisch 4, Nummer 4
Dipl. Ing. A AA = Hof 1, Tisch 4, Nummer 5