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:
@@ -235,6 +235,17 @@ verarbeitet werden (was bei jedem Webserver der Fall ist).
|
||||
- [ ] Optional: Hintergrund-Job-Queue (z.B. Celery/RQ), falls Berechnung >5s dauert,
|
||||
damit der Webserver nicht blockiert
|
||||
|
||||
**Tech-Debt / Modernisierung (Code-Review 2026-07-11):** Beim Umbau bereits erledigt sind
|
||||
`eval()` → `ast.literal_eval` (bzw. ein sicherer Mini-Auswerter für die String-Ausdrücke
|
||||
in `zyklus.cfg`) und `defaultdict(set)` in `Plaetze`. Bewusst *nicht* umgesetzt, für M2 zu
|
||||
prüfen: **GA-Kern auf [DEAP](https://deap.readthedocs.io/) umstellen** (fertige
|
||||
Population/Selektion/Statistik — würde das eigene `Farm`/`Entwicklung`-Gerüst ablösen und
|
||||
`TopN` sowie die Diversitäts-Seeds quasi geschenkt liefern); **SVG-Erzeugung** in
|
||||
`Sitzplatzverteilung.alsSVG`/`Entwicklung.alsSVG` von String-Konkatenation auf `svgwrite`
|
||||
oder Jinja2-Templates; **Container-/Datenklassen** (`Person`, `Gruppe`, …) als
|
||||
`@dataclass`. `Sitzplatzverteilung.TopX` bleibt bewusst handgeschrieben (die monoton
|
||||
sinkende Schwelle prägt das Mutationsverhalten, siehe Kommentar im Code).
|
||||
|
||||
**Aufwand:** ~3–4 Wochen, aufbauend auf Meilenstein 1.
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user