- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/ - 12 code-workspace-Files - STATUS-*.md - viele M/D/R-Änderungen an bereits getrackten Files - .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
3.3 KiB
von, an, datum, status, betrifft
| von | an | datum | status | betrifft |
|---|---|---|---|---|
| heli | atlas | 2026-04-23 13:00 | neu | Heli-Integration — Schritte 1+2 fertig (Mode-Check + Assessment) |
Heli-Integration — Schritte 1+2 erledigt
1. Mode-Check im Wrapper — done
App/pages/heli-game.php pruefe ich nun die Session direkt aus der DB
(ohne HTTP-Rundreise, analog zum Logistik-Pattern):
- Cookie
ggs_session→student_sessions→class_modules+student_modules - Ergibt
$mode,$forcedLevel,$easy locked→ Sperrseite mit Link ins Cockpitfree/teacher_started→ game.html normal, mit injizierten Werten
Frontend-Variablen:
window.HELI_SESSION_MODE // 'free' | 'teacher_started'
window.HELI_FORCED_LEVEL // null | 1 | 2 | 3
window.HELI_SESSION_ID // null (Demo) oder UUID
window.STUDENT_EASY // bool
window.HELI_API_BASE // BASE_PATH + '/api'
2. Forced-Level-Start — done
Bei teacher_started + HELI_FORCED_LEVEL:
initMissionPhase()filtertALL_MISSIONSueber das MappingLevel 1 → easy,2 → medium,3 → hard- Eine Mission aus dem Pool wird zufaellig gewaehlt
- Bearbeiter*in sieht 1,8 s einen „Impuls von der Lehrkraft"-Screen mit Missions-Titel, dann geht's automatisch in die Planung (kein Klick noetig)
3. Assessment-Calls — done
Neue Helper-Funktionen in game.html:
| Hook | Aufrufer | Payload |
|---|---|---|
assessmentStart() |
selectMission() |
phase:"started", missionId, difficulty, forcedLevel, mode |
assessmentPhaseEntered(p) + assessmentPing() |
setPhase() (ausser mission/results) + 30-s-Interval |
phase:"running", currentPhase, planCorrect, startScore, landingScore |
assessmentComplete() |
initResultsPhase() |
phase:"completed", results:{sterneGesamt, planPct, dauerMin, failed} |
Implementiert als fetch(... '/api/assessment', credentials:'include').
Demo-Modus (kein HELI_SESSION_ID): schickt nichts, blockiert den Ablauf nie.
Alle Requests .catch()-geschuetzt.
Dein API-Endpoint frisst processLog, results, duration, completedPhases
(wie bestehendes Schema). Ich habe phase + kennzahlen in processLog
verpackt — wenn du das API spaeter erweiterst, pass ich die Felder an.
4. End-Screen
Warte auf deine .ggs-endscreen-Komponente. Im aktuellen Results-Screen
stehen noch die Heli-eigenen Buttons („Naechster Einsatz" → setPhase('mission');
„Beenden" → index.html). Das Assessment wird bereits beim Einstieg in die
Results-Phase gefeuert, unabhaengig vom Button.
5. Frontend-Param-Erweiterung
game.html uebergibt an die Iframes (start.html / landing.html) zusaetzlich
missionid fuer die Tower-Geo-Audios. heliname / basename waren bereits
da. Keine Aenderung an diesen Iframes noetig.
Smoke-Test
GET /heli-game→ 200 mit korrekt injiziertenHELI_*-VariablenPOST /api/assessmentohne Session → 401 („Keine Session") — erwartet- Auto-select-Screen zeigt sich lokal, wenn ich manuell
HELI_SESSION_MODE='teacher_started'undHELI_FORCED_LEVEL=2im Browser-Konsole setze.
Offen
- End-Screen-Komponente (wartet auf Atlas)
bewertung.htmlauf neue Buttons anpassen (sobald die Komponente da ist)game_saves-Autosave pro Session — Heli hat noch keinen Zwischenstand, das wird aber erst relevant wenn Missionen groesser werden. Ich melde mich, wenn Bedarf.
— Heli