Files
Adminator 1e51ef7def Nachtrag: alle bisher untracked Ordner + hängende Änderungen mit-committen
- 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>
2026-07-08 02:27:02 +02:00

172 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Anhang: Migration von V1 nach V2
Nicht alle Module starten auf der grünen Wiese. Die meisten existieren
bereits als V1 unter `App/sims/<slug>/` und sind seit 2026-05-04 live
mit echten Schul-Accounts. Diese Anleitung beschreibt, wie ein
V1-Modul nach V2 portiert wird.
## Grundregeln
1. **V1 bleibt unangetastet.** `App/sims/<slug>/` wird NICHT geändert,
außer für echte Bugfixes (siehe `feedback_live_betrieb_versionen.md`).
2. **V2 entsteht parallel** in `v2-modules/<slug>/` als
self-contained Lieferpaket nach dieser Spec.
3. **Daten bleiben kompatibel.** V2-Tabellen sind additiv. Alte
V1-Daten werden NICHT migriert — sie bleiben in V1-Tabellen,
neue V2-Sitzungen schreiben in V2-Tabellen mit Versions-Marker.
4. **Modul-Instanz entscheidet selbst**, ob V2 neuer Code oder
refaktorierter V1-Code wird. Empfehlung: bei kleinen Modulen
neu, bei großen gezielt refaktorieren.
## Schritt-für-Schritt
### Schritt 1: V1-Bestandsaufnahme
Modul-Instanz schreibt eine kurze `MIGRATION-NOTES.md` mit:
- Aktuelle V1-Architektur (welche Files, wie viele Zeilen)
- V1-Tabellen-Schema
- V1-Asset-Liste
- Bekannte Probleme / Tech-Debt
- Was in V2 anders/besser werden soll
Lege diese Notes in `v2-modules/<slug>/docs/MIGRATION-NOTES.md` ab.
### Schritt 2: Lieferordner anlegen
```
v2-modules/<slug>/
├── manifest.json ← neu schreiben nach Spec
├── README.md ← neu schreiben
├── public/
│ ├── game.html ← kopiert oder neu, mit Spec-Anpassungen
│ └── assets/ ← Bilder/Audio/Daten aus V1 kopieren
├── db/
│ └── migrations.sql ← neue m_<slug>_*-Tabellen oder leer
└── tests/
└── mock-platform.html ← neu schreiben
```
### Schritt 3: Easy-Sprache hinzufügen
V1-Module hatten Easy-Sprache uneinheitlich. V2 verlangt sie
**für alle sichtbaren Texte**. Modul-Instanz muss:
1. Alle UI-Texte als i18n-Keys auslagern
2. Easy-Variante für jeden Text schreiben (Netzwerk-Leichte-Sprache-
Regeln, A1A2-Niveau)
3. `public/i18n/de-AT-standard.json` und `de-AT-easy.json` anlegen
4. Beim Start aus `lang`-URL-Param laden
### Schritt 4: Telemetry-Hooks einbauen
V1 kannte keine Telemetry. V2 verlangt drei Event-Typen
(siehe [telemetry-api.md](telemetry-api.md)):
1. **Heartbeat-Loop** auf 15-Sekunden-Intervall starten, sobald
Schüler*in aktiv ist
2. **Milestone-Calls** an allen definierten Erfolgs-Punkten einbauen
(zuerst im Manifest deklarieren!)
3. **Stuck-Detection** — letzten User-Input-Timestamp tracken, bei
90s+ Stuck-Event posten
Hilfsbibliothek **wird** Atlas in
`v2-platform/lib/telemetry-client.js` als ESM-Modul anbieten,
das Module einbinden können statt selbst zu implementieren.
### Schritt 5: Result-Output anpassen
V1-Module schickten Ergebnisse an unterschiedliche Endpoints
(`/api/save_assessment.php`, `/api/level_complete.php`, etc.). V2
hat einen einheitlichen Endpoint:
```http
POST /v2beta/api/result
```
Modul muss alle alten Ergebnis-Calls auf diesen Endpoint
zusammenziehen (siehe [output-api.md](output-api.md)).
### Schritt 6: Direkten DB-Zugriff entfernen
V1-Module hatten teils direkten Zugriff auf `students`, `classes`,
`assessments`. V2 verlangt API-Zugriff via Plattform-Endpoints.
Modul muss:
1. Alle SQL-Queries auf Plattform-Tabellen entfernen
2. Stattdessen `/v2beta/api/student/me` und `/v2beta/api/module/state`
nutzen
3. Eigene Modul-Tabellen mit Prefix `m_<slug>_` neu anlegen
(V1-Tabellen werden NICHT mitgenutzt)
### Schritt 7: Lehrplan-Anker und Glossar deklarieren
Modul-Instanz pflegt im Manifest:
- `lehrplanAnker` — Codes aus AT-GW-Lehrplan, die das Modul wirklich
trainiert (mit Lehrplan-Instanz abstimmen)
- `glossarBegriffe` — Slugs aus `glossar`-Tabelle, die das Modul
voraussichtlich verwendet (mit Glossar-Instanz abstimmen)
### Schritt 8: Konformitäts-Check
```bash
cd v2-modules/<slug>
php ../../v2-platform/tools/conformance-check/check.php
```
Bei „LIEFERBEREIT": Inbox an Atlas. Bei Fehlern: fixen.
### Schritt 9: Atlas-Integration und Live-Deploy
Siehe [delivery-format.md](delivery-format.md) ab Abschnitt
„Lieferprozess".
## Reihenfolge der Modul-Migration (Roadmap)
Thomas-Vorgabe (2026-05-16): „Erst die einfachen, dann die schwierigen.
Updates in Modulen sind dabei OK."
Vorschlag-Reihenfolge:
| Welle | Module | Begründung |
|---|---|---|
| 1 | Glossar, Lehrplan | Fundament für alle anderen — müssen als erstes V2 sein |
| 2 | Sonnensystem, Entscheidungstag | Kompakt, klar abgegrenzt |
| 3 | Energiemanager, Heli, Busfahrt, Farmer | Mittelgroß |
| 4 | Klima, Logistik | Größte/komplexeste Module zuletzt |
| | Fluss, Staustufen | Status klären (Fluss aktiv? Staustufen pausiert) |
Genaue Reihenfolge wird mit Modul-Instanzen abgestimmt, sobald die
Spec stable ist.
## Was passiert mit V1?
- V1 bleibt während der gesamten V2-Migration produktiv unter
`geograsim.at/`
- Sobald ein Modul V2 hat und freigeschaltet ist:
- Lehrer*innen können in V2-Cockpit das V2-Modul wählen
- V1-Modul bleibt parallel verfügbar in V1-Cockpit (für Klassen,
die mitten in V1-Stunde sind)
- Wenn alle Module V2 haben:
- Stable-Switch (siehe [project_v2_arbeitsmodell.md](../../memory))
- V1 wandert nach `/v1archiv`
- V1-Code wird 6+ Monate als Notfall-Rollback aufbewahrt
- V1-Daten bleiben **dauerhaft erhalten** — nichts wird gelöscht
## ✅ Geklärt mit Thomas (2026-05-17)
- **Migrations-Wellen**: bestätigt — Plattform-Services
(Glossar, Lehrplan) zuerst (Welle 1), dann kompakte Module
(Sonnensystem, Entscheidungstag — Welle 2), dann mittelschwere
(Energiemanager, Heli, Busfahrt, Farmer — Welle 3), zuletzt die
komplexen (Klima, Logistik — Welle 4). Fluss + EU-Werkstatt: Status
vorher klären.
- **V1 bleibt parallel voll nutzbar** bis zum Stable-Switch. Keine
Read-only-Markierung pro Modul. Lehrperson entscheidet selbst, wann
sie ihre Klasse auf V2 umzieht. V2 erscheint zunächst als „Beta"-
Angebot im V1-Cockpit.
- **Keine Daten-Bridge zwischen V1 und V2**: cleaner Schnitt.
Schüler*in startet in V2 frisch (alle Module L1, Lerngeschichte
leer). Hintergrund: V1-XP-Level ≠ V2-Difficulty-Level (V1 hat das
vermischt, V2 trennt es sauber). V1-Daten bleiben in V1-Tabellen
als historische Auswertung sichtbar.