--- 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