- 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>
17 KiB
GeoGraSim — Integrations-Konzept
Stand: 2026-04-23 Autor: Atlas (Plattform-Instanz) Status: Entwurf zur Abstimmung mit Thomas, danach Auftrags-Generierung
0. Zweck des Dokuments
Dieses Papier beschreibt, wie Schüler*innen, Lehrkräfte, Module und Auswertungen ineinandergreifen sollen. Es definiert den gemeinsamen Mechanismus, an den sich alle Module halten, damit der Gesamt-Flow stimmig wird.
Es ist kein Implementierungsplan für einzelne Module — das bleibt bei den jeweiligen Instanzen. Es ist ein Vertrag: wer wohin springt, welche Daten wohin wandern, welche UI-Zustände es gibt.
1. Zwei Rollen + öffentliche Demo
| Rolle | Einstieg | Hauptaufgabe |
|---|---|---|
| Schüler*in | login.html mit Klassen-Code + Benutzername |
Lernt mit Modulen, sieht eigenen Fortschritt |
| Lehrkraft | login.html mit eigenem Account |
Steuert Klassen, gibt Module frei, wertet aus |
| Admin (Thomas) | admin.html mit Admin-PIN |
Verwaltet Module, Lehrkräfte, Lizenzen, Level-Parameter |
Öffentliche Demo (ohne Rolle): Über die Landing-Seite geograsim.at/ kann
jede:r auf „▶ Sofort probieren" klicken und ein freigegebenes Modul direkt
spielen. Kein persistenter Fortschritt, kein Account, keine Auswertung.
Nur Schaufenster-Funktion, damit Schulleitungen und Eltern sehen können, was
die App leistet.
2. Bestehendes Datenmodell (Ist-Stand auf Prod)
User-Daten — unverändert zu bewahren
teachers (9 Zeilen) → Lehrer-Accounts
students (32 Zeilen) → Schüler-Accounts (pro Klasse)
student_sessions (24 Zeilen) → UUID-Sessions (auch Autodidakt)
classes (7 Zeilen) → Klassen pro Lehrer (mit join_code)
licenses (500 Zeilen) → Lizenzcodes
admin_users (1 Zeile) → Thomas' Admin-Account
Steuerung der Modul-Freigabe — existiert
class_modules (class_id, module_id, enabled, mode, started_at, due_date)
mode: 'locked' | 'free' | 'teacher_started'
student_modules (student_id, module_id, mode)
→ Per-Schüler-Override einer Klassen-Einstellung
Inhalt pro Modul
module_info (module_id, title, icon, short_desc, long_desc, learning_goals,
status, sort_order, + Leichte-Sprache-Varianten)
game_levels (id, game_id, level_name, scenario, params JSON, sort_order)
game_saves (session_id, save_key, save_data JSON) → pro Schüler ein Autosave
Auswertung — existiert, wird bisher kaum genutzt
assessments (session_id, sim_id, class_id, process_log, predictions,
results, reflections, duration_ms, completed_phases, submitted_at)
assessment_answers (session_id, sim_id, phase pre/post, question_id,
answer, correct)
lg_contracts_log (modul-spezifisch für Logistik — Pattern für andere Module)
Lehrplan-Verknüpfung — existiert
kompetenzen (slug, name, description) → 4 Kompetenzen
kompetenz_modules (kompetenz_id, module_id) → Verknüpfung
lehrplan_anchors (kompetenz_id, country, anchor_type, title, reference,
quote) → 78 Anker (AT-Fokus)
3. Flow 1 — Schüler*in mit Klassenzugehörigkeit
3.1 Einstieg
geograsim.at/login
├─ Klassencode (6-stellig) + Benutzername + Passwort
└─ oder "Ich habe keinen Code" → Autodidakt-Modus
Nach Login: Cockpit (sim.html).
3.2 Cockpit = Modul-Auswahl
Cockpit zeigt alle Module der Lehrkraft-Freigabe:
API: GET /api/modules?student=1
→ [
{id:'klima', name:'Klimawächter', icon:'🌍', mode:'free'},
{id:'heli', name:'Heli-Navigation',icon:'🚁', mode:'teacher_started'},
{id:'logistik', name:'Logistik Europa',icon:'🚚', mode:'locked'},
...
]
Visualisierung je nach mode:
| Mode | Card-Anzeige | Klick-Verhalten |
|---|---|---|
free |
Normal, voll klickbar | Springt direkt zum Modul-Einstieg |
teacher_started |
Highlighted (Lehrer-Impuls) + „Jetzt dran" | Springt direkt ins Lehrer-gewählte Level |
locked |
Ausgegraut, Schloss-Icon | Tooltip „Noch nicht freigegeben" — kein Klick |
Zusätzlich: Fortschritts-Badge pro Card wenn game_saves vorhanden („zuletzt bei Level 2 · 45 %").
3.3 Modul-Einstieg (einheitlich für ALLE Module)
Jedes Modul hat eine Einstiegs-URL (z.B. /klima-2d, /heli-game, /logistik). Diese entscheidet beim Laden:
Pseudocode in <modul>.php Wrapper:
─────────────────────────────────
1. Session-ID aus Cookie lesen (oder Autodidakt-UUID erzeugen)
2. GET /api/modules?student=1&module_id=<X>
→ Antwort: { mode, forcedLevel, allowedLevels, due_date }
3. Je nach mode:
- 'free' → Level-Picker anzeigen (Lernen / Üben / Profi)
- 'teacher_started' → automatisch forcedLevel starten, kein Picker
- 'locked' → Sperrseite anzeigen, zurück zum Cockpit
4. In jedem Fall: Autosave aus game_saves vorladen wenn vorhanden
3.4 Während des Spiels
- Autosave: Bei jedem state-relevanten Übergang → POST
/api/<modul>-saves.php(Logistik hat das schon, Klima/Heli/Fluss müssen nachziehen) - Assessment-Capture (optional, aber empfohlen):
- Pre-Quiz am Anfang: 3 kurze Fragen →
assessment_answers - Post-Quiz am Ende: dieselben Fragen → Delta = Lernzuwachs
- Pre-Quiz am Anfang: 3 kurze Fragen →
- Events für Lehrer-Live-Sicht: alle 30 s ein Ping POST
/api/assessment.phpmit Zwischenstand (Kennzahlen des Moduls)
3.5 Modul-Abschluss
End-Screen jedes Moduls hat einheitliche Buttons:
┌──────────────────────────────────────────┐
│ Durchgang abgeschlossen · {module-name} │
│ {Auswertung spezifisch pro Modul} │
│ │
│ [ 🏠 Zurück zum Cockpit ] │
│ [ ↻ Neuer Durchgang ] │
│ [ 📊 Auswertung ansehen ] (optional) │
└──────────────────────────────────────────┘
„Zurück zum Cockpit" führt immer nach /sim (nicht zur Landing). Das ist ein Plattform-Invariant.
4. Flow 2 — Lehrkraft
4.1 Einstieg
geograsim.at/login
→ Teacher-Login (Benutzername + Passwort)
→ teacher-dashboard.html
4.2 Dashboard-Hauptbereiche
┌─ Klassen-Liste (links) ────────────────────────┐
│ - 1A (1. Klasse, 18 Schüler*innen) │
│ - 2B (2. Klasse, 15 Schüler*innen) │
│ - +-Neue-Klasse │
└────────────────────────────────────────────────┘
Nach Klassen-Klick → drei Tabs:
[Übersicht] [Modul-Steuerung] [Auswertung]
Tab „Übersicht" (existiert sinngemäß schon)
- Aktuell anwesende Schüler*innen (live via
last_seen) - Wer bei welchem Modul
- Heatmap: Aktivität pro Modul × pro Schüler
Tab „Modul-Steuerung" (teilweise da — ausbauen)
Matrix: Module (Zeilen) × Schüler (Spalten). Pro Zelle Drop-down:
- Default (Klassen-Einstellung übernehmen)
- Frei wählbar
- Vom Lehrer gestartet (Level 1 / 2 / 3)
- Gesperrt
Ober-Reihe („Alle Schüler"): Klassen-Default setzen. Spalten-Kopf pro Schüler: individuelles Override.
Plus Live-Button: „Jetzt Modul X, Level Y für alle starten" → setzt teacher_started + notification an alle anwesenden Schüler → Cockpit refresht → neuer Modul-Impuls erscheint.
Tab „Auswertung" (FEHLT — ist Neubau)
Pro Modul:
- Durchschnittlicher Fortschritt
- Pre-vs-Post-Quiz Delta (Lernzuwachs)
- Wer hat abgeschlossen, wer hängt
- Modul-spezifische Kennzahlen (aus
assessments.results+ modul-eigene Logs wielg_contracts_log) - Drill-Down: einzelne Schüler*innen-Session im Detail
4.3 Pro Modul einheitliche Auswertungs-Seite
Jedes Modul liefert Kennzahlen nach einem Standard-Schema. Details siehe §6.
5. Flow 3 — Öffentliche Demo (Landing)
Über geograsim.at/ klickt ein Besucher auf „▶ Sofort probieren" eines
Moduls:
geograsim.at/ → Card „▶ Sofort probieren" → Modul startet direkt
- Kein Login, keine Klasse, keine Zuordnung zu einem Account
- Kein persistenter Fortschritt — bei Reload ist alles weg
- Keine Assessment-Calls, keine DB-Schreibzugriffe
- Ausschließlich Schaufenster-Funktion für Interessierte, Schulleitungen, Eltern
Technisch: Der Modul-Wrapper erkennt „keine Session vorhanden" und läuft
im Demo-Modus (nur In-Memory-State). Kein game_saves-Eintrag,
kein assessments-Eintrag.
Die „Sofort probieren"-Cards auf der Landing sind nur für Module mit
Status aktiv (in module_info) sichtbar. Geplante/Beta-Module bleiben
ausgegraut („LOCKED"-Optik).
6. Modul-Interface-Vertrag
Jedes Modul (Klima, Heli, Fluss, Logistik, Stadt, Erdbeben, Energiemix, Lieferketten, Regenwald, zukünftige Module) muss folgende Schnittstellen bedienen:
6.1 URL-Einstieg
- Primäre URL:
/<modul-id>(z.B./logistik) — lädt Modul direkt - Mit Level:
/<modul-id>?level=N— springt zu bestimmtem Level - Detail-Seite:
/modul-<modul-id>— Info-Seite ohne Spielstart - Wrapper muss:
window.<MODUL>_MODEaus API-Call setzen (free/teacher_started/locked), Level-Picker je nach Mode anzeigen
6.2 Level-Start einheitlich
Beim Start eines Levels (egal welches Modul):
- Prüfen ob
game_savesfür diese Session+Modul+Level existiert - Falls ja: „Weitermachen" oder „Neu starten" fragen
- Level-Params aus
game_levels.paramsladen - Optional Pre-Quiz anzeigen (3 Fragen, 30 s)
- Modul-Simulation beginnt
6.3 Fortschritts-Meldung während Spiel
// Alle 30 s oder bei wichtigen Milestones
POST /api/assessment.php
{
sessionId: "...",
simId: "logistik",
phase: "running",
kennzahlen: { /* modul-spezifisch */ },
completedPhases: 2,
durationMs: 123000
}
6.4 Abschluss-Meldung
POST /api/assessment.php
{
sessionId: "...",
simId: "logistik",
phase: "completed",
results: { /* Module liefert strukturierte Kennzahlen */ },
reflections: { /* Schüler-Eingaben */ },
durationMs: 1234567,
completedPhases: 7
}
Modul-spezifische Tabellen (wie lg_contracts_log) zusätzlich für tiefere
Analyse — aber assessments ist der Haupt-Hook, auf den das
Lehrer-Dashboard zugreift.
6.5 End-Screen-Buttons
Siehe §3.5 — immer dieselben drei: Cockpit / Neu / Auswertung.
6.6 Sprachregel + Leichte Sprache
- Sprachregel 4a (keine „Spiel/Spieler"-Wörter) — Pflicht
- Leichte Sprache via
pickText({standard, easy})— Pflicht bei UI-Kernelementen - easy-Flag kommt aus
students.easy_language→ per Wrapper an Modul durchgereicht
6.7 Lehrplan-Anker
- Modul muss in
kompetenz_modulesmit den Kompetenzen verknüpft sein, die es trainiert - Kompetenz-Anker in
lehrplan_anchorsmüssen für mindestens AT vorliegen - Modul kann über
/api/dashboard.php?module_id=X&country=ATAnker abrufen und im Didaktikfenster zeigen
7. Gaps — was heute fehlt
7.1 Cockpit (sim.html)
- Aktuell: Platzhalter-Modul-Auswahl, teilweise mit falschen Links
- Fehlt: echte Anbindung an
/api/modules?student=1, korrekte Routing je mode, Fortschritts-Badges
7.2 Lehrer-Dashboard
- Aktuell: „Klasse 1A — Übersicht" steht, aber meiste Tabs sind Mockup
- Fehlt: Modul-Steuerungs-Matrix live-bindend, Live-Impuls-Button, Auswertungs-Tab komplett
7.3 Modul-Wrapper (alle Module uneinheitlich)
- Klima, Heli, Fluss, Logistik haben jeweils eigene Start-Patterns
- Pflicht-Umstellung: alle müssen auf den einheitlichen Level-Start + mode-check wechseln
- Logistik ist am weitesten, kann Vorbild werden
7.4 Lehrplan-Anker pro Modul (teilweise da)
- AT: 78 Anker, gut verteilt, aber für Logistik komplett fehlend (weil neues Modul)
- Logistik-Kompetenzen-JSON existiert als
App/sims/logistik/kompetenzen.json— muss ins DB-Format übertragen werden (via Lehrplan-Instanz)
7.5 Assessment-Anbindung pro Modul
- Aktuell:
assessments-Tabelle leer auf allen Instanzen (lokal + prod) - Fehlt: jedes Modul ruft
/api/assessment.phpauf (bei Start, alle 30 s, am Ende)
7.6 Pre/Post-Quiz-Infrastruktur
- Aktuell: Tabelle
assessment_answersexistiert, UI-Komponente fehlt - Fehlt: wiederverwendbarer Mini-Quiz-Dialog als Design-System-Komponente
7.7 Kaputte Links
- Landing-Cards zeigen teilweise auf
App/modul-Xstatt/modul-X(dank BASE_PATH-Umbiegung funktionierts zufällig) - Einige
.html-Direkt-Links werden ignoriert weil Front-Controller-Routing - Lehrplan-Link in Logistik zeigt auf leere Kompetenz-Anzeige (Gap 7.4)
- „Zurück"-Buttons in einigen Modulen führen nach Landing statt Cockpit
8. Phasenplan für die Umsetzung
Phase A — Fundament (Atlas, 1 Tag)
- Cockpit (
sim.html) mit echter Modul-API-Bindung - Lehrer-Dashboard Modul-Steuerungs-Matrix live-bindend
- Link-Audit: alle Navigation-Endpunkte prüfen + fixen
- Einheitliche End-Screen-Komponente im Design-System (
.ggs-endscreen)
Phase B — Module einheitlich machen (alle Modul-Instanzen parallel, 2-3 Tage)
- Jede Modul-Instanz zieht auf das §6-Interface um
- Konkrete Aufträge:
- Klima (Klima-Instanz): Level-Start mit mode-check, Assessment-Calls
- Heli (Heli-Instanz): Level-Start + Phasen-Meldung; dazu Mission-Bilder abschließen
- Fluss (Fluss-Instanz): Level-Start + Assessment-Calls, Phase 2 weitermachen
- Logistik (Logistik-Instanz): bereits am nächsten dran, letzte Verfeinerungen
- Lehrplan-Instanz: Logistik-Kompetenzen und -Anker in DB übertragen
Phase C — Auswertung (Atlas, 1-2 Tage)
- Lehrer-Dashboard Tab „Auswertung" pro Modul
- Pre/Post-Quiz-Komponente im Design-System
- Drill-Down-Ansichten einzelner Schüler-Sessions
Phase D — Autodidakt-Flow (Atlas, 0,5 Tag)
- Landing-Seite „Sofort probieren" ohne Login-Redirect
- Session-Transfer wenn Autodidakt sich doch einloggt (Nice-to-have, kann später)
Phase E — Feinschliff (alle, 1 Tag)
- Sprachregel-Durchlauf durch alle UIs
- Leichte-Sprache-Durchlauf durch alle UIs
- Browser-Test auf iPad
- Deploy auf Prod
Gesamt: ~5-7 Arbeitstage, verteilt auf alle Instanzen + Atlas. Nicht linear, vieles parallelisierbar.
9. Konkrete Aufträge, die aus diesem Konzept entstehen
An Lehrplan-Instanz
- Logistik-Lehrplan-Anker anlegen: aus
App/sims/logistik/kompetenzen.jsondie 23 Anker inlehrplan_anchorsübertragen, mit AT-Fokus (Vorschläge: „GW Sek I: Europa-Wirtschaftsräume", „Verkehrs- und Güterströme Europas") - Modul-Klima-Toggle (alte Anfrage, immer noch offen): 2D/3D-Launcher auf
modul-klima.php
An Klima-Instanz
- Level-Start auf Standard-Pattern umstellen: mode-check + Pre-Quiz-Hook
- Assessment-Calls einbauen: start, 30s-Ping, end
- End-Screen auf neue
.ggs-endscreen-Komponente umstellen (kommt aus Phase A)
An Heli-Instanz
- Level-Start vereinheitlichen — Aktuell hat Heli eigenes Auftrag-Wahl-Muster; muss auf „Vom Lehrer gestartet" + „Frei wählbar" reagieren
- Mission-Bilder abschließen (offen seit langem)
- Assessment-Calls einbauen
An Fluss-Instanz
- Level-Start vereinheitlichen
- Phase 2 (Spiellogik-Port) weiter
- Assessment-Calls einbauen
An Logistik-Instanz
- admin-fields.json liefern (aus Phase-7-Entscheidung, steht in Inbox)
- Phase 7b Rest: API-Endpunkte + Analytics-Logging (läuft)
- Endscreen-Adaption wenn
.ggs-endscreenda ist
An Glossar-Instanz
- 13 Logistik-Begriffe liefern (Erinnerung, Anfrage seit 3 Tagen)
- Hafen, Luftlinie auf Doppelnutzung prüfen
An Atlas (selbst)
- Phase A, C, D — im Phasenplan eingeteilt
.ggs-endscreen-Komponente im Design-System- Link-Audit
- Konzept mit Thomas abstimmen, committen, dann umsetzen
10. Entscheidungen (von Thomas, 2026-04-23)
- Autodidakt: existiert nicht als eigene Rolle. Landing hat „Sofort probieren" als flüchtige Demo ohne Persistenz.
- Live-Impuls: 5-Sekunden-Polling (robust, ausreichend).
- Pre/Post-Quiz: optional, von Lehrkraft pro Modul aktivierbar. Aktivierter Quiz erscheint im Schüler-Cockpit als „Auftrag" (mit Deadline, wenn gesetzt). Schüler*in kann ihn im Cockpit starten.
- Link-Audit: nach Phase B (wenn Module sowieso umgebaut werden — viele Links richten sich durch das neue Interface von selbst).
- Phasen: A und B parallel, C nach deren Abschluss.
11. Grundsätze, die das Konzept trägt
- Einheitlichkeit vor Komfort: lieber ein Modul auf Standard umbauen als Sonderlocke pflegen
- Datenfluss einfach: Schüler →
assessments+game_saves→ Lehrer-Dashboard - Progressive Enhancement: auch Offline-/Autodidakt-Modus funktioniert
- Plattform-Invarianten (Cockpit, End-Screen, Level-Start) werden von Atlas gebaut, Module nutzen sie
- Keine KI im Produkt (bestehende Regel) — Auswertungen parametrisch
- Sprachregel 4a (keine Spielsprache) durchgezogen
- Produktions-User bewahren — bei jedem Deploy Zeilenzahlen verifizieren
Ende des Konzept-Dokuments. Thomas: bitte die fünf offenen Entscheidungen in §10 beantworten, dann generiert Atlas die konkreten Inbox-Aufträge an die Instanzen.