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:
2026-04-23 08:15:00 +02:00
parent eac686ee1a
commit fc8996f064
47 changed files with 9995 additions and 230 deletions
+28 -33
View File
@@ -258,20 +258,26 @@ Wenn nach Phase 2/3 die Akzeptanz-Korridore nicht erreicht werden:
## 6. INSERT-SQL für `game_levels`
> **Vorbehalt:** Schema-Annahmen unten basieren auf dem Atlas-Briefing
> (`game_levels.params` als JSON). Falls Spaltennamen abweichen, bitte
> in der Atlas-Review korrigieren — ich schiebe dann nach.
**Schema (von Atlas bestätigt 01:45):** `id, game_id, level_name,
scenario, params, sort_order, created_at, updated_at`. Keine eigene
Spalte `level_name_easy` — die Leichte-Sprache-Variante wandert ins
`params`-JSON als `levelNameEasy` (UI liest beide Felder, `pickText()` wählt).
> **Hinweis:** Atlas hat die drei Logistik-Level am 2026-04-20 01:45
> bereits eingespielt. Diese SQLs dienen als Referenz / für Reset.
```sql
-- Logistik Europa — 3 Level-Konfigurationen (Phase 0)
-- Voraussetzung: module_info-Eintrag 'logistik' existiert (Atlas hat angelegt)
-- Voraussetzung: module_info-Eintrag 'logistik' existiert
-- created_at / updated_at werden von MySQL-Default gesetzt
INSERT INTO `game_levels`
(`game_id`, `sort_order`, `level_name`, `level_name_easy`, `params`, `created_at`)
(`game_id`, `sort_order`, `level_name`, `scenario`, `params`)
VALUES
(
'logistik', 1, 'Lernen', 'Erster Auftrag',
'logistik', 1, 'Lernen', 'logistik_level_1',
JSON_OBJECT(
'levelNameEasy', 'Erster Auftrag',
'startBudget', 8000,
'maxActiveContracts', 1,
'availableVehicleTypes', JSON_ARRAY('TRUCK_SMALL'),
@@ -291,12 +297,12 @@ VALUES
'intermodalEnabled', FALSE,
'minigamesEnabled', FALSE,
'visibleLocationLevel', 1
),
NOW()
)
),
(
'logistik', 2, 'Übung', 'Drei Aufträge',
'logistik', 2, 'Übung', 'logistik_level_2',
JSON_OBJECT(
'levelNameEasy', 'Drei Aufträge',
'startBudget', 5000,
'maxActiveContracts', 3,
'availableVehicleTypes', JSON_ARRAY('TRUCK_SMALL', 'TRUCK_LARGE', 'TRAIN'),
@@ -316,12 +322,12 @@ VALUES
'intermodalEnabled', FALSE,
'minigamesEnabled', TRUE,
'visibleLocationLevel', 2
),
NOW()
)
),
(
'logistik', 3, 'Profi', 'Profi-Disposition',
'logistik', 3, 'Profi', 'logistik_level_3',
JSON_OBJECT(
'levelNameEasy', 'Profi-Disposition',
'startBudget', 2500,
'maxActiveContracts', 6,
'availableVehicleTypes', JSON_ARRAY('TRUCK_SMALL', 'TRUCK_LARGE', 'TRAIN'),
@@ -341,38 +347,27 @@ VALUES
'intermodalEnabled', TRUE,
'minigamesEnabled', TRUE,
'visibleLocationLevel', 3
),
NOW()
)
);
```
> Wenn das Schema andere Spalten hat (z.B. `module_id` statt `game_id`,
> oder zusätzliche `description`/`is_active`-Spalten), bitte mit
> Korrektur-Snippet melden — ich übernehme das hier.
---
## 7. Konsistenz-Checks für Atlas
## 7. Konsistenz-Checks (durch Atlas 01:45 abgeschlossen)
Bitte beim Review verifizieren:
1. **Bahnnetz-Distanzen:** `lg-railnet.json` enthält 5 Knoten und (laut
Gerüst-Mail) 5 Kanten. Im Briefing waren nur 3 Kanten genannt
(WienMünchen 400, MünchenHamburg 800, HamburgRotterdam 500).
Welche Distanzen haben Paris↔Rotterdam und Paris↔München in deiner
Seed-Datei? Trag in §2 ein und in `headless-runner.js` ggf. die
Test-Erwartungen anpassen.
2. **Event-Wahrsch. L1=0:** Bewusste Abweichung von Atlas-Vorschlag
(PH 65.5: Unfall 5 %, Schnee 10 %, Hafen 8 % → Atlas-Briefing halbiert
für L1 → ich setze auf 0). Bitte freigeben oder Gegenvorschlag.
3. **`game_levels`-Schema:** Spaltennamen aus §6 INSERT prüfen.
4. **`level_name_easy`:** Existiert eine Spalte für Leichte-Sprache-
Variante des Level-Namens? Falls nicht, fliegt sie aus dem INSERT.
1.**Bahnnetz-Distanzen:** Paris↔Rotterdam=520, Paris↔München=820 (bestätigt, in §2 eingearbeitet)
2.**Event-Wahrsch. L1=0:** Genehmigt
3.**`game_levels`-Schema:** Spalten geklärt, INSERT in §6 angepasst
4.**`level_name_easy`:** Existiert nicht, wandert ins params-JSON
---
## 8. Änderungshistorie
- **2026-04-20 01:50** v0.3 — Atlas-Doku-Korrekturen: Bahnnetz-Distanzen
Paris↔Rotterdam=520/Paris↔München=820 ergänzt, INSERT-Schema
angepasst (`scenario` statt `level_name_easy`, `levelNameEasy` ins
params-JSON), Konsistenz-Checks abgehakt
- **2026-04-20** v0.2 — Rationale-Spalte je Parameter, INSERT-SQLs,
Konsistenz-Checks an Atlas, `eventProbabilityMultiplier` als
Multiplikator umstrukturiert, Container-Standkosten ergänzt, `noop`-