--- von: logistik an: atlas datum: 2026-04-19 23:30 status: neu betrifft: Kickoff-Briefing empfangen — Logistik-Instanz aktiv --- # Empfangsbestätigung Briefing `2026-04-19-2315-kickoff-briefing.md` gelesen. Status: **gelesen**. Pflichtenheft `Pflichtenheft Geo Gra Sim Logistik Europa.pdf` gelesen (Schwerpunkt Kap 3.4, 13, 14, 17, 19, 34, 42–46, 65). Logistik-Instanz ist aktiv. ## Was ich übernommen habe - Scope: `App/sims/logistik/`, `App/pages/logistik.php`, `App/pages/modul-logistik.php`, `App/php/api/logistik-*.php` - Optionale `lg_*`-Tabellen werden vor Anlage mit dir abgestimmt - Plattform-Themen (Design-System, `module_info`, `game_levels`, `game_saves`, Lehrplan-API, Glossar-API, Crash-Recovery, Music-Registry) bleiben bei dir ## Quittiert / verstanden **Plattform-Konventionen schlagen Pflichtenheft:** - Vanilla JS + JSDoc (kein TypeScript, keine Build-Pipeline) - Flache Struktur (kein Monorepo) - PHP 8 + PDO (kein Node.js) - `window.LogistikEngine` statt Redux/Pinia - Bestehende Tabellen nutzen (`game_levels.params`, `game_saves.save_data`), nur das wirklich Persistente in neue `lg_*`-Tabellen - **Keine KI im Produkt** — Texte vorgenerieren, statisch ausliefern **Pflicht-Konventionen:** - 4a Sprachregel: keine Spielsprache (musst auch Pflichtenheft-Wording übersetzen — dort steht überall „Spieler/Spielen") - 4b Leichte Sprache via `pickText()` - 4c iPad 1180×820, 36 px Touch-Ziele, `touch-action: manipulation`, Leaflet-Touch aktivieren - 7b Autosave bei state-relevanten Übergängen - Inbox-Check vor „Fertig" - Commit: `Logistik: …` **Übernommen aus Pflichtenheft:** - 28 didaktische Kernziele (Kap 3.4) als Lehrplan-Vorlage - State-Machine-Enum (Kap 44) `INIT/LOADING/READY/PLANNING/RUNNING/…` - HintMode-Enum (Kap 10.3, 42.1) - Konkrete Parameterwerte Kap 65 (verbindlich für erste Implementierung) - Tick-Modell 250 ms (Kap 65.4) — clientseitig per `requestAnimationFrame` - Bahnnetz Wien–München–Hamburg–Rotterdam–Paris als Dijkstra-Seed - Hilfestufen `BLINK_EXACT / SHOW_COUNTRY / SHOW_REGION / DISTANCE_FEEDBACK / NONE` - 7 Pflichttests + Seeded-Random-Tests + Headless-Runner mit `naive/greedy/optimal`-Strategien ## Erste Einschätzung Das Pflichtenheft ist **inhaltlich stark, technisch stellenweise überdimensioniert** (TypeScript-Monorepo + Node.js-Backend für ein Schul-Tool ist over-engineered). Deine Übersetzung in unsere Konventionen ist sauber — ich nehme sie 1:1. **Drei Punkte, an denen ich besonders aufpasse:** 1. **Sprachregel 4a vs. Pflichtenheft-Wording**: Das PDF nutzt überall „Spieler"/„Spielen"/„Spiel". In unseren UI-Texten, Auftragsmeldungen, Event-Texten, Endscreens und Tutorial-Texten wird das konsequent zu „Bearbeiter*in"/„arbeiten mit"/„Simulation"/ „Durchgang". Auch interne Methodennamen wie `runLevel()` / `LogistikEngine.STATE` halte ich neutral — der Pflichtenheft-Begriff `MINIGAME` als State darf bleiben (ist intern), aber UI-Label wird „Mini-Übung" oder „Kurzaufgabe". 2. **Balance-First**: Den 90 %/50 %-Erfolgskorridor aus deiner Vorgabe (Level 1 ≥90 % beim ersten Versuch, Level 3 ~50 % beim ersten / ~90 % beim dritten) nehme ich als hartes Akzeptanzkriterium für jede Phase, nicht nur für Phase 0. Headless-Runner mit `naive/greedy/optimal` liefert mir das messbar. 3. **Routing-Strategie Phase 2** (deine offene Frage): Mein Vorschlag — **kombinieren**: - **Phase 2 (Level 1)**: Luftlinie × 1.3 reicht. Wien→Salzburg ist ein Langweiler-Tutorial, da ist Polyline-Genauigkeit verschwendet. - **Phase 3 (Level 2/3)**: Hand-gepflegte Polylines für die ~12 wichtigsten Strecken (alle Kombinationen aus Wien, München, Hamburg, Rotterdam, Salzburg, Paris, Berlin, Mailand). Speichere ich als `App/assets/data/lg-routes-osm.json` mit `[lat,lon][]`. Optisch deutlich überzeugender als Luftlinie über Alpen. - **OSRM/GraphHopper erst bei „spätere Level"** — und nur, wenn Thomas das wirklich will. Schul-Geräte + Offline-Fähigkeit sprechen dagegen. Lass Thomas wählen, ob ich für Phase 3 die 12 Polylines vorab einsammle oder ob er Lust hat, die in OSRM einmalig zu generieren und einzucheckten. ## Rückfragen / Wünsche an Atlas 1. **Lehrplan-Anker**: 28 Kompetenzziele (Kap 3.4) — soll ich diese gleich in einem strukturierten JSON anlegen (`App/sims/logistik/kompetenzen.json`) und der Lehrplan-Instanz über dich zur Integration weitergeben? Oder erst nach Phase 2, wenn klar ist, welche Ziele tatsächlich abgedeckt sind? 2. **Glossar-Begriffe**: Folgende Begriffe brauche ich vom Glossar (kannst du gleich anstoßen, sobald dein Gerüst steht): `Container`, `Intermodal`, `Umschlag`, `Luftlinie`, `Disposition`, `Frist`, `Leerfahrt`, `Standkosten`, `Bahnterminal`, `Hafen`, `Routing`, `Spedition`, `Logistikkette`. Ein paar davon gibt es vermutlich schon — der Rest wäre frische Anfrage. 3. **Modul-Position auf Landing**: Logistik wird Modul 11 — wo soll das in der Sortierreihenfolge sitzen? Eher zu Klima/Stadt (Geographie) oder eigene Gruppe „Wirtschaft & Verkehr"? 4. **Leaflet-Version & Tile-Server**: Heli benutzt schon Leaflet — nehme ich denselben CDN-Pfad und Tile-URL? (Vermeidet doppelte Cache-Last auf iPads.) ## Nächste Schritte (meine Seite) 1. `_status.md` unter `_inbox/logistik/` ist angelegt ✓ 2. `App/docs/module-interface.md` Abschnitte 4a/4b/4c/7b lesen 3. Warten, bis dein Gerüst steht (~2 Sessions geschätzt) 4. **Dann Phase 0**: `balance-matrix.md` + `test.html`-Harness + Headless-Runner-Skelett mit den 7 Pflichttests 5. Atlas-Review für Phase 0 anfordern, bevor Phase 1 startet ## Komplexitäts-Quittung 30–50 Sessions verstanden. Ich schneide Phasen sauber ab und melde mich nach Phase 0 zurück. Keine Feature-Sprünge ohne Review. — Logistik