Klima: Engine extrahiert + 2D refactored + Drama-Track + Bugfixes

- engine.js als headless Single Source of Truth (KlimaEngine)
- game-2d.html nutzt engine (-515 Zeilen Duplikation)
- rising-pressure.mp3 als Drama-Slot, Auto-Switch bei kritischem State
- state.animMs: alle Animationen bei Pause eingefroren, Speed skaliert
- Pro-Haus-Schornstein-Abbau je nach Erneuerbaren-Anteil
- Bugfix: Bürger-Dialog überlebt Refresh via pendingCitizenEventId
- Toast-Viewport volle Canvas-Breite, Musik-Default 22 %
- _status.md Konvention eingeführt, Inbox-Nachrichten erhalten
This commit is contained in:
2026-04-18 23:50:17 +02:00
parent b2721d759c
commit dfb9e80664
91 changed files with 9034 additions and 0 deletions
@@ -0,0 +1,57 @@
---
von: content
an: zentrale
datum: 2026-04-17 16:00
status: neu
betrifft: Start Content-Instanz — Schema-Plan und erste Modul-Detailseite
---
# Kurze Anmeldung + Schema-Plan
Die Content-Instanz ist aktiv und arbeitet am Auftrag aus
`App/docs/content-architecture.md` (Modul-Detailseiten, Lehrplan, Simulationen-
Übersicht, DB-Tabellen).
## Schema, das ich anlegen will
Direkt wie in `content-architecture.md` Abschnitt 3 beschrieben, mit zwei
Feinjustierungen:
1. **`module_info.module_id`**: `VARCHAR(16)` wie vorgeschlagen. IDs: `klima`,
`fluss`, `heli`, `stadt`, `regenwald`, `erdbeben`, `energiemix`,
`lieferketten`. Entspricht den Link-Slugs aus `index.html` und `__GGS__.simId`.
2. **`kompetenz_modules.level`**: `TINYINT UNSIGNED NULL` — NULL bedeutet
"alle Level dieses Moduls", konkrete Zahl heißt "nur dieses Level". PK
ergänzt um Behandlung des NULL-Falles (UNIQUE via `COALESCE` im Trigger
oder einfach: wenn `level IS NULL`, setzen wir PK über `(kompetenz_id,
module_id, 0)` und reservieren 0 für "alle").
3. **Alle Tabellen** werden über ein idempotentes PHP-Script `App/php/seed_
content_architecture.php` angelegt (CREATE TABLE IF NOT EXISTS + Upserts),
analog zum Muster der Glossar-Instanz. Keine mysql.exe-Pfade wegen
Umlauten.
## Initial-Datensatz, den ich parallel befülle
- `module_info`: Alle 4 aktiven + 4 geplanten Module mit Kurz-Metadaten
(Titel, Subtitle, Status, Duration, Alter, Emoji, Card-Image).
- `kompetenzen`: Start mit 4 Kompetenzbereichen (Klimawandel,
Naturgefahren/Hochwasser, Alpine Geografie/Navigation, Stadtplanung) —
erweiterbar.
- `kompetenz_modules`: Zuordnung der 4 Kompetenzen zu den passenden Modulen.
- `lehrplan_anchors`: Pro Kompetenz 35 recherchierte Anker aus AT/DE/CH/LI
(Lehrplan 21, BMBWF-Lehrpläne 2023, KMK-Bildungsstandards, LiLe). Prinzip
"weniger Tiefe, mehr Breite" wie in Abschnitt 5 der Spezifikation.
## Erster Liefergegenstand für Review
- `modul-klima.php` als Template-Detailseite (Hero, Was lernst du, Wie
funktioniert's, Begriffe aus Glossar-API, Lehrplan-Bezug mit Länder-
Filtern, Footer).
- Nutzt ausschließlich Design-System-Variablen und -Komponenten.
- Datenquelle: `glossar`-API (für Begriffe) + neue `module_info`/`kompetenzen`/
`lehrplan_anchors`-Tabellen.
- URL: `http://localhost/geograsim/App/modul-klima` via Front-Controller.
Wenn kein Veto bis zur Fertigstellung, fahre ich mit den übrigen Modulseiten,
`lehrplan.php` und `simulationen.php` fort. Bitte bei Abweichung zurückmelden
in `App/sims/_inbox/content/`.