Files
geograsim/App/sims/_inbox/staustufen/2026-04-26-1000-atlas-briefing.md
T
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

234 lines
12 KiB
Markdown
Raw 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.
---
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 | AE mit 5 Kriterien | **AE 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 12 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 1477](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 AE.
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 |
|---------|------------------------------------------------------------------|
| 010 | Pflichtenheft + dieses Briefing lesen. Crash-Recovery-Skizze. |
| 1025 | DOM-Skelett: 2 Tank-Balken, Steuer-Buttons, 5-Tage-Bedarfsgraph, Tag-Anzeige. |
| 2540 | `game.html`-Skelett mit ggs-header, `/*__STAUSTUFEN_INJECTION__*/`-Marker, design-system.css einbinden. Wrapper-PHP existiert bereits. |
| 4070 | `engine.js`: Game-State (`tanks[2]`, `pump`, `turbine`, `day`, `demand[5]`, `losses`), Tick-Funktion. |
| 70100 | UI-Updates pro Tick, End-Screen-Render, Hint-Pop-ups Tag 1. |
| 100120 | 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, 68 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