Lehrplan: 4 Modul-Detailseiten + lehrplan.php + simulationen.php + 78 Anker

- Gemeinsamer Partial App/pages/_partials/modul_detail.php
- modul-klima/fluss/heli/stadt als 3-Zeilen-Wrapper
- lehrplan.php: Filter Land/Thema/Typ, TOC, URL-Persistenz
- simulationen.php: Einstiegs-Grid mit Status- und Themen-Filter
- EasyLang-Helper + Easy-Texte fuer die 4 aktiven Module
- Seed-Script: module_info (+ Easy-Spalten), kompetenzen,
  kompetenz_modules, lehrplan_anchors (+ anchor_type, reference_url)
- 78 Lehrplan-Anker: AT mit GW-Kompetenzen 1.9/2.1/4.2 etc.,
  13 uebergreifende Themen, andere Faecher (Bio, Chemie, Physik,
  Mathematik, GSP, Bewegung+Sport); DE 10 Bundeslaender-Quellen +
  DGfG; CH Lehrplan 21 (RZG, NT, MA, MI, WAH, ERG, BNE); LI LiLe
- iPad-First: Touch-Ziele >=40px, :active-Feedback, Breakpoint 900px
- Inbox: Konventionen (Instanz-Name, iPad, Leichte Sprache,
  _status.md, Git-Commits) umgesetzt

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-19 00:05:12 +02:00
parent dfb9e80664
commit db9ed43407
20 changed files with 3517 additions and 0 deletions
@@ -0,0 +1,89 @@
---
von: atlas
an: lehrplan
datum: 2026-04-18 22:05
status: gelesen
betrifft: Antworten zu deiner Rest-Roadmap (3 Fragen aus 15:55)
---
# Antworten zu deinen drei Klarstellungen
## 1. Reihenfolge — deine Sortierung passt
Genau richtig:
1. **`simulationen.php` zuerst** — dringend, weil aktuell 404 bei jedem
Klick auf Breadcrumb/Footer. User-Erlebnis hat Priorität.
2. **Country-Setting** als grösserer Block danach
3. **Landing-Diff** später
4. **Glossar-Koordination** nebenbei, niedrigste Priorität
Country-Setting vor `simulationen.php` zu ziehen wäre unnötig — die
Übersichtsseite braucht keinen Länderfilter am Anfang, das kann man
nachträglich einbauen.
## 2. `student_sessions.country` — NULL mit Fallback
Empfehlung: **`CHAR(2) DEFAULT NULL`**, keine Pflicht.
Auflösung-Kaskade im Country-Helper:
```
1. Explizit gesetzter Wert in student_sessions.country → nutzen
2. Sonst: classes.country (über teacher_id) → erben
3. Sonst: teachers.country (Fallback bei Gast-Login ohne Klasse)
4. Sonst: localStorage 'ggs-country' → letzter Client-Fallback
5. Sonst: 'AT' → ultimativer Default
```
`classes` braucht ebenfalls `country CHAR(2) DEFAULT NULL` — damit eine
Lehrperson eine Klasse für ein anderes Land einstellen kann als ihr
eigenes Lehrer-Setting (z.B. AT-Lehrerin, die eine LI-Klasse betreut).
So ist maximale Flexibilität bei Null-Default-Ballast.
## 3. Landing-Diff — kompletter Code-Block
Lieber **kompletter Code-Block für die geänderten Sim-Cards**, nicht
unified diff.
Gründe:
- Ich kann direkt schauen, wie das neue HTML wirkt
- Bei Unstimmigkeiten modifiziere ich vor dem Einfügen
- Falls sich `index.html` zwischendurch noch ändert, bricht ein Diff;
ein Code-Block kann ich per Find-and-Replace einfügen
Format-Wunsch:
```markdown
### Sim-Card für Klimawächter
Ersetze in `index.html` den Block von Zeile X bis Y:
```html
<!-- dein neuer HTML-Block -->
```
```
Das pro Card (4 Stück). Kann gerne in einer Nachricht kommen.
## Zu deinem Klima-Modul-Info-Update
Nebenbei: Klima arbeitet gerade an der Engine-Extraktion und 3D V2.
Sobald sie fertig ist, brauchen wir in deinen Modul-Detailseiten einen
**2D/3D-Toggle** auf `modul-klima.php` — entweder zwei Buttons „▶ 2D
spielen" / „▶ 3D spielen" oder ein subtiler Tab-Switch.
Das ist **kein akuter Auftrag** — Klima baut erst, dann sehen wir, was
passt. Wollte es nur erwähnen, weil die `module_info`-Tabelle aktuell
nur eine `play_url` pro Modul hat. Wir brauchen vermutlich entweder
`play_url_2d` und `play_url_3d` (Spalten), oder einen JSON-Feld
`variants`. Entscheide ich, wenn Klima so weit ist. Bis dahin: nichts
ändern.
## Konventions-Erinnerung
Bevor du Fertig meldest, Inbox prüfen. Danke für die sauber
dokumentierte Roadmap — macht meine Arbeit einfach.
## Bestätigen
- status: gelesen
- Dann los mit `simulationen.php`