1e51ef7def
- 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>
234 lines
12 KiB
Markdown
234 lines
12 KiB
Markdown
---
|
||
von: atlas
|
||
an: staustufen
|
||
datum: 2026-04-26 10:00
|
||
status: neu
|
||
betrifft: Briefing — bau Level 1 von Staustufen-Manager fertig durch
|
||
---
|
||
|
||
# Willkommen, Staustufen-Instanz
|
||
|
||
Du bist eine neue Modul-Instanz im GeoGraSim-Projekt (Lernapp Geographie
|
||
Sek I, Österreich). Dein Auftrag: **eine spielbare Simulation bauen,
|
||
genau ein Level, ohne Zwischenstopp**. Bestehende Module (Klima,
|
||
Heli, Logistik, Fluss) sind im Polier-Modus — du startest grün auf
|
||
der Wiese, baust auf der Plattform-Infrastruktur auf und lieferst
|
||
**ein fertiges Level 1**.
|
||
|
||
Wenn du das durchziehst, ohne Querschüsse, ist Thomas glücklich.
|
||
Atlas (das bin ich) hält die Inbox still nach dem Start — du arbeitest
|
||
ungestört bis zur Fertigmeldung.
|
||
|
||
## 1. Was du bauen sollst — ein-Satz-Pitch
|
||
|
||
> Drei Speicherstufen (Level 1: zwei reichen) in einer Kaskade.
|
||
> Pumpen und Turbinen verschieben Wasser zwischen den Stufen, je nach
|
||
> Strombedarf. Der/Die Bearbeiter*in deckt fünf simulierte Tage
|
||
> schwankenden Strombedarf, ohne dabei zu viel Energie zu verlieren
|
||
> oder Speicher leerlaufen zu lassen.
|
||
|
||
Das vollständige Konzept liegt in
|
||
[`.humanInput/StaustufenSimulator/Pflichtenheft.txt`](.humanInput/StaustufenSimulator/Pflichtenheft.txt) — lies das einmal komplett.
|
||
|
||
## 2. Reduktion auf Level 1 — was DU baust
|
||
|
||
Pflichtenheft beschreibt vier Schwierigkeitsstufen. **Du baust nur
|
||
Stufe 1**, mit folgender Reduktion:
|
||
|
||
| Element | Pflichtenheft (Vollausbau) | Level 1 (dein Auftrag) |
|
||
|--------------------------|-----------------------------------|-------------------------------------|
|
||
| Speicheranzahl | 3 Stufen | **2 Stufen** (Oben + Unten) |
|
||
| Pumpe | mehrere zwischen Stufen | **1 Pumpe** (Unten → Oben) |
|
||
| Turbine | mehrere zwischen Stufen | **1 Turbine** (Oben → Unten) |
|
||
| Steuerstufen | aus / schwach / mittel / stark | **aus / schwach / mittel / stark** |
|
||
| Spieldauer | 5 simulierte Tage | **5 Tage** ✓ |
|
||
| Bedarfskurve | dynamisch + Wetter | **fix vorgegeben** (eine Kurve) |
|
||
| Solar / Wind | im Pflichtenheft | **weglassen** |
|
||
| Wetterprognose | mit Ungenauigkeit | **weglassen** (deterministisch) |
|
||
| Natürliche Zuflüsse | regenabhängig | **konstanter Tropfen** in Oben |
|
||
| Verluste | Pump-WG + Turbinen-WG | **2 Wirkungsgrade**, fix |
|
||
| End-Bewertung | A–E mit 5 Kriterien | **A–E mit 2 Kriterien** (Versorgung + Verluste) |
|
||
| Tutorial / Onboarding | kommt später | **2 Hint-Pop-ups** in Tag 1 |
|
||
| Sound / Musik | später | **weglassen** |
|
||
| Bilder | später | **weglassen** |
|
||
|
||
**Der „Gegner" in Level 1** = die Bedarfskurve (Tag 1 niedrig, Tag 2
|
||
mittel, Tag 3 Spitze, Tag 4 niedrig, Tag 5 Spitze) **plus** die
|
||
Tatsache, dass wer in Tag 1–2 alles abturbiniert oder alles hochpumpt,
|
||
in Tag 3 oder Tag 5 eine Versorgungslücke hat. Wer alles ausbalanciert,
|
||
verliert Energie an Wirkungsgrade. **Wenig Knöpfe, klares Dilemma.**
|
||
|
||
## 3. Plattform-Bausteine — was du nutzt, nicht nachbaust
|
||
|
||
### Verzeichnisse (alles existiert bereits)
|
||
- **Sim-Code**: `App/sims/staustufen/` (heute noch leer, dein Spielfeld)
|
||
- **Wrapper-PHP**: `App/pages/staustufen.php` — **steht schon** (Atlas-Territorium).
|
||
Mode-Check + Locked-Seite + 503-„In Vorbereitung"-Fallback solange
|
||
`App/sims/staustufen/game.html` fehlt. Sobald du `game.html` anlegst,
|
||
wird sie automatisch ausgeliefert. Inject-Marker in deiner game.html:
|
||
`/*__STAUSTUFEN_INJECTION__*/` — dort werden `STAUSTUFEN_BASE`,
|
||
`STAUSTUFEN_SESSION_MODE`, `STAUSTUFEN_FORCED_LEVEL`,
|
||
`STAUSTUFEN_SESSION_ID`, `STUDENT_EASY`, `STAUSTUFEN_API_BASE`
|
||
vom Wrapper befüllt.
|
||
- **Modul-Detail**: `App/pages/modul-staustufen.php` — **steht schon**.
|
||
Lehrplan-Anker und Glossar werden vom Partial automatisch aus DB
|
||
gezogen, sobald Lehrplan-/Glossar-Instanz geliefert haben.
|
||
- **DB**: `module_info`-Eintrag steht schon (status `geplant`,
|
||
page_url `modul-staustufen`, play_url `staustufen`,
|
||
sort_order 16, icon `🏞️`)
|
||
- **Inbox**: `App/sims/_inbox/staustufen/` (du bekommst Nachrichten hier;
|
||
Atlas-Stille bis Fertigmeldung)
|
||
|
||
### Plattform-CSS / -Komponenten
|
||
- **Design-System**: [`App/assets/css/design-system.css`](App/assets/css/design-system.css) — nutze die `.ggs-*`-Klassen.
|
||
Header: `.ggs-header`, `.ggs-header-module`, `.ggs-header-badge`.
|
||
Buttons: `.ggs-btn-ghost`, `.ggs-btn-primary`. End-Screen:
|
||
`.ggs-endscreen` (siehe Heli/Logistik für Muster).
|
||
- **Header-Template**: schau in [`App/sims/heli/game.html` (Header ab Zeile 445)](App/sims/heli/game.html#L445)
|
||
oder [`App/sims/klima/game-2d.html`](App/sims/klima/game-2d.html). Kopiere die ggs-header-Struktur,
|
||
nimm den Logo-Block, Modul-Name, Badge, Music-Player kannst du
|
||
weglassen (Reduktion).
|
||
- **End-Screen**: `.ggs-endscreen` ist im Design-System dokumentiert.
|
||
Heli macht die Render-Logik in [`App/sims/heli/game.html` `initResultsPhase`](App/sims/heli/game.html). Kopier-Vorlage.
|
||
|
||
### APIs (Backend, fertig)
|
||
- **Mode-Check** (im Wrapper-PHP): liefert
|
||
`STAUSTUFEN_SESSION_MODE` ('free'/'teacher_started'/'locked'),
|
||
`STAUSTUFEN_FORCED_LEVEL`, `STAUSTUFEN_SESSION_ID`,
|
||
`STUDENT_EASY`. Pattern siehe [`App/pages/heli-game.php` Zeilen 14–77](App/pages/heli-game.php#L14-L77).
|
||
**Wichtig**: locked = HTTP 403 + Sperrseite, free = öffentliche Demo
|
||
ohne Persistenz. Forced-Level kannst du in Level 1 ignorieren
|
||
(du hast nur ein Level), aber leg das Pattern-Hooked an, damit
|
||
spätere Levels das nutzen können.
|
||
- **Assessment-API**: `POST /api/assessment.php` mit
|
||
`{action: 'started'|'running'|'completed', sim_id: 'staustufen',
|
||
session_id, payload}`. Heli und Logistik haben Beispiele
|
||
(suche `assessmentStart`, `assessmentRunning` in deren game.html).
|
||
Triggern: bei Start, alle 30 s, beim End-Screen.
|
||
- **Save-API** (optional): in Level 1 unkritisch, der Lauf ist 10 min.
|
||
Kannst du weglassen.
|
||
|
||
### Bausteine, die du **nicht** brauchst
|
||
- Keine Karten / OSM / Leaflet (du bist Diagramm-zentriert)
|
||
- Keine 3D-Engine / Three.js
|
||
- Keine externen Bilder / DALL-E
|
||
- Keine Sounds / ElevenLabs (für Level 1)
|
||
- Keine Glossar-Begriffe (Glossar-Instanz arbeitet zu, wenn du fragst)
|
||
|
||
## 4. Naming-Konvention
|
||
|
||
| Element | Wert |
|
||
|------------------------|------------------------------------------|
|
||
| Modul-ID | `staustufen` |
|
||
| Modul-Verzeichnis | `App/sims/staustufen/` |
|
||
| Sim-URL | `http://localhost/geograsim/App/staustufen` |
|
||
| Detail-URL | `http://localhost/geograsim/App/modul-staustufen` |
|
||
| JS-Window-Variable | `STAUSTUFEN_BASE`, `STAUSTUFEN_SESSION_MODE`, `STAUSTUFEN_FORCED_LEVEL`, `STAUSTUFEN_API_BASE`, `STAUSTUFEN_SESSION_ID` |
|
||
| LocalStorage-Key | `ggs-staustufen-*` (Prefix `ggs-`) |
|
||
| CSS-Prefix | `.st-*` (kurz, eindeutig — `.st-tank`, `.st-pump`, `.st-graph`) |
|
||
| Commit-Präfix | `Staustufen:` (Capital S, Doppelpunkt-Leerzeichen) |
|
||
|
||
## 5. Sprachregel 4a (Wygotski / Lernarbeit) — verbindlich
|
||
|
||
**Niemals**: „spielen", „Spiel", „Spieler", „Spielzeit", „Sieg",
|
||
„Niederlage" als sichtbare Texte, Variablennamen oder Datenbank-Werte.
|
||
|
||
**Stattdessen**: „arbeiten mit", „Simulation", „Bearbeiter*in",
|
||
„Durchgang", „Versorgungsqualität", „Bilanz", „erfolgreich
|
||
durchgeführt".
|
||
|
||
Begründung: didaktische Rahmung als **Lernarbeit**, nicht als Spiel.
|
||
Vermeidet Trivialisierung der Inhalte und entspricht Bildungsstandard
|
||
in Sek I. Die anderen Module sind alle so umgebaut — sei konsistent.
|
||
|
||
## 6. Definition of Done für Level 1
|
||
|
||
Du bist **fertig**, wenn:
|
||
|
||
1. ✅ `http://localhost/geograsim/App/staustufen` lädt eine Sim ohne JS-Fehler.
|
||
2. ✅ Mode-Check funktioniert: locked → Sperrseite, free/teacher_started → Sim.
|
||
3. ✅ Du kannst die Pumpe / Turbine bedienen, Wasser fließt sichtbar.
|
||
4. ✅ Eine 5-Tage-Bilanz läuft durch, Tag wechselt automatisch oder per Klick.
|
||
5. ✅ End-Screen via `.ggs-endscreen` zeigt Versorgungsqualität + Verluste + Note A–E.
|
||
6. ✅ Assessment-Calls feuern (started, completed) — verifizierbar in DB.
|
||
7. ✅ Sprachregel 4a komplett (kein „Spieler" im sichtbaren Text).
|
||
8. ✅ Funktioniert auf iPad Landscape 1180×820 (Touch-Targets ≥ 36 px).
|
||
|
||
**Wenn alle 8 Punkte abgehakt sind**, fertig-Meldung an
|
||
`_inbox/zentrale/` schreiben. Atlas deployt und Thomas testet.
|
||
|
||
## 7. Anti-Scope-Liste — was du **nicht** machst
|
||
|
||
- Mehrere Levels (du baust nur 1, Architektur lässt mehr zu)
|
||
- Wetter, Solar, Wind, Saison, Prognose-Ungenauigkeit
|
||
- Sounds, Musik, Bilder, Animationen jenseits CSS-Transitions
|
||
- Multiplayer, Lehrer-Live-View, Class-Mode-Switch (gibt's, brauchst nicht)
|
||
- Eigene API-Endpunkte (nutze assessment.php, mehr nicht)
|
||
- Refactoring von Plattform-Code (`App/php/`, `App/assets/css/design-system.css`,
|
||
Atlas-Territorium — bei Bedarf Anfrage in `_inbox/zentrale/`)
|
||
|
||
## 8. Erste 60 Minuten — Roadmap
|
||
|
||
| Min | Aufgabe |
|
||
|---------|------------------------------------------------------------------|
|
||
| 0–10 | Pflichtenheft + dieses Briefing lesen. Crash-Recovery-Skizze. |
|
||
| 10–25 | DOM-Skelett: 2 Tank-Balken, Steuer-Buttons, 5-Tage-Bedarfsgraph, Tag-Anzeige. |
|
||
| 25–40 | `game.html`-Skelett mit ggs-header, `/*__STAUSTUFEN_INJECTION__*/`-Marker, design-system.css einbinden. Wrapper-PHP existiert bereits. |
|
||
| 40–70 | `engine.js`: Game-State (`tanks[2]`, `pump`, `turbine`, `day`, `demand[5]`, `losses`), Tick-Funktion. |
|
||
| 70–100 | UI-Updates pro Tick, End-Screen-Render, Hint-Pop-ups Tag 1. |
|
||
| 100–120 | Assessment-Calls, iPad-Test, Sprachregel-Sweep, fertig-Meldung. |
|
||
|
||
Das ist großzügig — kann auch in 90 Min stehen. Wichtig: nicht polieren,
|
||
sondern **funktionieren**. UI-Polish kommt nach Thomas-Feedback.
|
||
|
||
## 9. Plattform-Konventionen
|
||
|
||
- **Inbox-Pfad**: deine ist `_inbox/staustufen/`. Atlas-Inbox ist
|
||
`_inbox/zentrale/` — nicht `_inbox/atlas/` (anderen Instanzen ist das
|
||
schon passiert).
|
||
- **Status-Datei**: `_inbox/staustufen/_status.md` — bei jedem
|
||
Session-Ende aktualisieren (Crash-Recovery).
|
||
- **Memory** (lokal in dieser Claude-Instanz): unter
|
||
`C:\Users\herr_\.claude\projects\c--xampp-htdocs-geograsim\memory\`
|
||
haltest du Notizen, die für künftige Sessions nützlich sind.
|
||
Lies das `MEMORY.md` zu Beginn.
|
||
- **Git**: Commit-Präfix `Staustufen:`. Nicht skip-hooks. Keine
|
||
Force-Pushes. Nicht direkt deployen — Atlas bündelt Deploy.
|
||
- **Crash-Recovery**: bei Absturz lesen wir
|
||
`_status.md` + Inbox + Memory. Halte diese drei aktuell.
|
||
|
||
## 10. Lehrplan-Anker (laufen parallel, blockieren dich nicht)
|
||
|
||
Atlas hat Lehrplan-Instanz parallel beauftragt, 6–8 AT-Anker für
|
||
Wasserkraft / Energiespeicherung anzulegen. Das passiert in
|
||
`kompetenzen` / `kompetenz_modules` / `lehrplan_anchors` — du musst
|
||
nichts dafür tun. Wenn das Modul-Detail (`/modul-staustufen`)
|
||
zur Fertigmeldung leer ist, ist Lehrplan halt langsamer als du.
|
||
Kein Blocker.
|
||
|
||
## 11. Was du jetzt tust
|
||
|
||
1. Pflichtenheft lesen.
|
||
2. Dieses Briefing lesen.
|
||
3. Status-Datei aktualisieren („Phase 1 — Architektur-Skizze").
|
||
4. DOM-Skelett bauen.
|
||
5. Iterieren bis DoD erfüllt.
|
||
6. Fertig-Meldung in `_inbox/zentrale/`.
|
||
|
||
**Keine Rückfrage an Atlas nötig**, außer du stolperst über einen
|
||
Plattform-Blocker (Mode-Check funktioniert nicht, design-system.css
|
||
fehlt eine Klasse, etc.). Dann: kurze Nachricht in
|
||
`_inbox/zentrale/`, ich antworte schnell.
|
||
|
||
## 12. Bestätigen
|
||
|
||
- status: gelesen
|
||
- Bei Plattform-Frage → `_inbox/zentrale/`
|
||
- Bei Inhalts-Frage zum Pflichtenheft → mach selber, Thomas hat
|
||
Vertrauen in deine Reduktion
|
||
- Fertig-Meldung an `_inbox/zentrale/` mit Stichpunkten zur DoD-Liste
|
||
|
||
Viel Erfolg. Bau das Ding.
|
||
|
||
— Atlas
|