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:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
instanz: heli
|
||||
stand: 2026-04-23 01:30
|
||||
phase: Oesterreich-Ausbau + neue Tower-Lehrmeisterin komplett fertig
|
||||
stand: 2026-04-23 13:00
|
||||
phase: Integrations-Umbau Schritte 1+2 fertig (Mode + Assessment), wartet auf End-Screen-Komponente
|
||||
---
|
||||
|
||||
# Heli-Instanz — Status
|
||||
@@ -11,66 +11,58 @@ phase: Oesterreich-Ausbau + neue Tower-Lehrmeisterin komplett fertig
|
||||
Heli-Rettungs-Modul: Code, TTS, Spielablauf, Waypoints, Routen, Landing.
|
||||
Plattform-Themen bei Atlas.
|
||||
|
||||
## Batch 2026-04-23 — Tower-Lehrmeisterin (OpenAI Nova)
|
||||
## Heute 2026-04-23 — Integrations-Umbau
|
||||
|
||||
### Stimm-Entscheidung
|
||||
- ElevenLabs-Quota (Sarah) zu knapp fuer einen grossen Batch → Hybrid-Loesung nicht noetig, wir haben komplett auf **OpenAI TTS `gpt-4o-mini-tts` + Stimme `nova`** gewechselt.
|
||||
- Speed 1.12 (ein bisschen flotter als Default).
|
||||
- Stil-Instruktion: „warmherzig, ruhig, wie eine Fluglotsin, die Schuelerinnen begleitet".
|
||||
- Thomas-Test-Freigabe am 23.04. 01:15.
|
||||
### Schritt 1: Mode-Check im Wrapper (Integrations-Vertrag §6.1)
|
||||
- `App/pages/heli-game.php` prueft Cookie `ggs_session`, liest
|
||||
`class_modules` + `student_modules`, setzt `mode`, `forcedLevel`, `easy`.
|
||||
- `locked` → Sperrseite mit Cockpit-Link.
|
||||
- Frontend-Variablen injiziert: `HELI_SESSION_MODE`, `HELI_FORCED_LEVEL`,
|
||||
`HELI_SESSION_ID`, `STUDENT_EASY`, `HELI_API_BASE`.
|
||||
- Pattern 1:1 vom Logistik-Wrapper uebernommen.
|
||||
|
||||
### 105 neue Audios erzeugt (0 Fehler)
|
||||
### Schritt 2: Forced-Level-Start (Frontend)
|
||||
- Level-Mapping: 1=easy, 2=medium, 3=hard.
|
||||
- `initMissionPhase()` waehlt bei `teacher_started` zufaellig eine Mission
|
||||
aus dem Pool, zeigt Info-Screen 1,8 s, dann automatisch `setPhase('plan')`.
|
||||
- Auftragswahl mit 3 Karten nur noch im `free`-Modus.
|
||||
|
||||
| Kategorie | Anzahl | Dateimuster |
|
||||
|---|---|---|
|
||||
| Pilot-Calls Zielanflug (ICAO-Protokoll) | 15 | `r_pilot_call_<heliKey>` |
|
||||
| Tower-Geografie-Antworten pro Mission | 25 | `r_tower_geo_m1` … `m25` |
|
||||
| Tower Start / Strike / Handover pro Heli | 45 | `r_tower_start|strike|handover_<heliKey>` |
|
||||
| Lesson-Audios (Ebene B, generisch) | 20 | `r_tower_lesson_<thema>` |
|
||||
### Schritt 3: Assessment-Calls (Integrations-Vertrag §6.3 / §6.4)
|
||||
- `assessmentStart()` in `selectMission()` → `phase:"started"`.
|
||||
- `assessmentPhaseEntered()` in `setPhase()` fuer jede Phase ausser
|
||||
mission/results + 30-s-Ping mit `phase:"running"`.
|
||||
- `assessmentComplete()` in `initResultsPhase()` → `phase:"completed"`
|
||||
mit Sternen, planPct, dauerMin, failed-Flag.
|
||||
- Demo-Modus ohne Session-Cookie blockiert gutmuetig: kein Request.
|
||||
|
||||
Dateiordner `App/sims/heli/sounds/radio/` hat jetzt **263 MP3s** insgesamt.
|
||||
### Heute schon erledigt (voriger Tag + Vormittag):
|
||||
- **105 OpenAI-TTS-Audios** (Nova, Speed 1.12, Funk-Filter, warmer Ton)
|
||||
- **25 Mission-Bilder** via DALL-E (auf 1008x576 verkleinert)
|
||||
- **Zielanflug-Funkprotokoll** (ICAO: Pilot-Call + Tower-Geo-Antwort)
|
||||
- **16-teilige Windrose** mit fixer Kompassnadel + Live-Kurspfeil
|
||||
- **Proximity-Voegel** (Geraeusch nur bei Naehe, mehr sichtbare Schwaerme)
|
||||
- **Audio-Stop** bei Rueckkehr zur Einsatzzentrale (stopAllGameAudio)
|
||||
|
||||
### Textbuecher
|
||||
- [`App/sims/heli/scripts/tower-geo-lines.json`](App/sims/heli/scripts/tower-geo-lines.json) — 40 Zeilen (15 Pilot + 25 Tower-Geo)
|
||||
- [`App/sims/heli/scripts/tower-start-lines.json`](App/sims/heli/scripts/tower-start-lines.json) — 65 Zeilen (45 Heli-Personalisierung + 20 Lesson)
|
||||
## Offene Aufgaben
|
||||
|
||||
### Infrastruktur-Scripts
|
||||
- [`App/php/generate-audio-openai.php`](App/php/generate-audio-openai.php) — Batch-Wrapper, idempotent (skip existing), speed/voice konfigurierbar per URL-Param
|
||||
- [`App/sims/heli/scripts/generate-audio-batch.sh`](App/sims/heli/scripts/generate-audio-batch.sh) — ElevenLabs-Variante, bleibt liegen fuer spaetere Sarah-Spezialaufnahmen
|
||||
- [`App/sims/heli/scripts/generate-audio-openai.sh`](App/sims/heli/scripts/generate-audio-openai.sh) — funktioniert nicht (Git-Bash-curl kann nicht zu api.openai.com), nur noch als Referenz; PHP-Wrapper wird genutzt
|
||||
|
||||
### Code-Integration
|
||||
- `landing.html` approach1-Phase:
|
||||
1. Pilot funkt im ICAO-Protokoll (Stadt-Tower, Rufzeichen, Anliegen) + Textblase
|
||||
2. Nach 4 s Tower-Antwort mit Geografie-Lernhinweis (mission-spezifisch) + Textblase
|
||||
3. Nach 12 s Pilot-Fachhinweis (szenario-spezifisch)
|
||||
- `start.html`:
|
||||
- Tower-Begruessung beim Flugbeginn (`tower_start_<key>`)
|
||||
- Strike-Call bei Beruehrung (`tower_strike_<key>`) statt alter `ouch/strike`-Witze
|
||||
- Handover bei 3 Beruehrungen (`tower_handover_<key>`) statt `takeover`
|
||||
- Funk-Filter-Pfad (Bandpass + Distortion) auf alle neuen `tower_*`-Audios erweitert
|
||||
- `playRadioWithFallback()` schuetzt vor fehlenden Buffern
|
||||
|
||||
### Bilder
|
||||
- 16 neue Mission-Bilder m10–m25 via DALL-E 3 (stil-konsistent Flat Scandinavian Alpine)
|
||||
- Auf 1008×576 verkleinert, zusammen 12,7 MB
|
||||
- Alle 25 Missionen haben jetzt eigenes Card-Motiv
|
||||
|
||||
## Offene Aufgaben (nicht blockiert)
|
||||
|
||||
- [ ] **ElevenLabs-Sea-Audios** (c6/c9/c10/c11/c16) — koennten alternativ auch via OpenAI nachgezogen werden, wenn Thomas den Bodensee/Donau-Sarah-Ton nicht mehr braucht.
|
||||
- [ ] **Alte Pilot-Witz-Audios entfernen** (takeover*, ouch*, strike*, pilot_calm*_alloy etc.) — bleiben noch auf Platte als Rollback-Option, werden im Code aber nicht mehr referenziert.
|
||||
- [ ] **Wirkungsklammer** (Pre/Post-Fragen) aus Kickoff.
|
||||
- [ ] **Level-System-UI**.
|
||||
- [ ] **Lehrkraefte-Dashboard** erweitern.
|
||||
- [ ] **End-Screen** (`bewertung.html`) auf `.ggs-endscreen`-Komponente
|
||||
umstellen — wartet auf Atlas-Build.
|
||||
- [ ] **Pre/Post-Quiz**-Integration wenn `quizEnabled` aus Mode-API true ist
|
||||
(in HELI_SESSION als Feld bereits verfuegbar).
|
||||
- [ ] **`game_saves`-Autosave** — aktuell nicht noetig (Einzel-Einsatz ist
|
||||
kurz), erst relevant wenn Missions-Ketten eingefuehrt werden.
|
||||
- [ ] **Sea-Audios** fuer c6/c9/c10/c11/c16 — Fallback auf universelles
|
||||
approach/extract aktiv, kein Ausfall. Koennten via OpenAI nachgezogen werden.
|
||||
- [ ] **Lehrplan-Anker** fuer Heli (Atlas-Konzept §7.4) — wartet auf
|
||||
Lehrplan-Instanz.
|
||||
- [ ] **captiainSpeaking.mp3**-Tippfehler stehen lassen, keine neuen
|
||||
Tippfehler einfuehren (Atlas-Note).
|
||||
|
||||
## Blocker
|
||||
|
||||
**Keine.** Alle Audios da, alle Bilder da, alle Dispatches verdrahtet,
|
||||
Probe-Seite bestaetigt Qualitaet.
|
||||
**Keine.**
|
||||
|
||||
## Naechste Marke
|
||||
## Arbeitsmodus gerade
|
||||
|
||||
Thomas-Durchspielrunde mit kompletter neuer Stimme quer durch die 25 Missionen.
|
||||
Feedback zu einzelnen Tower-Texten moeglich → Korrektur pro Datei einfach per
|
||||
`FORCE=1 http://localhost/geograsim/App/php/generate-audio-openai.php?file=...&force=1`.
|
||||
Wartet auf Atlas-End-Screen-Komponente, sonst bereit fuer Durchspielrunde
|
||||
mit neuer Stimme und Tower-Geografie-Funk.
|
||||
|
||||
Reference in New Issue
Block a user