--- instanz: atlas zuletzt_aktualisiert: 2026-05-07 23:50 session_id: live-view-feature-und-submit-fixes --- # Atlas — aktueller Stand (Übergabe an nächste Session) ## Ich bin Atlas Plattform-Zentrale für GeoGraSim. Working Directory: `c:/xampp/htdocs/geograsim/` (ohne Modul-Subordner). Erkenne dich beim Recovery an: Bearbeitung von `App/pages/`, `App/teacher.html`, `App/schueler.html`, `App/php/api/`, `module_info`-DB, `App/Don_t_Deploy/deploy.sh`. Modul-Instanzen arbeiten in `App/sims//`-Subworkspaces. ## Was in den letzten 3 Tagen passiert ist ### 2026-05-04 (Recovery + drei große Plattform-Features) 1. **Crash-Recovery durchgelaufen** — Inbox + Memory gelesen, Rundmail an alle 11 Sim-Instanzen verteilt. Antworten kamen von Farmer + Energiemanager + Glossar. 2. **User Jakob + 3 Test-Schüler*innen angelegt** (lokal + Live): - Lehrer: `jakob` / `hoppala3355!` (Live-ID 106) - Klasse: „Jakob 1" (25/26), Join-Code `JAKOB1` (Live-ID 106) - Schüler: Alexom (PIN 3322, Lizenz `S8XG-6J9C-ME9N-2026`), Berturam (PIN 7788), Sussama (PIN 9991) - SQL-Migration: `App/Don_t_Deploy/2026-05-04-jakob-3schueler-anlegen.sql` 3. **Avatar-Default umgestellt** — neue Schüler*innen kriegen jetzt automatisch einen zufälligen DALL-E-Avatar aus 30 Slugs (statt Emoji `🧑‍🎓`). Code: `students.php` → `ggs_random_avatar_slug()`. UI-Bug in `teacher.html:1208` (Slug als Text statt Bild) gefixt. ### 2026-05-04 / 05 (Drei große Bugs gefunden + gefixt) 1. **Submit-Bug in progress.php**: Klima sendet `action: 'submit_assessment'`, Server kannte nur `complete`/`answer`/`wirkung` → Rückläufe verworfen. Jetzt Handler dafür drin (auch für `submit_assessment` mit nested `data:{stars,score,duration_ms,…}`). 2. **Save-API-Mismatch**: Klima sendet `save_key`/`save_data`, `saves.php` erwartete `key`/`data`. Beide Schreibweisen werden jetzt akzeptiert. 3. **Direkt-Pfad-Pfad-PHP-Files ohne require_once**: progress.php / saves.php / modules.php / live.php hatten keine `require_once` für Database/Session/Response — funktionierten nur über den index.php- Router. Klima ruft `/php/api/progress.php` aber direkt → Fatal Error. Gefixt mit `require_once`-Bootstrap-Block in allen 4 API-Files. 4. **OPcache-Lehre**: `docker exec webstack-php php -r 'opcache_reset();'` greift nicht für Apache (mod_php). **Immer `apachectl -k graceful`** nach Code-Deploy. Memory: `feedback_apache_opcache.md`. ### 2026-05-05 (Live-View-Feature) 1. **DB-Migration**: `class_modules.paused` (TINYINT) + neue Tabelle `live_sessions(student_id PK, class_id, module_id, state_json, started_at, last_seen)`. 2. **Neuer API-Endpoint** `App/php/api/live.php`: - POST `{action:'heartbeat', module_id, state}` (Schüler-Sim, ~4 s) - GET `?class_id=X` (Lehrer: aktive Sessions in Klasse) - GET `?student_id=X` (Spectator: state eines Schülers) 3. **Plattform-Live-Client** `App/assets/js/live-client.js`: - Heartbeat alle 4 s - Pause-Polling alle 5 s → Vollbild-Overlay „⏸ Auftrag pausiert" - Spectator-Mode bei `?view=teacher` → Input disabled, Banner oben 4. **Helper-Funktion** `ggs_inject_live($html, $simId)` in `App/php/templates/_scripts.php` — alle Sim-Wrapper rufen das vor `echo $html;` auf. Pattern: 1 Zeile pro Wrapper, idempotent. 5. **Lehrer-Cockpit** Tab `🟢 Live`: - Tabellarische Klassenliste pro Modul - State-Spalten dynamisch aus dem state-JSON - `LIVE_PRIMARY_FIELDS.` als Schema-Override pro Sim - Klick auf Zeile öffnet Inline-Modal (Spectator) — kein 404 mehr - **Tab-Indikator pulsiert grün, sobald ≥ 1 Session aktiv** (10 s Background-Polling, läuft auch auf anderen Tabs) 6. **Sim-Eingriff in Klima 2D + 3D**: - `window.GGS_LIVE_STATE` in beiden game.html (state-Snapshot) - `skipResume`-Flag in `klima-2d.php` Wrapper (bei aktivem unerledigtem Lehrer-Auftrag → localStorage löschen + frisch starten) 7. **Modul-Auftrags-UI in teacher.html**: - Klick auf „🚀 Klassen-Mode" → Modal mit Level (1/2/3) + Endet-am + ⏸ Tempo-Sperre - Pause-Button auf Modul-Card sichtbar wenn Auftrag aktiv - Auftrags-Mode wird automatisch ausgeblendet, wenn ein assessment- Eintrag mit `submitted_at > class_modules.started_at` existiert (Auftrag erledigt → wandert in reguläre Modul-Liste) ### 2026-05-05 / 06 (Briefe an Sim-Instanzen) - 11 Sim-Inboxen haben Briefe für `GGS_LIVE_STATE` bekommen (Vergleichstabellen-Schema). Antworten: - **Farmer** ✓ eingebaut (`game.html` + zentrale-Antwort 11:00) - **Energiemanager** ✓ eingebaut (zentrale-Antwort 04:24) - Klima 2D + 3D ✓ (selbst von Atlas eingebaut) - Rest noch offen: Fluss, Heli, Logistik, EU-Werkstatt, Sonnensystem, Busfahrt, Entscheidungstag, Staustufen - 3 Briefe an Sims **ohne Submit-Pfad** geschickt: Sonnensystem, Busfahrt, Energiemanager — sie machen aktuell GAR KEINE API-Calls für Submit. Heli + Logistik haben eigene Pfade (nicht geprüft, kann sein dass die mit der Plattform-Auswertung nicht voll kompatibel sind). ### 2026-05-04 (zwei Glossar-Inbox-Mails an Glossar-Instanz) - Anfrage zu „Grundriess(er)"-Eintrag (Klima-Sim grüne Häuser/Bewohner) - Glossar-Instanz hat zusätzlich die Memory-Files `reference_design_tokens.md` + `reference_avatar_slugs.md` neu angelegt — Atlas-Memory wurde von Glossar mitgepflegt. ### 2026-05-06 (Admin-Styleguide-Seite) - Neue Seite `App/admin-styleguide.html` mit: - DALL-E-Prompt-Block (Copy-Button) - Bild-Farbpalette (5 Hex, Klick-zum-Kopieren) - UI-Farbtokens (22 CSS-Variablen, gruppiert) - Layout / Spacing / Typo-Tabellen - Bildformate / Pfade / 30 Avatar-Slugs - iPad-Patterns, Sprache (Lernarbeit-Lexikon) - Verlinkt aus `admin-licenses.html` / `admin-modules.html` / `admin-levels.html` Topbar als „🎨 Styleguide". - Auth-Check über `/api/admin?action=status`. ## Live-Status der Plattform - Server: `geograsim.at` / `staatsgeheimnis.at/geograsim/` - DB-Stand kompatibel (Live hat keine `country`-Spalte in `teachers`/`classes`, Migrations entsprechend angepasst) - Apache reload nach Deploy: `docker exec webstack-php apachectl -k graceful` - Server-Doppelstruktur: bei Deploy IMMER `App//` UND Top-Level `/` spiegeln. Pattern aus `deploy.sh` übernehmen. - 9 reale Lehrer-Accounts auf Live (siehe `reference_prod_user_bewahren.md`) + 1 neuer Test-Lehrer Jakob. ## Offen / Nächste Schritte 1. **Save-Cleanup bei Spielende** — Thomas hat den Bug gemeldet (Klima 3D resumed nach Game-Over aus altem Stand). Konzept liegt vor (Save bei Endscreen löschen + tryResume-Endphase-Check), aber **noch nicht implementiert** — Thomas hat „mach selbst" oder „in die Klima-Inbox" noch nicht entschieden. 2. **Antworten der 7 noch offenen Sim-Instanzen** abwarten (Live-State + Submit-Briefe). Bei Antwort `LIVE_PRIMARY_FIELDS.`-Schema in `teacher.html` eintragen. 3. **Glossar „Grundriess(er)"** — wartet auf Glossar-Antwort, was der Begriff genau ist. 4. **Lehrer-View für Reflexionen** — `assessments.reflections` werden seit 2026-05-05 gespeichert (progress.php hat reflection-Handler), aber im „Ergebnisse"-Tab gibt es noch keine Anzeige. Thomas hat das offen gelassen („Sag Bescheid"). 5. **Sonstiges Memory-TODOs** — Marktplatz-Auth, VS-Code-Workspaces, V2-Deployment-Plan (alles wartet auf Thomas-Kommando). ## Wenn Thomas dich morgen reaktiviert ``` Lies: C:/Users/herr_/.claude/projects/c--xampp-htdocs-geograsim/memory/MEMORY.md App/sims/_inbox/zentrale/_status.md ← diese Datei App/sims/_inbox/zentrale/ (neueste 5–10 Mails) Dann melde dich mit Stand und Frage was als nächstes ansteht. ``` Antworte zu Beginn mit: **„Hier Atlas. Stand vom 2026-05-07: Live-View läuft, Save-Cleanup bei Spielende ist noch offen, …"** — Atlas, 2026-05-07 23:50