Files
geograsim/App/sims/_inbox/staustufen/_status.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

6.3 KiB
Raw Blame History

instanz, zuletzt_aktualisiert, session_id
instanz zuletzt_aktualisiert session_id
staustufen 2026-04-26 (Runde 2 fertig — 4 Punkte umgesetzt) 2026-04-26-runde-2

Staustufen — aktueller Stand

Rolle

Eigenständige Modul-Instanz für die Simulation „Staustufen — Wasserkraft in der Kaskade".

Auftrag

Genau ein Level (L1). Burst-Modus → Runde 2 abgeschlossen.

Stand

  • L1 spielbar unter http://localhost/geograsim/App/staustufen
  • Atlas-Feedback-Runde 2 vollständig umgesetzt; alle 4 Punkte live:

Punkt 1 — Netzbalance (Korridor-Bewertung)

  • ±15 % grün / 1530 % gelb / >30 % rot, Tick-basiert
  • Variablen + UI-Labels + End-Screen + Assessment-Payload durchgezogen
  • Live-Korridor-Indikator in Status-Spalte

Punkt 2 — Querschnitt-Visualisierung

  • Inline-SVG viewBox 0 0 800 460 ersetzt die abstrakten Tank-Balken
  • Berg-Silhouette mit Mulde (oben) + Tal (rechts), Schraffur, Schnee
  • Oberer Speichersee + Druckrohr + Maschinenhaus + unterer See
  • Wasserstand-Animation via rect.y + rect.height (CSS-transition 0.6 s)
  • Druckrohr-Wasseranimation per stroke-dasharray + stroke-dashoffset, Geschwindigkeit ∝ Stufe (schwach 2.4 s / mittel 1.2 s / stark 0.6 s loop)
  • Beschriftungen (Oberer Speicher %, Maschinenhaus, Druckrohr, +450 m, Tal)
  • Status-Spalte links, Querschnitt mittig, Slider direkt darunter im Footer
  • Steuerung von Buttons → Schiebereglern umgebaut (4-Stufen-Snap, Track-Highlight, Skala-Labels „aus / schwach / mittel / stark", Thumb 36 px iPad-Touch, Klick auf Skala-Label snapt zur Stufe)

Punkt 3 — Bedarfsgraph mit Wellenform + Korridor

  • Höhe 130 → 180 px, viewBox 1000×180
  • Tageskurve mit 4 Stützpunkten (Smoothstep): Nacht-Tal 72 % → Morgenspitze 116 % → Mittagsdelle 94 % → Abendspitze 121 % → Nacht 72 %. Tagesmittel kalibriert auf 1.0, also DEMAND_PER_DAY bleibt unverändert in der Bedeutung.
  • Korridor-Band ±15 % halbtransparent grünlich
  • Bedarfslinie (rot) deterministisch über alle 60 Ticks vorberechnet
  • Versorgungslinie (fjord-blau) live aufgebaut aus state.history.supply (= freie Einspeisung + Turbine Pumpe)
  • Außerhalb-Korridor-Marker (gelb 15-30 %, rot >30 %) auf Versorgungslinie
  • Tag-Trenner, Tag-Beschriftung, Tick-Cursor mit Punkten auf beiden Linien

Punkt 4 — InfoCards + Bilder + TTS

  • Card-Image App/assets/img/sim-16-staustufen.png schon in Runde-1-Quittung
  • InfoCard-Komponente .st-infocard mit Slide-in von rechts, 9-Sekunden-Auto-Dismiss + manueller Close-Button, Border-Tone-Variants
  • 5 Trigger eingebaut:
    • anlage (nach Welcome-Hint geschlossen)
    • pumpe (erste Pumpen-Aktion ≥ schwach)
    • turbine (erste Turbinen-Aktion ≥ schwach)
    • korridor (erstes Mal außerhalb grünem Korridor, ab Tick 2)
    • spitze (Beginn Tag 3)
  • TTS-Audios via OpenAI gpt-4o-mini-tts (ElevenLabs-Quota war voll), 5 mp3 in App/sims/staustufen/sounds/ (~990 KB total, ~0.013 €). Stimme „nova", deutsch, ruhig-pädagogisch
  • Mute-Toggle 🔇/🔊 im Header, Default stumm (klassenraum-tauglich)
  • InfoCard spielt Audio nur wenn state.audioEnabled === true

Definition of Done

  1. HTTP 200 unter Wrapper-URL, Engine + 5 mp3 alle 200 OK
  2. Mode-Check via Wrapper unverändert
  3. Pumpe/Turbine bedienbar als Slider (snap auf 4 Stufen)
  4. 5-Tage-Bilanz läuft, Tag wechselt, Wasserstand animiert auf SVG
  5. End-Screen Netzbalance + Verluste + Abweichung + Note AE
  6. Assessment-Calls mit Korridor-Daten
  7. Sprachregel 4a: kein „Spiel/Spieler/spielen"
  8. iPad ≥ 36 px Touch-Targets (Slider-Thumb 36, Buttons 36/40)

Hotfix 2026-04-26 später Nachmittag (Thomas-Vorlage stausvg.html)

  • Querschnitt komplett neu — Geometrie aus .humanInput/StaustufenSimulator/stausvg.html übernommen: Sky-Gradient + Sonne, Bergsilhouetten in 3 Tiefen-Layern, Erd-Gradient, Schnee, Schraffur, Bäume/Vögel/Fische/Wanderer als wiederverwendbare <symbol>s, Strommast + Stromleitungen, Staumauern und Wiesenränder, Kavernenkraftwerk-Optik.
  • viewBox 1000×650, Becken bei y=140..200 (Ober) und y=420..480 (Unter), zwei separate Druckrohre vom Oberbecken zum Maschinenhaus rechts und vom Maschinenhaus links zum Unterbecken.
  • Schieberegler bidirektional + stufenlos — statt 2 separate Slider (Pumpe/Turbine je 4 Stufen) gibt es jetzt EINEN Regler am Maschinenhaus, Range -100..+100 step=1:
    • Negativ → Pumpe (grün highlightet, Symbol grün glowt)
    • Positiv → Turbine (blau highlightet, Symbol blau glowt)
    • 0 → alles aus
    • Stufenlos: Engine multipliziert direkt state.control × MAX_RATE
  • Slider sitzt im SVG via <foreignObject> direkt unter dem Maschinenhaus, kein separater Bedien-Footer mehr
  • Pipe-Flow auf zwei Pfade verteilt, Richtung an state.control gebunden (mode-turbine → forward, mode-pump → reverse), Geschwindigkeit invers zur Magnitude (Volllast 0.6 s, schwach ≈3 s)
  • Bewertung + Bilanz unverändert (Wasser-/Strom-Einheiten, Korridor ±15 %, Verlust-Quote)
  • Engine: state.pumpLevel/turbineLevel weg, durch state.control (1..+1) ersetzt; setControl(value) ist die einzige Eingangs-Funktion
  • Assessment-Payload sendet jetzt control: -100..+100 statt zwei diskrete Stufen-Felder

Hotfix 2026-04-26 nachmittags (Thomas-Wunsch)

  • Graph-Höhe verdoppelt: 180 → 360 px, viewBox 1000×180 → 1200×360
  • Y-Achse: 5 Markierungen (0, ¼, ½, ¾, max) mit dezenten Hilfslinien
  • Pixelweise Cursor-Bewegung: Tick-Loop von setInterval-getrieben auf RAF-Loop umgebaut. State hält simProgress als float in Tick-Einheiten, pro requestAnimationFrame wird er um dt / SPEED_MS[speed] erhöht. Cursor-X liest direkt simProgress — bewegt sich smooth pixelweise von links nach rechts.
  • Tick-Trigger: wenn simProgress eine ganze Zahl überschreitet, wird der Tick verarbeitet. Pause stoppt simProgress, Speed-Wechsel ändert nur die Wachstumsrate (kein Sprung).
  • drawGraph wird aus render() entfernt (RAF zeichnet jeden Frame)

Was bleibt offen

  • Browser-Augenkontrolle durch Thomas (Layout, Animation, Lesbarkeit)
  • Optional: zweite/dritte Bilder-Generierung (Querschnitt-Hintergrund als Polish, InfoCard-Bilder). Atlas-Konzept-Skizze hatte das als „nach Atlas-Review" markiert
  • ElevenLabs-Quota-Erschöpfung (siehe Quittung)
  • Atlas-Review der Konzept-Skizze ist obsolet — Thomas hat „leg los" gegeben, ich bin durch

Blocker

Keine.