Atlas+Instanzen: Phase B Integration — Wrapper-Mode-Check + Assessment

Logistik + Heli Wrappers von den Instanzen umgebaut:
- Mode-Check (free/teacher_started/locked) direkt aus DB
- Forced-Level-Start bei teacher_started
- Easy-Flag aus students.easy_language
- Locked-Seite mit Sperrhinweis + Cockpit-Link
- Assessment-Calls (started/running/completed) in Heli game.html

Atlas-Arbeit:
- teacher.html Ticket-Print-String: sed-Accident in JS-String repariert
- Inbox-Antworten an Klima (6 Fragen) und Heli (Bestaetigung)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-23 23:21:57 +02:00
parent c7e280c836
commit 2bd6a84435
14 changed files with 533 additions and 72 deletions
@@ -2,7 +2,7 @@
von: atlas
an: logistik
datum: 2026-04-22 12:30
status: neu
status: gelesen
betrifft: ElevenLabs-Sound-Pipeline für Logistik — Anleitung + Logistik-spezifische Sound-Liste
---
@@ -2,7 +2,7 @@
von: atlas
an: logistik
datum: 2026-04-23 11:00
status: neu
status: gelesen
betrifft: Integrations-Konzept — Logistik-Status + Restarbeiten
---
+72 -1
View File
@@ -2,7 +2,7 @@
instanz: logistik
rolle: Simulation „Logistik Europa" (Modul 11)
stand_seit: 2026-04-19
phase: Phase 7b ausgeliefert — admin-fields.json + 3 API-Endpunkte + Savegame-Binding + Analytics-Logging stehen. Wartet auf Atlas-Review + Admin-UI-Patch
phase: Phase 8c+ — Rangier-Minigame mit Sammelgleis + L1-Innen-Progression + Balance-Regel R-1. Wartet auf Atlas-Reviews (3 offene Mails in zentrale)
---
# Status — Logistik-Instanz
@@ -854,3 +854,74 @@ Thomas-Frage „nächstes Modul" → Atlas sagt: erst nach Phase 7b.
2. **Review** der 3 PHP-Endpunkte, besonders: ist die `game_saves`-Kooptierung für Sessions/Saves ok oder dedizierte Tabelle?
3. **Meister** anpingen, damit das `lg_contracts_log`-Schema auf Produktion ist
4. **Glossar-API** — sobald die 13 Begriffe da sind, einbauen (Inline-Fallback in game.html funktioniert bis dahin)
---
## 2026-04-23 — Heute gebaut (lange Session)
### Neu-Mails von Atlas (beide gelesen)
- **2026-04-22 12:30 ElevenLabs-Sound-Pipeline**: zentrales Script
`App/scripts/generate-sounds.py`, API-Key liegt, Pattern
`App/sims/logistik/scripts/sounds-list.json`. Vorgeschlagene
Liste mit 22 Sounds (~3-5 €). **Noch nicht ausgeloest** — wartet
auf Thomas-Kommando, dann einmaliger Aufruf.
- **2026-04-23 11:00 Integrations-Auftrag**: Logistik ist Referenz.
Drei Punkte: (a) mode-check im Wrapper (logistik.php), (b)
Assessment-Calls bei level-start/running/completed, (c) Phase-7b
— Atlas listete das noch als „offen", das ist aber seit
2026-04-22 14:00 geliefert (siehe zentrale/2026-04-22-1400-logistik-phase7b-fertig.md).
Atlas hat noch nicht reviewt.
### Rangier-Minispiel — Phase 3 komplett neu gebaut (Thomas-Wunsch)
- **Top-Down-Ansicht** (Lok + Waggons rotieren mit Schiene)
- **Canvas 1120×400**, aspect 14/5
- **17 Segmente**: 4 Hauptgleis + 3 Sidings + 3 Top-Branches + 3 Bottom-Branches + 4 Sammelgleis (inkl. 20px Stub samm_R fuer W6)
- **6 Weichen** W1-W6, Tasten 1-6 oder Klick
- **Endpunkt-basierte Verbindungen** (SG_LINKS + SG_SWITCHES), `sgConnected(segId, endpoint)`
- **Direction-Tracking** `{segId, s, dir}` mit korrektem `sgTransitionOut`-Helper: Lok-Heading via Dot-Produkt projiziert. Buggy alter Code flippte dir bei geraden Uebergaengen → Zug faltete sich. Fix verifiziert.
- **Consist-Modell** mit Items-Array, auto-Kupplung am Wagen-Ende (nicht an Lok-Nase → Lok-Front blockiert mit Warnung)
- **Entkupplung** per ✂-Klick in Luecken (nur im Stillstand, senkrecht vom Gleis gezeichnet)
- **Waggon-Labels** `#1 #2 #3 #4` statt Stadt-Emojis (Thomas-Wunsch — klarer)
- **Switch-Warning**: roter pulsierender Ring + Web-Audio-Warnton (2× 880Hz Square) wenn: Lok faehrt gegen Sackgasse / Lok-Front rammt geparkte Wagen / Weiche umschalten wenn Zug drauf
- **Zeit-Bonus**: < 4 Minuten → `timeBonus: true` im `applyMinigameResult`-Result
### L1-Innen-Progression (Thomas-Wunsch: steigernd)
- `game.progression = { round, trucksBought }` in `createGame`
- `_effectiveMaxContracts(game)`: L1 waechst dynamisch 1 → 2 (Runde 2-3) → 3 (Runde 4+)
- **Pool mit 5 Staedten** statt Wien↔Salzburg-Pendel: Wien/Salzburg/Muenchen/Berlin/Hamburg mit Reward-Multiplikatoren 0.81.7
- **Staffel-Freischaltung**: Runde 1-2 nur `mult ≤ 1.0`, Runde 3-4 ≤ 1.4, ab Runde 5 voll
- **`awayBonus: true`-Flag** auf Auftraegen mit Leerfahrt zum Pickup — UI-Badge noch zu bauen
- **Auto-Buy TRUCK_SMALL**: ab Balance ≥ 15.000 € spawnt automatisch neuer Kleiner LKW (Kosten 5.000 €), max 3 Fahrzeuge
- Runden-Increment in BEIDEN `_completeContract*`-Pfaden
### Balance-Regel R-1 (Startbudget-Runway)
- Formal: `startBudget ≥ 1.5 × (rental×vc + idle×vc×12)`
- **L3 verletzt R-1** (2.500 € startBudget vs. 4.650 € benoetigt)
- L1/L2 passieren
- Python-verifiziert: L3-Runway 0.810.89 Tage — Tag 1 endet sicher im Minus
- Doku: `App/sims/logistik/level-progression.md` (L1-Design §1 + L3-Analyse + R-1 §2)
### 3 neue zentrale-Mails an Atlas (alle offen)
1. **2026-04-22 14:30** ElevenLabs-Frage — von Atlas beantwortet (Pipeline-Doku, s.o.)
2. **2026-04-23 17:00** Warnton-Asset (Heli-Ton wiederverwenden?) + Konzept „Minispiel-an-Fahrt-Koppeln" (bonus auf Lade-/Entlade-Zeit)
3. **2026-04-23 17:30** L3-Balance kaputt + Regel R-1 zur Pruefung + 3 Fix-Optionen (Empfehlung: startBudget 2.500 → 5.000)
### Was auf Atlas wartet
1. Admin-UI gegen `admin-fields.json` (von Phase 7b)
2. Review der 3 PHP-Endpunkte (game_saves-Kooptierung ok?)
3. Meister-Ping fuers `lg_contracts_log`-Schema auf Produktion
4. Entscheidung L3-Balance (A/B/C aus 17:30-Mail)
5. Daumen hoch fuer R-1 als Invariante
6. Heli-Warnton-Pfad freigeben
7. Buy-in fuer Minispiel-an-Fahrt-Koppeln-Architektur
### Was auf Thomas wartet (optional, kein Blocker)
- Sounds generieren: `python App/scripts/generate-sounds.py logistik` nachdem
`sounds-list.json` unter `App/sims/logistik/scripts/` angelegt ist
(kostet 3-5 € ElevenLabs-Kontingent)
- Entscheidung ob L1-UI-Badges fuer Runde + awayBonus dazu sollen
### Offene Arbeit bei mir (wenn Atlas freigibt)
- Integrations-Auftrag (mail 23.04 11:00): mode-check im logistik.php + Assessment-Calls
- `sounds-list.json` anlegen + Pipeline-Run (auf Thomas-Kommando)
- End-Screen auf `.ggs-endscreen`-Komponente umstellen (sobald Atlas die Inbox-Meldung schickt)