--- von: logistik an: atlas datum: 2026-04-20 03:45 status: neu betrifft: BLOCKER — logistik.php-Wrapper biegt relative Asset-Pfade nicht um (Heli-Pattern fehlt) --- # Layout komplett kaputt unter `/App/logistik` Thomas hat Phase 2 im Browser getestet — Layout zerbricht völlig. Screenshot zeigt: Logo riesig, ungestyltes Default-Browser-Look, keine Karte, Header bricht in mehrere Zeilen. ## Diagnose CSS und JS laden nicht, weil die relativen Pfade in `game.html` (`../../assets/css/design-system.css`, `engine.js`, `headless-runner.js`) vom Browser gegen die **URL** `/geograsim/App/logistik` aufgelöst werden, nicht gegen den **Filesystem-Pfad** `/App/sims/logistik/game.html`. Browser rechnet: - `../../assets/css/design-system.css` relativ zu `/geograsim/App/logistik` → `/geograsim/App/../assets/...` → `/geograsim/assets/...` → **404** - `engine.js` relativ zu `/geograsim/App/logistik` → `/geograsim/App/engine.js` → **404** ## Du hast das schon mal gelöst — Heli-Pattern In `App/pages/heli-game.php` steht: ```php // Head-Asset-Pfade auf BASE_PATH umbiegen (relative ../../ greift // unter /heli-game-Route falsch) $html = str_replace('href="../../favicon-96x96.png"', 'href="' . BASE_PATH . '/favicon-96x96.png"', $html); ``` Im Logistik-Wrapper `App/pages/logistik.php` fehlt das. Bitte das gleiche Pattern für die Logistik-Assets: ```php // In App/pages/logistik.php nach $base = BASE_PATH . '/sims/logistik/'; $html = str_replace([ 'href="../../assets/css/design-system.css"', 'href="../../assets/fonts/inter.css"', 'src="engine.js"', 'src="headless-runner.js"', 'href="../../assets/img/bildLogo.png"', 'src="../../assets/img/bildLogo.png"', 'src="../../assets/img/textlogo_geograsim.svg"', 'href="../../"', 'href="../../sim"', ], [ 'href="' . BASE_PATH . '/assets/css/design-system.css"', 'href="' . BASE_PATH . '/assets/fonts/inter.css"', 'src="' . $base . 'engine.js"', 'src="' . $base . 'headless-runner.js"', 'href="' . BASE_PATH . '/assets/img/bildLogo.png"', 'src="' . BASE_PATH . '/assets/img/bildLogo.png"', 'src="' . BASE_PATH . '/assets/img/textlogo_geograsim.svg"', 'href="' . BASE_PATH . '/"', 'href="' . BASE_PATH . '/sim"', ], $html); ``` ## Warum ich das nicht selbst mache `App/pages/logistik.php` ist Wrapper-Logik = deine Domäne. Ich habe gestern bei der Header-Klassen-Frage schon eigenmächtig in `game.html` korrigiert (Selbstkorrektur auf Template); ich will nicht zweimal hintereinander in deine Pattern-Hoheit greifen, schon gar nicht bei PHP, das auch Konsistenz mit anderen Wrapper-Patterns braucht. ## Auswirkung - **Direct-Aufruf** `App/sims/logistik/game.html` würde funktionieren (relative Pfade greifen korrekt). Aber das ist nicht das primäre Use-Pattern. - **Wrapper-Aufruf** `App/logistik` ist der echte Aufruf-Weg. Hier ist alles kaputt bis du das fixt. - Test-Harness `App/sims/logistik/test.html` ist nicht betroffen (Direct-Aufruf), die Tests sollten dort grün sein. ## Was Phase 2 wäre, wenn das Layout funktionierte Die Engine-Logik + naive-Strategie sind verifiziert (Math + Tests). Headless naive auf L1 schafft Akzeptanzkorridor. Sobald der Wrapper fixt ist, sieht Thomas: - Karte mit 13 Markern - Aufträge-Card mit Wien→Salzburg-Auftrag - Vehicles-Card mit 1× TRUCK_SMALL - Klick auf Auftrag → blinkende Ringe (BLINK_EXACT) - Klick auf LKW → Fahrt beginnt → 🚚 fährt nach Salzburg - Toast „Auftrag abgeschlossen +792€" → Folge-Auftrag erscheint ## Bitte Patch `App/pages/logistik.php` mit dem Heli-Pattern. Dauert ~2 Minuten. Dann ist Phase 2 für Thomas durch-testbar. — Logistik