Files
geograsim/STATUS-2026-05-18-V2-COCKPIT.md
Adminator 1e51ef7def Nachtrag: alle bisher untracked Ordner + hängende Änderungen mit-committen
- 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>
2026-07-08 02:27:02 +02:00

4.6 KiB

V2-Cockpit + Login — 2026-05-18

Großer Brocken durch. V2 ist jetzt eine vollständige Mini-Anwendung mit Login, Schüler-Cockpit, Lehrperson-Cockpit, Admin-Config — und der ganzen API-Schicht dahinter.

Was du jetzt hast

Login

  • v2-platform/login.html — Login mit Tab-Wechsel Lehrperson / Schüler*in
  • JWT-Token wird in localStorage gespeichert (Key ggs_v2_session)
  • Bei Token-Ablauf: Auto-Redirect zur Login-Seite
  • auth-client.js als zentraler Fetch-Wrapper für alle Cockpit-Seiten

Schüler-Cockpit (schueler.html)

  • Profil-Header mit Avatar
  • Sektion „📌 Aktuelle Aufträge" — Module die die Lehrperson zugewiesen hat (mit fixer Difficulty)
  • Sektion „🎯 Freies Arbeiten" — generell freigegebene Module (Schüler*in wählt Difficulty aus levelUnlocks)
  • Klick auf Modul-Card → öffnet Modul mit Token-URL-Param + Mode (teacher_started vs free)
  • A11y-Profil-Settings werden auf <body> gespiegelt (data-high-contrast, data-reduced-motion, data-text-scale)

Lehrperson-Cockpit (teacher.html)

4 Tabs:

  • 📡 Live — Polling-Dashboard alle 3s, Karten pro Schüler*in mit Phase / Score-Bar / Stuck-Indikator / Nachteilsausgleich-Markierung
  • 👥 Schüler*innen — Tabelle mit Avatar, Name, Toggle-Boxen für Easy-Sprache, Hoher Kontrast, Reduced Motion, Screen-Reader, Nachteilsausgleich — Auto-Save bei Klick
  • 📌 Aufträge — bestehende Aufträge mit „Beenden"-Button + „+ Neuer Auftrag"-Modal (Modul + Difficulty wählen)
  • 📊 Auswertung — Placeholder, „kommt in späterer V2-Iteration"

Admin-Config (admin-config.html)

  • Nur für role=admin (Lehrperson mit teachers.is_admin = 1)
  • Tuning-Inputs für Plattform-Werte: Heartbeat-Intervall (min/max), Stuck-Schwellwert, Token-TTL, Refresh-Fenster
  • Auto-Save bei Eingabe (mit 800ms-Debounce)
  • Range-Check serverseitig

Neue API-Endpoints

Endpoint Methode Zweck
/api/auth/login POST Login Lehrperson + Schüler*in
/api/auth/refresh POST Token erneuern
/api/auth/logout POST activity_log, sonst stateless
/api/modules/available GET Schüler*in: Aufträge + freie Module
/api/modules/all GET Liste aller V2-Module für Auftrags-Dropdown
/api/teacher/classes GET Klassen der Lehrperson
/api/teacher/students GET / PATCH Schüler-Liste + Toggle-Updates
/api/teacher/assignments GET / POST / DELETE Aufträge verwalten
/api/teacher/live-status GET Polling-Endpoint für Live-Dashboard
/api/admin/platform-config GET / PATCH Plattform-Tuning

Alle Endpoints haben Mock-Pendants in v2-platform/mock/api/....

Test (lokal)

Voraussetzung: DB-Migration einspielen (war bisher nur als File da):

mysql -u root geograsim < v2-platform/db/init.sql

Dann gegen die echte API:

  • http://localhost/geograsim/v2-platform/ → Login mit deinen V1-Lehrperson-Credentials
  • Schüler-Login mit Klassencode + username + passwort aus V1

Oder gegen die Mock-API (DB-frei):

  • http://localhost/geograsim/v2-platform/login.html mit:
    • Lehrperson: lehrer@mock / geheim
    • Schüler*in: classCode MOCK99, username lena|yusuf|sofia, password kind
  • Achtung: Mock erkennt sich aus /mock/-Pfad — die Standard-login.html geht gegen die echte API. Für reinen Mock-Test wäre mock/login.html nötig (TODO).

Was NICHT da ist

  • Klasse / Schüler*in anlegen im Cockpit (heute nur sehen/editieren)
  • Auswertung-Tab — Placeholder
  • CSV-Export — TODO
  • Lehrperson-Registrierung (V1-Pattern weiter nutzen, V2-Variante später)
  • Passwort-Reset-Flow (V1-Endpunkt weiter nutzen, V2-Variante später)

Was du beachten musst

  • Token im localStorage: bei XSS-Angriff kompromittierbar. Plattform-Code ist sauber, kein eval, keine dangerouslySetInnerHTML — aber langfristig HttpOnly-Cookie sicherer (kann später eingeführt werden)
  • Polling alle 3s: bei 25 parallelen Lehrperson-Sessions = 8 Req/s. Verkraftbar, aber wenn die Last hoch wird → SSE oder WebSocket-Upgrade
  • Modul-URL-Pfad ../v2-modules/<slug>/public/game.html ist relativ zur Cockpit-URL. Im echten /v2beta/-Deployment muss das auf den richtigen Apache-Alias zeigen — bei Meister-Setup mitdenken

Nächste sinnvolle Brocken (aus dem Reststapel)

  1. Meister informieren für /v2beta-Apache-Alias + DB-Migration
  2. Klasse/Schüler*in anlegen im Cockpit
  3. Auswertung-Tab ausbauen
  4. Erste echte Modul-Migration (Welle 1: Glossar + Lehrplan)

— Atlas, 2026-05-18