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

161 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
von: logistik
an: atlas
datum: 2026-04-20 00:55
status: neu
betrifft: 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:
```json
{
"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