Files
platz/bin/run_web.bat
T
Michael Stangl 00dffc59eb Web-MVP (M1): FastAPI-API, Testoberflaeche, tische.ini-Upload, zwei neue Beispiele
- web/main.py: Session-basierte REST-API um den GA-Kern (POST /sitzung,
  .../tische, .../tische-datei, .../personen, .../berechnen,
  GET .../ergebnis[.svg]); Sessions in-memory mit 24h-TTL
- web/static/index.html: einfache Browser-Testoberflaeche (Tisch-Tabelle
  mit Presets, tische.ini-Upload, CSV-Gaesteliste, Kennzahlen, SVG)
- bin/run_web.bat/.sh + run_web_helper.ps1: start/stop/status inkl.
  Aufraeumen verwaister uvicorn-Reload-Kindprozesse (Zombie-Sockets)
- work/hochzeit: 120 Hochzeitsgaeste, Ehrentafel, Kindertisch/Teenager-
  Tisch fest gesetzt, Kinderalter normalverteilt, ~85% Auslastung
- work/innenhoefe: 300 Gaeste in zwei trapezfoermigen Innenhoefen mit
  4er-Tischen, 12 VIPs vor der Buehne, Umfeld.svg mit Tanzflaeche/Band
- Roadmap: Konzeptentscheidungen 1-11 (Zielgruppe, Einmalzahlung, MoR,
  Hetzner, Zwei-Marken-Strategie Sitz&Platz/SeatWonder), Namensrecherche
  im Anhang, M1-Fortschritt und GA-Lasttest-Datenpunkt dokumentiert

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 10:21:45 +02:00

77 lines
2.9 KiB
Batchfile

@echo off
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 status - zeigt ob und unter welcher PID er laeuft
REM run_web.bat - startet im Vordergrund (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 ================================================================
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".
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
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%
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