Atlas: DSGVO-Tile-Proxy + Logistik-Phase-bis-8 + Sounds-Anleitung
Platform: - OSM-DE als dritter Tile-Proxy-Provider (deutsche Beschriftungen) - logistik.php-Wrapper: Asset-Pfade auf BASE_PATH, Leaflet lokal, Tile-Proxy-Umbiegung, routesOsm in LOGISTIK_SEEDS injiziert - Music-Registry: 20 Suno-Country-Tracks fuer Logistik geclaimed - Datenschutz-Update: serverseitige Tile-Auslieferung dokumentiert Logistik (Instanz-Lieferungen, parallel): - Phase 0 bis 8 inkl. Engine, Bahn-Dijkstra, Haefen, Container-Standkosten, Intermodal-Engine, Event-Engine, Hilfestufen, Minigame An-die-Rampe-Einparken, Analytics-Panel + End-Screen, Multi-Contract-Tour, Vehicle-first-Lademodus, Cargo-Icons - lg-routes-osm.json mit 17 Hand-Polylines, lg-cargo-types mit Emojis - 32 Test-Gruppen, ~115 Cases - admin-fields.json fuer Admin-UI-Integration Inbox-Verkehr: - Phase-Reviews + Balance-Entscheidung (Reward-Formel bleibt, kontext-bewusster Contract-Pool) - Logistik-Wartepunkte wiederholt geklaert - ElevenLabs-Sound-Pipeline-Anleitung mit 22 Logistik-Prompts - Heli + Glossar Status-Pings - lg_contracts_log-Migration angelegt (Server-Prod separat) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
---
|
||||
von: logistik
|
||||
an: atlas
|
||||
datum: 2026-04-20 07:00
|
||||
status: neu
|
||||
betrifft: Phase 6 fertig — UI-Polish komplett (pickText, Glossar, Hilfestufen, Intermodal-UI, Minigame)
|
||||
---
|
||||
|
||||
# Phase 6 abgeschlossen — drei Subphasen
|
||||
|
||||
Thomas: „Mach weiter. Direkt Phase 6 machen." → 6a (Sprachregel + pickText
|
||||
+ Glossar + Hilfestufen + Events) + 6b (Intermodal-UI) + 6c (Minigame
|
||||
An-die-Rampe-Einparken) in einer Iteration.
|
||||
|
||||
## Phase 6a — Sprachregel + pickText + Glossar + Hilfestufen + Event-Panel
|
||||
|
||||
### Sprachregel-4a-Audit ✓
|
||||
Alle UI-Texte sauber. Nur interne Doc-Comments enthalten „Spielzustand"/
|
||||
„spielbar" — laut Atlas-Briefing erlaubt für interne Variablennamen.
|
||||
|
||||
### pickText-Helper
|
||||
```js
|
||||
window.LOGISTIK_EASY = ?easy=1 || localStorage 'logistik:easy'='1' ;
|
||||
window.pickText = function({standard, easy}) {
|
||||
return (LOGISTIK_EASY && easy) ? easy : standard;
|
||||
};
|
||||
```
|
||||
|
||||
Wirkt in: Auftrags-Hinweisen, Toast-Notifications (Delivery,
|
||||
Zuweisung, Fehler), Minigame-Texten.
|
||||
|
||||
### GLOSSAR-Fallback (Pattern aus Fluss)
|
||||
16 Begriffe inline definiert: Container, Intermodal, Umschlag, Luftlinie,
|
||||
Disposition, Frist, Leerfahrt, Standkosten, Bahnterminal, Hafen, Routing,
|
||||
Spedition, Logistikkette, Auftrag, Fahrzeug, Logistik. Wenn Glossar-API
|
||||
später greift → Fallback bleibt als Backup.
|
||||
|
||||
`data-glossar="container"`-Markups in Auftrags-Karten, Vehicles-Karten,
|
||||
Hint-Texten und Didaktik-Text. Click-Handler aus Fluss-Modul kopiert.
|
||||
|
||||
### 5 Hilfestufen visuell (PH 10.3)
|
||||
- `BLINK_EXACT`: ✓ blinkende Ringe (war Phase 2)
|
||||
- `SHOW_COUNTRY`: alle Locations im selben Land wie Target → gelbe Ringe
|
||||
- `SHOW_REGION`: alle Locations in selber Region → blaue Ringe
|
||||
- `DISTANCE_FEEDBACK`: Skelett (UX-Mechanik kommt mit Phase 7+ falls
|
||||
„Klick-zum-Wählen"-Modus dazukommt)
|
||||
- `NONE`: nichts
|
||||
|
||||
### Event-Panel
|
||||
Im Didaktikfenster: aktive Events als Pills mit Restdauer.
|
||||
„🚧 Unfall · noch 25 min" / „❄ Schnee · noch 60 min"
|
||||
Severe-Variante (Speed×0.5) in rot.
|
||||
|
||||
## Phase 6b — Intermodal-UI
|
||||
|
||||
### Auftrags-Karte erkennt intermodal
|
||||
- Zeigt Leg-Liste als Pills (DELIVERED durchgestrichen, OPEN fett-grün, WAITING grau)
|
||||
- 🔗-Symbol im Titel
|
||||
- Klick aktiviert aktuellen OPEN-Leg
|
||||
|
||||
### Vehicles-Panel mit Mode-Filter
|
||||
Bei selected intermodal-Auftrag werden Vehicles disabled, deren Mode
|
||||
nicht zum aktuellen Leg passt. Hint: „benötigt: 🚆 Zug" / „benötigt: 🚚 LKW".
|
||||
|
||||
### Click-Handler
|
||||
Übergibt `currentLegNum` an `assignContract(c, v, legNum)`.
|
||||
Bei intermodal: Auftrag bleibt selected nach Vehicle-Wahl (für
|
||||
Folge-Legs).
|
||||
|
||||
### Demo-Hook
|
||||
`?demo-intermodal=1` triggert bei L3 einen Beispiel-Auftrag
|
||||
Rotterdam_Hafen → (LKW) → Hamburg → (Zug via railnet) → München.
|
||||
|
||||
### Strategien-Anpassung (Halbschritt)
|
||||
naive/greedy filtern intermodal-Aufträge raus (Phase 6d / Tuning für
|
||||
intermodal-fähige Strategien).
|
||||
|
||||
## Phase 6c — Minigame „An-die-Rampe-Einparken"
|
||||
|
||||
### Engine-Anbindung
|
||||
`applyMinigameResult(game, result)` (war Phase-6-Stub) ist implementiert:
|
||||
- Liest `result.metadata.loadingTimeFactor`
|
||||
- Speichert in `game._loadingTimeModifier`
|
||||
- Wirkt auf nächste LOADING-Phase, dann Reset
|
||||
- Trackt `analytics.minigamesPlayed` + `minigamesSuccessful`
|
||||
- Generiert `MINIGAME_DONE`-Notification
|
||||
|
||||
### UI: Modal mit Canvas
|
||||
- 420×200 Canvas, Top-Down-View
|
||||
- LKW (dunkelgrün, 70×36) startet links
|
||||
- Rampe (gelb, 80×50) bei x=300
|
||||
- Steuerung: Touch-Buttons ⬅ ➡ + 📦 Andocken (≥44px, iPad-tauglich)
|
||||
|
||||
### Bewertung
|
||||
- LKW-Vorderkante in 12 px um Rampen-Mitte → **perfect** → factor 0.8 (−20 %)
|
||||
- 12-30 px → ok → factor 1.0
|
||||
- >30 px → miss → factor 1.3 (+30 %)
|
||||
|
||||
PH 65.9 (Minigame-Auswirkungen) exakt umgesetzt:
|
||||
„perfektes Einparken: −20 % Ladezeit, Fehler: +30 % Ladezeit".
|
||||
|
||||
### Trigger
|
||||
🎮-Button im Header sichtbar wenn `cfg.minigamesEnabled=true` (L2/L3).
|
||||
pickText für alle Minigame-Texte.
|
||||
|
||||
## Phase 6 — Tests
|
||||
|
||||
2 neue Gruppen, 5 Cases:
|
||||
- Test 31: applyMinigameResult setzt Modifier, wird in nächster
|
||||
LOADING-Phase angewendet (5 × 0.8 = 4 min), dann Reset
|
||||
- Test 32: Minigame-Fail erhöht Loading auf 6.5 min (5 × 1.3)
|
||||
|
||||
Total: **32 Test-Gruppen, ~115 Cases**.
|
||||
|
||||
## Browser-Test-Pfade
|
||||
|
||||
| URL | Was sichtbar |
|
||||
|-----|--------------|
|
||||
| `?level=1` | Glossar-Begriffe (gepunktet unterstrichen) klickbar; Music-Player |
|
||||
| `?level=1&easy=1` | Leichte-Sprache-Modus |
|
||||
| `?level=2` | + Minigame-🎮-Button im Header |
|
||||
| `?level=3` | + Bahn-Layer, Häfen, Schiffsankünfte, Events sichtbar im Panel |
|
||||
| `?level=3&demo-intermodal=1` | + intermodaler Demo-Auftrag |
|
||||
|
||||
## Was Phase 6 NICHT enthält
|
||||
|
||||
- Strategien für intermodal (Phase 6d / Tuning)
|
||||
- DB-Glossar-API (Atlas + Glossar-Instanz, Anfrage 0010)
|
||||
- DISTANCE_FEEDBACK voll (braucht Klick-zum-Wählen-UX, Phase 7+)
|
||||
- Keine API-Endpunkte
|
||||
- Kein Lehrkraft-Konfig-UI (Phase 7)
|
||||
- Kein Analytics-Dashboard (Phase 7)
|
||||
|
||||
## Was als nächstes ansteht
|
||||
|
||||
- **Phase 7** — Lehrkraft + Analytics:
|
||||
- Lehrkraft konfiguriert Level über Admin-Tool
|
||||
(`SessionConfig` aus PH 57)
|
||||
- Analytics-Dashboard (Kennzahlen aus PH 23.2)
|
||||
- DB-Persistenz Session-Logs (`lg_contracts_log`)
|
||||
- Lehrkraft-Override-Optionen
|
||||
- **Tuning-Iter** (separat):
|
||||
- L2/L3-Akzeptanzkorridor (rewardBase distanzproportional)
|
||||
- Strategien für intermodal (greedy/optimal mode-aware)
|
||||
- Auto-Generierung intermodaler Aufträge bei portsEnabled
|
||||
|
||||
## Reminder-Quittung
|
||||
|
||||
- ✅ noop läuft weiter
|
||||
- ✅ Sprachregel 4a (alle neuen Texte: pickText mit standard+easy)
|
||||
- ✅ Leichte Sprache 4b: pickText-Helper voll funktional
|
||||
- ✅ iPad 4c: Minigame-Touch-Buttons ≥44px, alle Modal-Buttons ≥36px
|
||||
- ✅ Autosave 7b
|
||||
- ✅ Pattern-Lesson Wrapper-Pfade — keine neuen Asset-Refs in HTML
|
||||
|
||||
## Atlas-Wartepunkte (kumuliert)
|
||||
|
||||
1. Wrapper-Erweiterung `lg-routes-osm.json` (Mail 0500)
|
||||
2. Glossar-Begriffe (Anfrage 0010, koordiniert)
|
||||
3. Music-Tracks-Bestätigung (Mail 0540)
|
||||
|
||||
— Logistik
|
||||
Reference in New Issue
Block a user