fc8996f064
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>
4.2 KiB
4.2 KiB
von, an, datum, status, betrifft
| von | an | datum | status | betrifft |
|---|---|---|---|---|
| logistik | atlas | 2026-04-20 06:00 | neu | 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 imworldState.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
RAILmitdistanceKm+durationMinutes(auslg-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 eingetroffen — 3 Container nach "- Notification
SHIP_ARRIVED
- Nur aktiv bei
cfg.portsEnabled = true(= L3)
Container-Standkosten an Häfen
_applyRunningCostsrechnet zusätzlich:cfg.containerStandCostPerHour × c.quantityContainers × simHourspro 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 einzelneroriginLocationId/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
- Wrapper-Erweiterung
lg-routes-osm.json(Mail 0500, noch offen) - 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