Files
geograsim/App/sims/_inbox/zentrale/2026-04-20-0600-logistik-phase4a-fertig.md
T
Adminator fc8996f064 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>
2026-04-23 08:15:00 +02:00

112 lines
4.2 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 06:00
status: neu
betrifft: Phase 4a fertig — Bahn + Häfen + Container-Standkosten + Music. Intermodal als 4b verschoben
---
# Phase 4a abgeschlossen
Drei von vier Phase-4-Punkten umgesetzt. **Intermodal-Aufträge (4. Punkt)
verschoben auf Phase 4b** — siehe Begründung unten.
## Phase 4a — Was steht
### TRAIN-Routing via railnet-Dijkstra
- `calculateRoute(game, originId, targetId, 'TRAIN')` lookt jetzt
zuerst im `worldState.railnet`. Wenn beide Locations Bahnknoten
sind → Dijkstra (provider: `rail_dijkstra`), sonst Fallback auf
Polyline/airline.
- Geometrie führt durch alle Bahnknoten (echte Mehr-Segment-Route)
- Pro Bahnkante ein Segment vom Typ `RAIL` mit `distanceKm` +
`durationMinutes` (aus `lg-railnet.json`)
- Test verifiziert: Wien→Hamburg via München = 1200 km, 2 Segmente
### Hafen-Schiffsankünfte
- `_maybeGenerateShipArrival(game)` läuft im tick
- Alle 6 Sim-Stunden (deterministisch via Counter) ein Schiff:
- Hafen rotiert durch alle PORT-Locations
- Inland-Ziel rotiert durch [Wien, München, Berlin, Paris, Warschau]
- 3 Container Standardauftrag
- Code-Präfix `SHIP-001`, `SHIP-002`, ...
- `narrativeText`: „Schiff in <Hafen> eingetroffen — 3 Container nach <Ziel>"
- Notification `SHIP_ARRIVED`
- Nur aktiv bei `cfg.portsEnabled = true` (= L3)
### Container-Standkosten an Häfen
- `_applyRunningCosts` rechnet zusätzlich:
`cfg.containerStandCostPerHour × c.quantityContainers × simHours`
pro OPEN-Auftrag mit Origin am Hafen
- L3-Default: 10 €/h pro Container (PH 65.2)
- Lehrziel: schnell vom Hafen abholen, sonst frisst die Standkosten
den Erlös
### Tests
3 neue Gruppen, ~10 Cases (Test 23-25). Total **25 Gruppen / ~90 Cases**.
## Music-Player (parallel, Mail 0540)
4 Tracks aus deinem `_claimed/`-Ordner gewählt + reingespielt.
Music-Widget aktiv.
## Intermodal-Aufträge — bewusst verschoben auf Phase 4b
Atlas-Plan Phase 4 §3 fordert „intermodale Aufträge (Leg1 LKW →
Leg2 Zug → Leg3 LKW)". Das ist konzeptionell der Brocken:
- **Contract-Schema-Erweiterung**: `contract.legs: [{mode, originId,
targetId}]` statt einzelner `originLocationId/targetLocationId`
- **Multi-Vehicle-Übergabe**: Container am Übergabepunkt warten,
ein anderes Vehicle übernimmt das nächste Leg
- **Trip-State-Machine pro Leg** (statt pro Contract): jedes Vehicle
bekommt einen Leg, nach Übergabe IDLE
- **Übergabe-Synchronisation**: am Terminal müssen beide Vehicles
zeitlich passen (oder Container warten + Standkosten)
Das ist mehr Code als Phase 4a + 3 zusammen. Sauber abgrenzen wäre:
**Phase 4b — Intermodal:**
- Schema-Erweiterung Contract um `legs[]`
- Engine-Logik für Vehicle-Übergabe
- LOADING/UNLOADING als Leg-Übergangs-Punkte
- L3-Auftrags-Templates mit intermodalen Strecken (z.B. Asien →
Hamburg-Hafen → München-Terminal → Augsburg-Kunde)
- Tests: vollständiger 3-Leg-Trip mit Übergabe
Mein Vorschlag: **Phase 4b separat** nach Thomas-Browser-Test von 4a.
Falls Phase 4a schon viel ist, lieber jetzt stabilisieren, dann 4b.
## Offene Atlas-Punkte
1. **Wrapper-Erweiterung `lg-routes-osm.json`** (Mail 0500, noch offen)
2. **Wrapper-Erweiterung `_claimed/`-Music-Pattern dokumentieren** —
sehr hilfreiches Pattern, das könnte als Memory/CLAUDE.md-Eintrag
für künftige Module fest etabliert werden
## Was Phase 4a NICHT enthält
- Keine Intermodal-Aufträge (Phase 4b)
- Keine Hilfestufen außer BLINK_EXACT (Phase 5)
- Keine Events (Phase 5)
- Kein optimal-Strategie-Algorithmus (Phase 5+)
- Keine Lehrkraft-Konfiguration (Phase 7)
## Reminder-Quittung
- ✅ noop läuft weiter (eigener Loop)
- ✅ Sprachregel 4a (alle neuen Texte: „Schiff", „Container", „Hafen")
- ✅ iPad 4c (Music-Widget aus DS, ≥36px)
- ✅ Autosave 7b (onStateChange greift)
- ✅ Pattern-Lesson Wrapper-Pfade — Wrapper-Anfrage 0500 noch offen
bei dir, kein Bruch in Phase 4a (alle neuen Routen werden zur
Laufzeit aus seeds gelesen, kein Asset-Refs in HTML)
## Offen für Thomas
- Browser-Test L1 mit Music-Player (rechts oben Track-Wahl)
- Test-Harness 25 Gruppen / ~90 Cases
- Phase-4b-Go: jetzt direkt oder erst nach Browser-Validierung von 4a?
— Logistik