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
+9 -58
View File
@@ -3,74 +3,25 @@ REM ================================================================
REM Verwaltet die lokale Web-Testinstanz (FastAPI/uvicorn, M1)
REM
REM run_web.bat start - startet den Server im Hintergrund
REM run_web.bat stop - beendet den Server (inkl. Reload-Kindprozesse)
REM run_web.bat stop - beendet den Server
REM run_web.bat status - zeigt ob und unter welcher PID er laeuft
REM run_web.bat - startet im Vordergrund (Strg+C zum Beenden)
REM run_web.bat - startet im Vordergrund mit Auto-Reload
REM (Strg+C zum Beenden)
REM
REM http://localhost:8000 Testoberflaeche
REM http://localhost:8000/docs interaktive API-Doku (Swagger)
REM
REM Die Prozess-/Portlogik liegt in run_web_helper.ps1 (cmd-Escaping
REM von mehrzeiligen PowerShell-Kommandos ist zu fehleranfaellig).
REM Die eigentliche Prozessverwaltung liegt plattformunabhaengig in
REM libs/webserver.py (laeuft unverandert auch unter Linux).
REM ================================================================
call "%~dp0setenv.bat" > nul
set WEB_PORT=8000
set HELFER=powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0run_web_helper.ps1"
if /I "%~1"=="start" goto :start
if /I "%~1"=="stop" goto :stop
if /I "%~1"=="status" goto :status
if "%~1"=="" goto :vordergrund
echo Unbekannter Parameter "%~1" - erlaubt: start ^| stop ^| status
exit /b 1
REM ----------------------------------------------------------------
:vordergrund
call :venv_pruefen || exit /b 1
echo Starte Web-Testinstanz im Vordergrund (Strg+C zum Beenden) ...
python -m uvicorn main:app --reload --app-dir "%PLATZ%\web" --port %WEB_PORT%
exit /b %errorlevel%
REM ----------------------------------------------------------------
:start
call :venv_pruefen || exit /b 1
%HELFER% check %WEB_PORT%
if not errorlevel 1 (
echo Server laeuft bereits auf Port %WEB_PORT% - erst "run_web.bat stop".
if not exist "%PLATZ%\.venv\Scripts\activate.bat" (
echo FEHLER: kein .venv gefunden - bitte zuerst bin\install_py.bat ausfuehren
exit /b 1
)
if not exist "%PLATZ%\log" mkdir "%PLATZ%\log"
echo Starte Web-Testinstanz im Hintergrund ...
start "platz-web" /MIN cmd /c "call "%~dp0setenv.bat" > nul && call "%PLATZ%\.venv\Scripts\activate.bat" && python -m uvicorn main:app --reload --app-dir "%PLATZ%\web" --port %WEB_PORT% > "%PLATZ%\log\run_web.log" 2>&1"
REM kurz warten und pruefen, ob der Server wirklich hochkommt
REM (ping statt timeout: funktioniert auch ohne interaktive Konsole)
ping -n 4 127.0.0.1 > nul
%HELFER% check %WEB_PORT%
if errorlevel 1 (
echo FEHLER: Server ist nicht gestartet - siehe %PLATZ%\log\run_web.log
exit /b 1
)
echo Server laeuft: http://localhost:%WEB_PORT% ^(Logdatei: log\run_web.log^)
exit /b 0
call "%PLATZ%\.venv\Scripts\activate.bat"
REM ----------------------------------------------------------------
:stop
echo Beende alle uvicorn-Prozesse dieses Projekts auf Port %WEB_PORT% ...
%HELFER% stop %WEB_PORT%
exit /b 0
REM ----------------------------------------------------------------
:status
%HELFER% status %WEB_PORT%
python "%PLATZ_LIBS%\webserver.py" %*
exit /b %errorlevel%
REM ----------------------------------------------------------------
:venv_pruefen
if exist "%PLATZ%\.venv\Scripts\activate.bat" (
call "%PLATZ%\.venv\Scripts\activate.bat"
exit /b 0
)
echo FEHLER: kein .venv gefunden - bitte zuerst bin\install_py.bat ausfuehren
exit /b 1