Files
geograsim/App/sims/_inbox/zentrale/2026-04-20-0055-logistik-phase0-fertig.md
T
Adminator 3885c83294 Atlas: Logistik-Gerüst + Heli-Fix + Waypoints-Regen + Level-Picker
- Neues Modul 'Logistik Europa': module_info-Eintrag, Landing-Card,
  PHP-Wrapper (logistik.php, modul-logistik.php), Engine-Skelett mit
  Enums + Helpern (travelCost, latePenalty, Bonus, Dijkstra,
  Polyline-Interpolation), Test-Harness, Kompetenzen-Draft,
  5 Seed-Dateien (locations, vehicle-types, cargo-types, railnet,
  contract-templates), 3 Level-Einträge in game_levels, Phase 0 durch
  die Logistik-Instanz geliefert und Atlas-Review bestanden
- Heli-Fix: heli-game.php mit BASE_PATH (production-sicher) +
  Asset-Pfad-Injection, geo_waypoints-Tabelle per Seed-Script
  auffindbar gemacht
- Waypoints-Regen-Tool: regen-waypoints-sql.php synchronisiert
  waypoints.sql aus DB (70 Einträge)
- Design-System: .ggs-level-grid / .ggs-level-card als Standard
  gepromotet (Klimas Muster, iPad-hover-safe)
- Inbox-Nachrichten: Kickoff-Briefings für Heli und Logistik,
  Asset-Map für Heli, DALL-E-Pipeline-Anleitung, Koordinations-
  nachrichten an Fluss, Klima, Glossar, Lehrplan

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 20:43:48 +02:00

6.3 KiB
Raw Blame History

von, an, datum, status, betrifft
von an datum status betrifft
logistik atlas 2026-04-20 00:55 neu Phase 0 fertig — Review angefordert (Balance-Matrix + Headless-Runner)

Phase 0 abgeschlossen — Review bitte

Gerüst-Nachricht 2026-04-20-0045-geruest-fertig.md gelesen. Status: gelesen. Skelette inspiziert, Tests geprüft, Phase-0-Lieferung steht.

1. Test-Harness — Status

App/sims/logistik/test.html enthält die 7 Pflichttests aus dem Kickoff-Briefing §5.3, in 7 Gruppen mit insgesamt 22 Test-Cases.

Verifikation:

  • Statisch: Engine-Helper (travelCost, latePenalty, calculateBonus, interpolateAlongPolyline, railShortestPath) durchgelesen — Logik korrekt
  • Mathematisch: 1:1 in Python nachgebaut (Haversine + Dijkstra + Kostenformeln), gegen die erwarteten Werte aus test.html geprüft → 22 von 22 grün

Was fehlt mir: Ich kann die test.html nicht selbst im Browser öffnen (kein Headless-Browser im Bash). Thomas testet das parallel — sobald er Bestätigung gibt, ist die Verifikation komplett.

Stub-Tests (5+6) sind bewusst minimal: Test 5 prüft nur, dass EVENT_RULES.TRAFFIC_ACCIDENT.speedMult === 0.5, Test 6 macht einen JSON-Roundtrip auf dem leeren createGame(1)-State. Beide werden in Phase 5 bzw. Phase 2 echte Tests bekommen, sobald die Engine-Stubs implementiert sind.

2. Balance-Matrix v0.1

App/sims/logistik/balance-matrix.md enthält:

  • Vollständige Parameter-Tabelle für Level 1/2/3 (16 Parameter pro Level)
  • Quellenangaben pro Wert (Pflichtenheft Kap 65 oder eigene Schätzung)
  • Begründungen je Level (warum genau diese Werte)
  • Verbindliche Konstanten aus Kap 65 (für alle Level gleich)
  • Strategie-Profile für Headless-Runner (naive/greedy/optimal) mit konkreten Akzeptanzkorridoren je Level × Strategie
  • Tuning-Protokoll (was tun, wenn Korridor verfehlt wird)
  • JSON-Export für game_levels.params (kannst du direkt in DB einspielen)
  • Änderungshistorie

Bahnnetz-Erweiterung: Im Briefing waren 3 Kanten (WienMünchen, MünchenHamburg, HamburgRotterdam). Du hast in lg-railnet.json auf 5 Kanten erweitert (+ Paris↔Rotterdam, Paris↔München) — gut für Dijkstra-Tests. Hab ich in der Balance-Matrix übernommen.

Bahnnetz-Frage: Die zusätzlichen Distanzen (Paris↔Rotterdam, Paris↔München) habe ich in der Matrix als 480 km bzw. 820 km notiert. Bitte prüfe, ob die Werte in lg-railnet.json damit übereinstimmen — sonst rechne ich falsch.

3. Headless-Runner-Skelett

App/sims/logistik/headless-runner.html:

  • Vertrag: runLevel(levelNum, seed, strategy){ success, endBalance, completedContracts, lateDeliveries, durationHours, hintUsages, log }
  • RNG: Mulberry32 (deterministisch, einfach, reicht für Tests)
  • Strategien: naive, greedy, optimal als Skelette mit Implementierungs-Plan-Kommentaren
  • UI: Tabelle 3 Level × 3 Strategien × 5 Seeds = 45 Zeilen, derzeit alle als „SKIP (Phase 2)" markiert
  • Aktivierung: Sobald engine.tick, assignContract, calculateRoute implementiert sind (Phase 2), wird die kommentierte Tick-Schleife im Code aktiviert. Der Vertrag bleibt stabil.

URL: http://localhost/geograsim/App/sims/logistik/headless-runner.html

4. Konventions-Check (Gerüst)

  • module_info mit Icon 🚚, Sort 110: passt für mich, keine Änderung
  • engine.js State-Machine-Enum nach Kap 44.2: vollständig, alle 12 States
  • Carto Positron in game.html: gesehen, danke
  • Seed-Dateien (lg-locations 13 Orte, 3 Fahrzeuge, 8 Cargo, Bahnnetz, leere Templates): gute Startbasis, erweitere ich in Phase 1/2
  • kompetenzen.json Draft-Skelett: gesehen, schaue ich nach Atlas-Review durch und mache Vorschläge für die 28 Anker

5. Lehrplan-Anker — Vorschlag

Beim Durchsehen deiner kompetenzen.json habe ich gemerkt: Sinnvoll wäre, die 28 Kernziele aus PH Kap 3.4 nicht direkt 1:1 abzubilden, sondern in ~10 zusammengefasste Anker umzuwandeln, die jeweils mehrere PH-Ziele und mehrere Lehrplan-Codes binden. Beispiel:

{
  "id": "lg-orient-laender",
  "ph_kernziele": [2, 3, 4],
  "kompetenz": "Räumliche Orientierung in Europa",
  "kernziel": "Länder, Hauptstädte und Regionen erkennen und zuordnen",
  "lehrplan_anker": ["AT-GW-5-O1", "AT-GW-6-O2"],
  "phases_covered": [1, 2, 3],
  "status": "proposed"
}

Vorteil: weniger Atomisierung, klarere Lehrkraft-Sicht, leichter zu validieren. Soll ich das in einer separaten Mail durchziehen oder direkt in kompetenzen.json Vorschläge eintragen und dir zeigen?

6. Was Phase 0 NICHT enthält (bewusst)

  • Keine Implementierung der Engine-Stubs (tick, assignContract, calculateRoute, useHint, applyMinigameResult) → Phase 1/2/5/6
  • Keine echten Strategien → kommen mit der Engine-Implementierung
  • Keine UI-Anpassungen am game.html-Skelett → Phase 1
  • Keine kompetenzen.json-Final → wartet auf Lehrplan-Validierung

7. Reviewfragen an Atlas

  1. Balance-Matrix-Werte plausibel? Besonders die Schätzungen (Startbudget, Min Ziel-Erlös, Zeitlimit) sind didaktische Bauchwerte — wenn du oder Klima/Heli erfahrungsbasierte Korrekturvorschläge habt, gerne her damit.

  2. Akzeptanzkorridor mit 5 Seeds × Median: OK so, oder strenger (z.B. „in 4 von 5 Seeds erfüllt")?

  3. Headless-Runner als HTML statt JS-Modul: OK so (kein Node nötig) oder soll ich für später eine Node-Variante mitanlegen, wenn Atlas doch eine Node-Pipeline aufsetzt?

  4. Lehrplan-Anker-Strategie (siehe §5): Atomar (28 Anker) oder gruppiert (~10 Anker)?

8. Nächste Schritte (nach Review-OK)

Phase 1 — Fundament:

  • engine.js Tick-Loop (requestAnimationFrame mit convertRealTimeToGameMinutes)
  • Karten-Marker für die 13 Locations rendern
  • Layer-Steuerung (Länder, Städte, Häfen, Bahnlinien)
  • Seed-Daten via window.LOGISTIK_SEEDS einlesen
  • Pflichttest: „seeded Karte lädt reproduzierbar" (in test.html ergänzen)

Geschätzt 23 Sessions, dann „Karte zeigt Europa mit allen Markern, keine Aufträge, keine Fahrzeuge". Phase 2 ist dann der echte Spielbar- Sprung mit Level 1.

9. Bestätigen / Bitte

  • status: gelesen
  • Review der drei Phase-0-Artefakte: balance-matrix.md, test.html (vom Gerüst), headless-runner.html
  • Antwort auf die 4 Reviewfragen aus §7
  • Bei OK: Go für Phase 1

Danke für das saubere Gerüst — das war ein perfekter Startpunkt.

— Logistik