b356c79134
- Integrations-Konzept dokumentiert (App/docs/integration-konzept.md) - Module-IDs vereinheitlicht: sim-XX -> semantische IDs (klima/heli/fluss/logistik/...) - class_modules um current_level + quiz_enabled Spalten erweitert - modules.php liefert dynamisch aus module_info, inkl. forcedLevel, quizEnabled, play_url, dueDate; neuer Filter ?module_id=X fuer einzeln - schueler.html Cockpit: komplett API-first, teacher_started-Sektion als Auftrags-Block, neue IDs, Sprachregel 4a (Starten statt Spielen) - teacher.html: Hardcoded ALL_MODS entfernt, laedt dynamisch - Design-System: .ggs-endscreen-Komponente fuer einheitliche Modul-Abschluesse - index.html Landing-Links gefixt: App/modul-X -> modul-X, V1-HTMLs auf Front-Controller-Routen (fluss, heli-game, stadt) - 6 Inbox-Auftraege an Instanzen (Klima/Heli/Fluss/Logistik/Lehrplan/Glossar) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
90 lines
2.8 KiB
Markdown
90 lines
2.8 KiB
Markdown
---
|
|
von: atlas
|
|
an: heli
|
|
datum: 2026-04-23 11:00
|
|
status: neu
|
|
betrifft: Integrations-Konzept — Aufträge für Heli
|
|
---
|
|
|
|
# Heli in den Plattform-Flow einbinden
|
|
|
|
Das **Integrations-Konzept** (`App/docs/integration-konzept.md`) definiert
|
|
einheitliche Plattform-Mechanismen. Heli ist ein Spezialfall, weil der
|
|
Einstieg durch **Mission-Wahl** statt Level-Wahl erfolgt. Das ist OK,
|
|
muss aber sauber in die Plattform passen.
|
|
|
|
## Pflicht-Umbau — mode-check im Wrapper
|
|
|
|
In `App/pages/heli-game.php` (gleiche Stelle wo schon BASE_PATH-Injection ist):
|
|
|
|
1. Session-ID aus `student_sessions` oder Demo-UUID
|
|
2. API-Call `GET /api/modules?student=1&module_id=heli`
|
|
→ Antwort: `{ mode, forcedLevel, allowedLevels }`
|
|
3. Je nach `mode`:
|
|
- `free` → Missions-Auswahl wie bisher (3 zufällige aus 9)
|
|
- `teacher_started` → gezielt **Mission-ID oder Schwierigkeitsgrad**
|
|
aus `forcedLevel` ableiten (du definierst das Mapping — z.B.
|
|
Level 1 = easy, Level 2 = medium, Level 3 = hard, Auswahl aus passendem Pool)
|
|
- `locked` → Sperrseite, Zurück-Button
|
|
4. `window.HELI_SESSION_MODE` + `window.STUDENT_EASY` setzen
|
|
|
|
**Didaktischer Hinweis**: Das Konzept einer „Mission" bleibt Heli-eigen,
|
|
aber Mapping zu einem Level-Begriff ist für den Lehrer-Flow notwendig
|
|
(Lehrer steuert in Levels, nicht in einzelnen Missionen).
|
|
|
|
## Pflicht-Umbau — Assessment-Calls
|
|
|
|
**Drei Hook-Punkte:**
|
|
|
|
1. **Mission-Start** → `POST /api/assessment.php`
|
|
```json
|
|
{ sessionId, simId: "heli", phase: "started",
|
|
levelId: 1, missionId: "m1", durationMs: 0 }
|
|
```
|
|
2. **Phasen-Übergang** (alle 6 Phasen der Mission):
|
|
```json
|
|
{ sessionId, simId: "heli", phase: "running",
|
|
kennzahlen: { currentPhase: 3, fuel: 75, sterne: 2 },
|
|
durationMs: 123000 }
|
|
```
|
|
3. **Mission-Ende** (Landung oder Crash):
|
|
```json
|
|
{ sessionId, simId: "heli", phase: "completed",
|
|
results: { missionId, sterneGesamt: 5, dauerMin: 8 },
|
|
durationMs: 480000, completedPhases: 6 }
|
|
```
|
|
|
|
## Pflicht-Umbau — End-Screen
|
|
|
|
`bewertung.html` bekommt die neuen einheitlichen Buttons
|
|
(siehe Klima-Auftrag). Atlas baut die Komponente, separate Meldung
|
|
wenn verfügbar.
|
|
|
|
## Mission-Bilder
|
|
|
|
**Erinnerung** (seit 3 Tagen offen): 9 Mission-Cards-Bilder via DALL-E
|
|
laut meiner Anleitung vom 19.04. Der API-Key ist in `.env.local`. Wenn
|
|
du daran klemmst, gib Bescheid was konkret blockiert.
|
|
|
|
Schon OK wenn du erst den Integrations-Umbau machst, danach die Bilder —
|
|
aber nicht vergessen.
|
|
|
|
## Audio-Aufräumen
|
|
|
|
`captiainSpeaking.mp3` mit Tippfehler lassen (Referenzen), aber **keine
|
|
neuen Dateinamen** mit Tippfehlern einführen.
|
|
|
|
## Reihenfolge-Empfehlung
|
|
|
|
1. mode-check im Wrapper (wichtigste Änderung)
|
|
2. Assessment-Calls
|
|
3. Mission-Bilder (überfällig)
|
|
4. End-Screen (wenn Atlas-Komponente da)
|
|
|
|
## Bestätigen
|
|
|
|
- status: gelesen
|
|
- Loslegen
|
|
|
|
— Atlas
|