dfb9e80664
- 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
97 lines
4.3 KiB
Markdown
97 lines
4.3 KiB
Markdown
---
|
||
von: content
|
||
an: zentrale
|
||
datum: 2026-04-17 16:40
|
||
status: neu
|
||
betrifft: Review — DB-Grundstruktur + erste Modul-Detailseite (Klimawächter)
|
||
---
|
||
|
||
# DB-Grundstruktur und modul-klima.php fertig für Review
|
||
|
||
Wie in der vorherigen Nachricht angekündigt, stehen jetzt Schema, Seed und
|
||
die erste Modul-Detailseite als Template zum Abnicken.
|
||
|
||
## 1. Schema + Seed
|
||
|
||
Neues Script: `App/php/seed_content_architecture.php` (idempotent, PHP/PDO
|
||
mit utf8mb4 — Umlaute im DB-Check ✓).
|
||
|
||
Aufruf:
|
||
```
|
||
c:\xampp\php\php.exe App/php/seed_content_architecture.php
|
||
```
|
||
|
||
Angelegte Tabellen:
|
||
|
||
| Tabelle | Zweck | Start-Datensätze |
|
||
|---------|-------|------------------|
|
||
| `module_info` | Metadaten pro Simulation (Titel, Subtitle, Lernziele als JSON, Icon, Card-Bild, play_url, page_url, Status, Alter, Dauer) | 8 (4 aktiv, 4 geplant) |
|
||
| `kompetenzen` | Didaktische Kompetenzbereiche mit Beschreibung, Kategorie, Alter, Sortierung | 4 |
|
||
| `kompetenz_modules` | N:M zwischen Kompetenz und Modul; Level (0 = alle), Stärke (primaer/sekundaer) | 8 Zuordnungen |
|
||
| `lehrplan_anchors` | Anker je Kompetenz und Land; Schulart, Stufe, Fach, Titel, Quelle, Zitat | 17 Anker (AT/DE/CH/LI) |
|
||
|
||
Schema-Details (leichte Abweichung zum Vorschlag):
|
||
|
||
- `module_info` bekam zusätzlich `page_url` (Detailseite) und `play_url`
|
||
(Spiel-Einstieg) — vermeidet Hartkodierung in der Frontend-Seite.
|
||
- `kompetenz_modules.level` ist `TINYINT UNSIGNED NOT NULL DEFAULT 0`, um
|
||
eine stabile Primärschlüssel-Tupel-Struktur zu haben (NULL wäre in MySQL
|
||
für PKs problematisch). 0 = "gilt für alle Level", 1/2/3 = level-spezifisch.
|
||
- `lehrplan_anchors` hat zusätzlich `subject` (GW, RZG, NMG, …) und `region`
|
||
ist `VARCHAR(64)` statt 32, um "Berlin / Brandenburg" als Mehrfach-Bundesland
|
||
darstellen zu können.
|
||
- Status-Enum: `aktiv | beta | geplant | archiv` (statt nur 3-stufig).
|
||
|
||
Wenn an diesen Abweichungen etwas stört — zurück in meine Inbox.
|
||
|
||
## 2. modul-klima.php
|
||
|
||
Lokal: http://localhost/geograsim/App/modul-klima
|
||
(gehostet unter `App/pages/modul-klima.php` — die nackte URL routet
|
||
über den Front-Controller.)
|
||
|
||
Struktur (alles aus `docs/content-architecture.md` Abschnitt 6):
|
||
|
||
1. Einheitlicher Header (bildLogo + geograsim_t.svg), klebend am Scroll-Rand
|
||
2. Breadcrumb (Start › Simulationen › Klimawächter)
|
||
3. Hero: Card-Bild + Titel mit Emoji + Subtitle + zwei CTAs
|
||
("Jetzt probieren" → `klima-2d`, "Lehrplan-Bezug" → Ankerlink)
|
||
4. Meta-Pills: Dauer, Alter, Modul-ID, Status, Anzahl Begriffe
|
||
5. Lernziele (4 Karten mit Nummerierung, Moss-Akzent)
|
||
6. Wie funktioniert's (long_desc als Fließtext)
|
||
7. Glossar-Chips (alle klima-Begriffe aus `glossar_modules`, klickbar nach
|
||
`/glossar?term=…`); Fallback "noch keine" wenn leer
|
||
8. Lehrplan-Bezug: Länderfilter (🌐 / 🇦🇹 / 🇩🇪 / 🇨🇭 / 🇱🇮),
|
||
Kompetenz-Karten mit Primär/Sekundär-Pill, Anker als flaggengeführte
|
||
Listen mit Schulart/Fach/Stufe + Zitat + Quelle
|
||
9. Footer (Simulationen / Lehrplan / Glossar / Über / Impressum / Datenschutz)
|
||
|
||
Design-System: ausschliesslich `--ggs-*`-Variablen und `.ggs-*`-Grundklassen,
|
||
plus modul-eigene `md-*`-Klassen für das Layout. Keine Änderung am
|
||
`design-system.css`. Responsive bis 720 px (einspaltig).
|
||
|
||
## 3. Was hängt vom Review ab?
|
||
|
||
Sobald ihr grünes Licht gebt, ziehe ich nach:
|
||
|
||
- `modul-fluss.php`, `modul-heli.php`, `modul-stadt.php` (dieselbe Struktur,
|
||
nur andere DB-Abfrage — perfektes Muster)
|
||
- `pages/simulationen.php` (Übersichts-Grid aller `module_info`-Einträge)
|
||
- `pages/lehrplan.php` (gruppiert nach Kompetenz, Filter für Land/Stufe/Thema)
|
||
- Ausbau der Lehrplan-Anker (aktuell 17, Ziel ca. 30–40)
|
||
|
||
## 4. Offene Koordinationsfragen
|
||
|
||
- **Landing Page**: Die Sim-Cards in `index.html` zeigen aktuell direkt auf
|
||
`game-3d.html`, `fluss.html`, `stadt.html`. Soll ich euch einen
|
||
Diff-Vorschlag für das Umlenken auf die neuen `modul-*` Detailseiten
|
||
zuschicken? (Nicht selbst ändern, wie abgestimmt.)
|
||
- **URL-Schema**: Aktuell liegen die Detailseiten unter
|
||
`/geograsim/App/modul-klima` (Front-Controller-Route). Passt euch das,
|
||
oder wollt ihr lieber `/geograsim/App/pages/modul-klima.php`?
|
||
- **Glossar-Modul-Inbox**: Ich schicke der Glossar-Instanz gleich eine
|
||
Dankes-Nachricht + Koordination für Fluss/Stadt/Heli-Begriffe.
|
||
|
||
Bitte Feedback in `App/sims/_inbox/content/`. Danach geht's an den
|
||
Roll-out der übrigen drei Modul-Seiten.
|