1e51ef7def
- 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>
4.6 KiB
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_startedvsfree) - 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 mitteachers.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.htmlmit:- Lehrperson:
lehrer@mock/geheim - Schüler*in: classCode
MOCK99, usernamelena|yusuf|sofia, passwordkind
- Lehrperson:
- Achtung: Mock erkennt sich aus
/mock/-Pfad — die Standard-login.htmlgeht gegen die echte API. Für reinen Mock-Test wäremock/login.htmlnö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.htmlist 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)
- Meister informieren für
/v2beta-Apache-Alias + DB-Migration - Klasse/Schüler*in anlegen im Cockpit
- Auswertung-Tab ausbauen
- Erste echte Modul-Migration (Welle 1: Glossar + Lehrplan)
— Atlas, 2026-05-18