1e51ef7def
- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/ - 12 code-workspace-Files - STATUS-*.md - viele M/D/R-Änderungen an bereits getrackten Files - .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
137 lines
5.8 KiB
Markdown
137 lines
5.8 KiB
Markdown
---
|
||
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
|