- 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>
40 KiB
Test-Protokoll Session 2026-05-30 (Post-Compact)
Status: Alle Änderungen LOKAL — KEIN Production-Deploy ohne Thomas-OK. Regel: Wir testen lokal gemeinsam. Erst bei explizitem „deployment to TEST"-Befehl von Thomas wird auf Production geschoben. Danach gehen wir dieses Protokoll als Test-Skript durch.
1) Modul Sonnensystem — observations.json + game.html
1.1 JSON-Bug behoben
- Was: Kaputtes
"(U+0022) statt deutsches"(U+201C) in observations.json Z.84 hat den simHint-String der Erdjahr-Aufgabe vorzeitig beendet → komplettes JSON-Parse-Fehler → „obs] load failed". - Fix:
Viertel-Tag"→Viertel-Tag" - Test: Modul lädt, alle 19 Aufgaben sichtbar im Aufgaben-Tab.
1.2 Polish-Review (4 von 4 Aufgaben)
- #7 Vollmond: Antwort #2 von „auf der sonnenabgewandten Seite (aber leicht über oder unter der Linie Sonne–Erde, sonst wäre es Mondfinsternis)" gekürzt auf „auf der sonnenabgewandten Seite der Erde steht". Klammer-Detail bleibt in der Erklärung.
- #11 Mondtilt-Aufgabe entfernt: Aufgabe
obs-mondtiltaus tasks-Array raus. Mondbahn-Tilt-Slider bleibt im UI als Sandbox. - #13 Ohne Achsneigung: Neue
phases-Sequenz mit Wechsel 23,5° ↔ 0° am 21. Juni (Seitenansicht, je 6 s, pausiert). Polartag verschwindet sichtbar im What-If. Implementiert: neuesaxisTilt-Property in obsApplyState, Default-Reset auf 23,5°. - #15 Sommer vs Winter: war schon mit phases umgesetzt (21.6. ↔ 21.12., je 5 s).
- Achievement-Texte: „20 Aufgaben" → „19 Aufgaben" in
half_doneundall_done.
Test #7:
- Öffne Aufgabe „Vollmond — wie entsteht er?", prüfe ob Antwort-Option 2 kurz lesbar ist.
Test #11 (entfernt):
- Aufgaben-Anzeige zeigt 19 statt 20. Mondtilt-Aufgabe nirgends mehr. Slider „Mondbahn-Tilt" funktioniert in Sandbox weiterhin.
Test #13:
- Aufgabe „Was wäre ohne Achsneigung?" → Schau-Phase startet → wechselt im Sekunden-Takt zwischen 23,5° und 0°. Bei 0° sind beide Halbkugeln gleichmäßig beleuchtet, kein Polartag.
Test #15:
- Aufgabe „Sommer vs. Winter in Wien" → Wechsel 21.6./21.12. funktioniert, Wien-Inset zeigt unterschiedliche Sonnenstände.
1.3 UI: Jetzt-Button + „Besondere Tage für heuer"
- Was: Button-Reihenfolge
⏰ Jetzt | 🎆 Neujahr | 🐰 Ostern | 🎄 Weihn.(Jetzt zuerst). - Label: „Feiertage / Schul-Termine (für 2026)" → „Besondere Tage für heuer".
- Ostern dynamisch: via Gauss-Computus pro aktuelles Jahr berechnet, Tooltip zeigt echtes Datum.
Test:
- Datum-Bereich aufklappen. Button-Reihenfolge richtig. Label heißt „Besondere Tage für heuer". Klick auf „⏰ Jetzt" springt zur aktuellen Uhrzeit. Klick auf „🐰 Ostern" springt auf echten Ostersonntag.
1.4 Komplett dynamisches Jahr
- EPOCH: Statt fix
new Date(2026, 0, 1)jetztnew Date(new Date().getFullYear(), 0, 1). Tag 0 = 1.1. heuer. - Mondphasen-Anker: Real-Vollmond 3.1.2026 als Referenz,
MOON_EPOCH_OFFSET_DAYSrechnet Offset zum aktuellen Jahr. Phasen stimmen auch in Folgejahren. - obsApplyState: Ersetzt Jahr in observations-Daten (
"2026-06-21"→"<heuer>-06-21") — JSON-Daten dürfen weiter mit fixen Jahren stehen. - Datum-Inputs: Default =
1.1. heuer 12:00(statt fix 2026-01-01). - Hilfetexte: „Tag 0 = 1. Januar 2026" → „… des aktuellen Jahres".
- Date-Banner: „📆 1. Jan 2026" → „📆 1. Jan" (Banner wird via formatDate dynamisch geschrieben).
- observations.json Erdjahr-intro: „1.1.2026 00:00" → „1. Januar, kurz nach Mitternacht in Wien".
Test (Browser-Konsole):
CURRENT_YEAR // muss 2026 zurückgeben (oder das jeweilige Jahr)
EPOCH // 1.1.<heuer>
- Datum-Buttons (Frühling, Sommer, Ostern, Jetzt) springen alle ins aktuelle Jahr.
- Sonnensystem-Aufgaben mit fixen Datumstrings (z.B. „Polartag am 21. Juni") starten im aktuellen Jahr, nicht in 2026.
1.5 Photon-Reflexion physikalisch korrekt
- Was vorher: Photon flog von Sonne durch den Mond-Mittelpunkt zur Erde — die zweite Phase startet von der NACHT-Seite des Mondes, was physikalisch falsch ist (Nacht-Seite reflektiert nichts).
- Was jetzt: Reflexionspunkt = sonnen-zugewandte Mond-Oberfläche (
_photonMoonPos - normalize(_photonMoonPos) × MOON_RADIUS). Zweite Phase startet dort, fliegt von der Tag-Seite zur Erde. - Gilt für beide Modi: statische Linien (Fast-Mode) + Pulse-Animation (Slow-Mode).
Test:
- Photon-Toggle einschalten. Bei langsamer Geschwindigkeit (🐢 1×): Photon trifft auf Mond-Tag-Seite (nahe Sonne), nicht durch den Mond hindurch.
- Bei schneller Geschwindigkeit: die gelbe Linie Sonne-Mond endet an der sonnen-zugewandten Mond-Oberfläche.
1.6 Erdjahr-Aufgabe stopAtDay-Feature
- Was: Neues Property
stopAtDayin observations.json — Sim pausiert exakt beitimeDays >= stopAtDay, speed-unabhängig sim-genau. - Erdjahr-Aufgabe:
stopAtDay: 365.25→ Wien-Fahne genau 90° vom Startpunkt versetzt = der ¼-Tag-Drift didaktisch sauber visualisiert. - TDZ-Fix: animate() verwendet
window.__obsStopAtCheckstatt direkter obsState-Referenz (TDZ-Bug beiconst obsState).
Test:
- Aufgabe „Erdjahr und Schaltjahr" starten → Sim läuft → stoppt automatisch nach ~31 s → Wien-Fahne steht ~90° vom Startpunkt (Ghost-Erde) versetzt = sichtbarer Vierteldrehung-Drift.
2) Glossar
2.1 Watt-Eintrag erweitert (PS + Historie)
- SQL-Migration:
App/Don_t_Deploy/2026-05-30-watt-ps-erweiterung.sql(idempotent, SET NAMES utf8mb4). - Inhalt:
- Neuer Abschnitt „Pferdestärke (PS) — der historische Vergleich"
- Umrechnung 1 PS = 735,5 W, 1 kW = 1,36 PS, 100 PS ≈ 73,5 kW, 1.000 PS ≈ 735 kW
- James Watt selbst hat PS erfunden (für Dampfmaschinen-Verkauf an Brauereien/Bergwerke)
- Heute in EU offiziell kW seit 1978, in USA HP (745,7 W)
- Auch in
text_easy(Leichte Sprache): kurze Erklärung „Bei Autos liest man oft PS …"
- Lokal: angewendet.
- Production: noch NICHT (steht zum „deployment to TEST").
Test:
- Glossar öffnen, „Watt" anklicken. Im Detail-Modal muss der PS-Abschnitt sichtbar sein. Beide Varianten (Fachsprache + Leichte Sprache) prüfen.
2.2 Thumbnail-System für Glossar-Cards
- Problem vorher: Cards luden die Originale (1–3 MB pro PNG, 134 Stück = 330 MB). Ewige Ladezeit.
- Lösung: WebP-Thumbnails 480×270 unter
assets/img/glossar/thumbs/<slug>.webp. - Build-Skript:
App/Don_t_Deploy/build-glossar-thumbs.ps1(idempotent, nutzt ImageMagickmagick). - Ergebnis: 132 Thumbs generiert, 329,7 MB → 2,6 MB (99,2 % Ersparnis).
- PHP-Code: Neue
fmtThumb(path)-Funktion in glossar.php.renderCardlädt jetzt thumb, mitonerror-Fallback auf Original wenn Thumb fehlt. Detail-View (renderDetail) zeigt weiterhin das Original.
Test:
- Glossar öffnen → Cards sollten messbar schneller laden (Network-Tab im Browser checken — Card-Bilder sind jetzt webp, ~20 KB statt 2,5 MB).
- Auf eine Card klicken → Detail-Modal zeigt das große Original-Bild scharf.
- Thumb-Fehler-Fallback: Lösche temporär einen Thumb → Card lädt automatisch das Original.
2.3 Korruptes Bild — Aufmerksamkeit
residuallast.pngist defekt (48 KB statt 1–3 MB, vorzeitiges EOF).- Thumb konnte nicht generiert werden.
- Aktion offen: Bild neu generieren (DALL-E aktuell down, siehe 2.4).
2.4 Turbinen-Bild — Bild-Refresh BLOCKIERT
- Ziel: Aktuelles
turbine.pngzeigt absurd übergroße Turbine (höher als Berge) → soll durch sinnvolle Querschnitts-/Person-für-Skala-Variante ersetzt werden. - Status: Bild-Refresh-Agent ist gelaufen, aber API blockiert:
- DALL-E 3 ist im Anthropic OpenAI-Account NICHT mehr verfügbar (Modell entfernt).
- Verfügbar wären:
gpt-image-1,gpt-image-1-mini,gpt-image-1.5,gpt-image-2… - Aber: Billing-Hard-Limit erreicht — keine Generierung möglich.
- Aktion offen für Thomas:
- OpenAI-Billing-Hard-Limit anheben (Settings → Limits)
- Entscheidung: Migrieren wir alle Bild-Generierungs-Skripte (
App/sims/logistik/scripts/generate-splash-images.shetc.) vondall-e-3aufgpt-image-1? Modelle haben unterschiedliche Parameter — das ist ein eigener Refactor.
- Asset bleibt unverändert (Backup-Mechanismus hat das alte Bild zurückgestellt).
3) Vor dem nächsten Production-Deployment
Was muss noch passieren bevor wir auf Production gehen:
- Lokales Durchtesten aller Punkte oben (Thomas + Atlas gemeinsam).
- Falls Bild-Refresh-Block durchbrochen: Turbine + residuallast neu generieren.
- Online-Test-Plan: dieser File als Checkliste verwenden, jeden Punkt am Production-Server prüfen.
Beim Deployment to TEST mit Thomas zu beachten:
- SQL-Migration
2026-05-30-watt-ps-erweiterung.sqlauf Production-DB anwenden (mit--default-character-set=utf8mb4) - Build-Skript
build-glossar-thumbs.ps1lokal laufen lassen, Thumbs via deploy.sh hochziehen sonnensystem/data/observations.json+sonnensystem/game.htmldeployenApp/pages/glossar.phpdeployen- Apache-OPcache nach Deploy reset
Online-Test-Skript (post-deploy):
- geograsim.at/sonnensystem → Aufgabe „Erdjahr und Schaltjahr" — stoppt nach ~31 s, Wien 90° versetzt
- Erdjahr: Ghost-Erde liegt EXAKT am Startpunkt (JAN), nicht irgendwo dazwischen
- Aufgabe „Was wäre ohne Achsneigung?" — Phases-Wechsel 23,5°↔0°
- Aufgabe „Vollmond — wie entsteht er?" — Antwort #2 kurz
- Aufgaben-Liste zeigt 19 Stück (vorher 20)
- Aufgabe „Erddrehung" (= erste): Kamera SEHR nah an der Erde, Wien-Fähnchen zeigt RICHTUNG SONNE (Mittag)
- Datum-Buttons: ⏰ Jetzt zuerst, Label „Besondere Tage für heuer", Ostern auf echtem Datum
- Photon-Toggle: reflektiert an Mond-Tag-Seite
- Aufgaben-Modal Button „↻ Aufgaben abbrechen und neu starten" (statt nur „Neu starten")
- Aufgaben-Modal Button „← Zurück zur letzten Übung" (bei Aufgabe 1 ausgegraut)
- geograsim.at/glossar → „Watt" anklicken → PS-Abschnitt sichtbar
- Glossar-Cards laden spürbar schneller (Network-Tab: kleine webp statt große png)
- Detail-Modal zeigt großes Original-Bild
- Glossar im Sonnensystem-Modul lädt Begriffe (kein 404 mehr)
4) Folge-Iteration nach erstem Test-Lauf (alle nach der ersten Antwort-Runde)
4.1 404 Glossar-API für Sonnensystem
- Was:
sonnensystem.phpsetztewindow.SONNENSYSTEM_API_BASE = '/geograsim/App/api'— lokal existiert dieser Pfad nicht (richtig wäre/geograsim/App/php/api). Production hat Aliasing, lokal nicht. Klima nutzt schon den korrekten Pfad. - Fix:
sonnensystem.phpjetztBASE_PATH . '/php/api'(Linie 116). - Test: Glossar-Klick in der Sim lädt Inhalte, keine 404-Fehler in der Konsole.
4.2 Buttons in den Aufgaben
- „Neu starten" → „↻ Aufgaben abbrechen und neu starten"
- Neuer Button „← Zurück zur letzten Übung" rechts daneben. Bei Aufgabe 1 ausgegraut (disabled).
- Test: Bei mehreren Aufgaben durchklicken, „Zurück"-Button funktioniert. Bei der 1. Aufgabe ist er ausgegraut.
4.3 Erddrehung-Aufgabe (= erste Aufgabe) Setup neu
- Neuer Camera-Mode
earth-very-close(Distanz 1.8× Erdradius statt 3×). Erde füllt knapp halben Bildschirm. - StartState:
date: "2026-01-01T12:00:00"(= Wien-Mittag, Fähnchen zeigt zur Sonne) — vorher 2026-03-21. - Intro-Text ergänzt: „Am Start ist in Wien Mittag — das rote Fähnchen zeigt direkt zur Sonne."
- Test: Aufgabe „Erddrehung" → Kamera sehr nah an der Erde, Wien-Fähnchen rotiert Richtung Sonne sichtbar in/aus dem Tageslicht.
4.4 Ghost-Erde Race-Condition + Zeitzone-Bug
- Bug 1 (Matrix-Race):
setTimeout(showGhostEarthAtCurrentPosition, 0)lasearthPivot.getWorldPosition(), bevor die animate-Loop die Matrix für das neue timeDays aktualisiert hatte → Ghost saß an der Position der LETZTEN Sequenz. - Bug 2 (Zeitzone):
new Date("2026-01-01")parst ECMAScript-konform als UTC-Midnight. EPOCH =new Date(2026,0,1)= lokale Zeit. In CET = 1h Versatz → timeDays ≈ 0.042 statt 0 → Ghost-Erde 0.04° vom Startpunkt entfernt (klein, aber falsch). - Fix:
showGhostEarthAtCurrentPositionrotiert earthOrbit/earthTilt manuell +updateMatrixWorld(true)BEVOR getWorldPosition → garantiert frische Matrix.- In
obsApplyState: Datums-String per Regex in Komponenten parsen (Y, M, D, h, m, s) und mitnew Date(y, m-1, d, h, m, s)als lokale Zeit konstruieren → keine UTC-Falle.
- Test: Aufgabe „Erdjahr und Schaltjahr" mehrfach starten — Ghost-Erde liegt jedes Mal an derselben Stelle (JAN-Marker).
4.5 Thumbnail-Build erfolgreich
- 132 Thumbs in
assets/img/glossar/thumbs/(WebP 480×270, ~20 KB jeweils). - 329,7 MB → 2,6 MB (99,2 % Ersparnis).
- Build-Skript
App/Don_t_Deploy/build-glossar-thumbs.ps1(idempotent). - Defekt erkannt:
residuallast.png(48 KB, vorzeitiges EOF) — Thumb fehlt für diesen Eintrag, Card lädt via onerror-Fallback das defekte Original.
7) Busfahrt — Ereigniskarten + Glossar + Lehrplan + Submit-Hook
7.1 Ereigniskarten-System (10 Events, evidenzbasiert)
- Daten:
App/sims/busfahrt/assets/data/events.json— 10 Karten:- ev-late-passenger — Fahrgast nach Pause verspätet (Pauschalreisegesetz)
- ev-grenzkontrolle — EU-Außengrenze, Quiz zu Zoll-Vorschriften + CITES
- ev-reifenpanne — Reifenpanne (TÜV-Statistik: 35% aller Bus-Pannen)
- ev-heisse-bremsen — Alpen-Bergabfahrt, Bremsfading-Risiko
- ev-lenkzeit — EU-Verordnung 561/2006, Tachograph, max. 9h Lenkzeit/Tag
- ev-tunnelstau — Brenner-Korridor-Stau, Umweg vs warten
- ev-vignette — GO-Box vs Vignette, Maut-Systeme Europa
- ev-schneeketten — Schneekettenpflicht-Schild, Winter-Trigger
- ev-diebstahl-raststaette — Frankreich-spezifische Autobahn-Diebstahl-Statistik
- ev-notfall-bord — Reisekrankheit/Kinetose, Erste Hilfe
- Engine:
pickEventForOrder(game)mit Realismus-Filter (Schengen-Außengrenze / Alpenpass-Länder / Winter / probability). Wird zwischen settleOrder und loadNextOrder gerufen.applyEventChoicebucht Geld + protokolliert ingame.eventLog. - UI: neues Modal
event-overlaymit SVG-Icon (im Stil) + Sachinfo-Box (ausklappbar) + Glossar-Klick-Links + Lehrplan-Hinweis. - SVG-Icons: 10 Inline-SVGs im offiziellen Bildstil (Forest-Green-Gradient-Hintergrund + weiße Linien-Icons). DALL-E ist aktuell blockiert — SVG hält die App visuell trotzdem stimmig.
Test (lokal):
- L3-Tour starten → öfter Ereigniskarten erleben (Wahrscheinlichkeiten höher als L1).
- Beim Quiz „Grenzkontrolle" Antworten prüfen → korrekt = +50€, falsch = +45min.
- Sachinfo-Box ausklappen → Lehrplan-Hinweis sichtbar, Glossar-Links anklickbar.
7.2 Glossar erweitert (20 neue Begriffe)
- Datei:
App/Don_t_Deploy/2026-05-30-glossar-busfahrt-events.sql(idempotent, SET NAMES utf8mb4) - Begriffe: zoll, schengen, cites, vignette, go-box, tachograph, lenkzeit, schneekettenpflicht, bremsfading, motorbremse, pauschalreise, kinetose, alpenpass, maut, asfinag, warndreieck, panne, beförderungsvertrag, eu-aussengrenze, brennerkorridor
- Lokal eingespielt. Bei Production-Deployment: SQL erneut mit
mysql --default-character-set=utf8mb4ausführen.
7.3 Lehrplan-Dokumentation
- Datei:
App/sims/busfahrt/LEHRPLAN.md— vollständiges Mapping nach österreichischem Lehrplan GW Sek I (Lehrplan 2023). - Themen: Geographie, Wirtschaft, Politische Bildung, Verkehrserziehung, Mathematik, Biologie, Physik, Sprachen.
- Pro Event ein klares Themen-Mapping inkl. Glossar-Querverweise.
7.4 Submit-Hook für Busfahrt (Bug-Fix vom Atlas-Bericht 2026-05-05)
- Was vorher: Busfahrt rief KEINEN Plattform-API-Endpoint — Schüler*innen-Ergebnisse verschwanden ins Nichts.
- Was jetzt:
submitBusfahrtTour()schickt am Tour-Ende einsubmit_assessmentan/php/api/progress.phpmit: level, stars, score, duration_ms, results.budget/earnings/wonOrders/totalOrders/quizFirstTry/eventCount. - Aktualisiert auch GGS_LIVE_STATE-Felder: levelId/orderIndex/totalOrders/budget/wonOrders/lastCityTitle/lastMargin/quizFirstTry — passend zum neuen
LIVE_PRIMARY_FIELDS.busfahrt-Schema in teacher.html.
Test:
- Tour zu Ende spielen → assessments-Tabelle in DB enthält neuen Eintrag mit sim_id='busfahrt'.
- Lehrer-Cockpit → Tab „Ergebnisse" → Klasse → Busfahrt zeigt den Run als Karte.
8) Fluggesellschaft — Neues Modul V1 funktional
8.1 Daten + Pool
- Migration:
App/sims/fluggesellschaft/scripts/migrate-from-busfahrt.py— kopiert 53 L4-Aufträge aus Busfahrt + 16 Asien-Aufträge. - Asien-Lücke gefüllt: 7 neue Städte (Tokio, Peking, Delhi, Bangkok, Singapur, Seoul, Jakarta) inkl. infoText DE+Easy, Zeitzone, Kontinent.
- Hub: Frankfurt (FRA) hinzugefügt als Heimat-Stadt.
- Quiz-Fragen: Generator erweitert auf 2 Frage-Typen (Land + Kontinent), pro Auftrag alterniert deterministisch.
- Endstand: 69 Aufträge (L1=18, L2=29, L3=22), 44 Städte.
8.2 Engine
App/sims/fluggesellschaft/engine.js— Großkreis-Routing (greatCirclePoints), Quiz mit 2 Typen, ECON pro Level (Tap-Toleranz 250/200/150 km, Nachtflug-Quote 15/30/60%, Quiz-Geld ±100/150/200 €), CO₂-Bilanz (0.18 kg/Pax/km × 180 Pax).- Submit-Hook + GGS_LIVE_STATE inline in
game.html.
8.3 UI
App/sims/fluggesellschaft/game.html— Leaflet-Karte mit 3 Tile-Layern:- ESRI World Imagery (Satellite, Default) — empfohlen für Welt-Sicht
- OpenStreetMap — bekannte Strukturen, Beschriftungen
- CARTO Dark — Nachtflug-Atmosphäre
- Toggle-Button 🛰️ in Topbar wechselt durch
- Großkreis-Polyline orange-gestrichelt, Flugzeug-Animation (✈) entlang der Route
- Buchhaltungs-Tabelle mit Quiz-Bonus/Strafe + CO₂-Zeile
- Endscreen: Quiz-Stats + Gesamt-CO₂ in Tonnen + Hektar-Wald-Äquivalent
8.4 Plattform-Integration
- PHP-Wrapper:
App/pages/fluggesellschaft.php(analog busfahrt.php — Mode-Check, Locked-Page, Asset-Path-Rewrite, Cockpit-Link) - module_info DB-Eintrag angelegt (status='beta', icon='✈', page_url='fluggesellschaft')
- LIVE_PRIMARY_FIELDS.fluggesellschaft in
teacher.html: 8 Spalten (level, flug, budget, flüge ✓, CO₂, letztes Ziel, zeitzone, quiz auf anhieb) renderFluggesellschaftRuninteacher.htmlfür Lehrer-DrilldownrenderFluggesellschaftOwnRuninschueler.htmlfür Schüler-eigene-Verlauf-Ansicht
8.5 Glossar + Lehrplan
- 9 neue Glossar-Begriffe (SQL:
App/Don_t_Deploy/2026-05-30-module-fluggesellschaft.sql): großkreis · zeitzone · datumsgrenze · klimazone · co2-flugverkehr · kontinent · hub-flughafen · jetstream · cockpit-air-traffic - Lehrplan-Mapping:
App/sims/fluggesellschaft/LEHRPLAN.md— Welt-Geographie, Mathematik (Großkreis), Physik (Jetstream, Atmosphäre), Politische Bildung (Zeitzonen, ICAO), Umwelt (CO₂)
8.6 Bekannte Lücken
- Asien-Stadtbilder fehlen (DALL-E blockiert) — onerror-Fallback aktiv, Bild unsichtbar
- Splash-Image fehlt (gleicher Grund)
- Keine Events-Karten (analog Busfahrt) — für spätere Iteration vorgemerkt
Test lokal (gemeinsam mit Thomas):
localhost/geograsim/App/fluggesellschaftaufrufen → Welcome → Quiz → Karten-Tap → Resolution mit Großkreis-Animation → InfoCard mit Zeitzone + CO₂ → Endscreen mit Bilanz.- Levelwechsel (Forced-Level über Lehrer-Cockpit) durchtesten.
- Lehrer-Cockpit → Live-View → Flug-Schüler*in startet → Felder erscheinen mit korrekten Werten.
Online-Test-Skript (post-deployment to TEST):
- geograsim.at/fluggesellschaft lädt ohne 404
- L1 → 10 Flüge, L2 → 14, L3 → 18 Flüge in der Tour
- Karten-Tile-Toggle 🛰️ wechselt Esri → OSM → Dark
- Großkreis-Linie sichtbar zwischen Frankfurt und Ziel
- Quiz wechselt zwischen „In welchem Land?" und „Auf welchem Kontinent?"
- CO₂-Bilanz in InfoCard + Endscreen + Topbar
- Zeitzone-Hinweis in InfoCard („Tokio ist 8h voraus")
- Submit am Tour-Ende → assessments-Eintrag in DB
- Lehrer-Cockpit Live-View zeigt Flug-Schüler*in mit allen Spalten
- Detail-Drilldown zeigt Flug-Run-Karte mit CO₂-Stat
11) Iteration 2026-05-31 — Profil-Polish + Avatar-Generierung + Lehrer-Cockpit
11.1 Profil-Seite: Schüler-Navi + Lehrer-Navi + Hash-Routing
- Schüler-Tabs in profil.html: Meine Module / Meine Erfolge / Profil — Klick führt zurück zu schueler.html mit Hash (
#achievements,#profile). - Lehrer-Tabs in profil.html: Übersicht / Modulfreigabe / Klasse / Live / Ergebnisse / Lizenzen / Profil — analog mit Hash.
- Hash-Listener in schueler.html UND teacher.html: liest
location.hashbeim Laden +hashchange-Event und schaltetswitchTab()automatisch. - Sichtbarkeit der Tab-Bar wird per role (
student/teacher) gesteuert.
11.2 Sonnensystem-Eigen-Verlauf umgebaut auf Sessions
- Problem: task_solved-Submits (eine pro gelöster Aufgabe, Live-Heartbeat) wurden im Schüler-Eigen-Verlauf als 20+ einzelne Karten gezeigt.
- Fix:
groupSonnensystemSessions()clustert task_solved + set_complete zu Tour-Sessions (1h-Gap oder set_complete schließt ab).- Orange linker Rand = halbfertig (kein set_complete)
- Grün = abgeschlossen
- Aufklappbare Details: Zeitraum, gelöste Aufgaben, Mehrfachversuche, neue Achievements.
- Lehrer-Drilldown in teacher.html bekommt dieselbe Logik (
groupSonnensystemSessionsTeacher+renderSonnensystemSessionTeacher).
11.3 Energiemanager Onboarding + Netzfrequenz erweitert
- Onboarding (4 Schritte) komplett umgeschrieben — von Stichpunkten zu erzählenden vollständigen Sätzen.
- Netzfrequenz-Glossar (DB + Sim-Fallback) startet jetzt mit Wechselstrom-Grundlage: „In unseren Steckdosen fließt kein Gleichstrom wie aus einer Batterie, sondern Wechselstrom..." + Chor-Metapher + Pulsschlag + EU-weite Synchronisation Portugal–Polen.
- Scope-Bug behoben:
setSummaryClose()undsetSummaryNext()waren im IIFE versteckt → ReferenceError beim Schließen-Klick. Beide nunwindow.X = X.
11.4 Avatar-System: 6 × 12 = 72 Avatare mit Namen + 3 neue Gruppen
- Datenstruktur in profil.html:
AVATAR_GROUPS = [{name, color, items: [{slug, name, emoji}]}] - 3 neue Gruppen:
- Aliens erforschen die Welt (12) — Zorblax/Aquana/Tempest/Urbanix/Faunor/Floranth/Magmara/Glacium/Solara/Veridia/Altimos/Marinus (im Comic-Stil)
- Berühmte Forschungsmaschinen (12) — Trieste, Graf Zeppelin, Charlière, Fram, HMS Beagle, Halleysche Tauchglocke, Voyager 1, Vostok-Eisbohrer, Curiosity, Landsat, FS Meteor, Meteosat
- Berühmte Forscher*innen (12) — Humboldt, Mercator, Cook, Marco Polo, Ibn Battuta, Nansen, Piccard, Amundsen, Earhart, Sylvia Earle, Anning, Carson
- 3 bestehende Gruppen je um 2 ergänzt: Ozeanographin/Tropenbiologe, Skaterin/DJ, Tundra-Wolf/Tiefsee-Krake.
- Emoji-Fallback statt Initial-Buchstabe wenn PNG fehlt: stilkonformer farbiger Kreis mit passendem Emoji.
11.5 Avatar-Bilder via OpenRouter+Gemini-2.5-Flash-Image
- OpenAI-Org blockiert wegen fehlender Org-Verification (
billing_hard_limit_reachedauf allengpt-image-*Modellen, beide Accounts geprüft). - Workaround: OpenRouter mit Gemini 2.5 Flash Image — generiert PNG-Avatare im offiziellen Bildstil.
- Generator-Skript:
App/assets/img/avatars/scripts/generate-via-openrouter.py(Python, nutzt curl wegen Inkscape-Python-SSL-Cert-Issue). - Ergebnis: 42 neue PNGs erzeugt (Aliens im Comic-Stil mit großen Augen + warmem Lächeln + kindgerechten Proportionen, Maschinen + historische Persönlichkeiten als Portraits).
- Thumb-Build:
App/Don_t_Deploy/build-avatar-thumbs.ps1(ImageMagickmagick.exe, fester Pfad bei Bedarf). 72 PNGs (71,6 MB) → 72 WebP-Thumbs 256×256 (589 KB, Faktor 120× kleiner). - UI-Anpassung:
profil.html,schueler.html,teacher.htmlladen alle Avatare ausassets/img/avatars/thumbs/avatar-X.webp. Originale bleiben als hochauflösender Fallback.
11.6 Lehrer-Cockpit Avatar-Sichtbarkeit + Save-Bug
- Bug 1:
GET /api/profilefür Lehrer hat das Feldemoji_avatarnie geliefert → Reload zeigte immer Default-👩🏫 → wirkte wie „nicht gespeichert". - Fix:
profile.php:18SELECT erweitert umemoji_avatar. - Bug 2:
selectAvatar()aktualisierte nur den Profil-Button, nicht die Topbar-Pille. - Fix:
selectAvatar()in profil.html sucht jetzt drei Selektoren parallel (#user-emoji,#user-pill .emoji,.user-pill .emoji), nutzt Cache-Buster (?v=Date.now()) damit Browser frisches Image lädt. Funktioniert für Schüler*innen + Lehrkräfte.
11.7 Fleißmessung Toggle: Klasse-gesamt ↔ pro Schüler*in
- Backend (
results.phpEndpointview=activity): neuer ParametergroupBy=module|student. Pro-Student-Modus joinedstudent_sessions→students(Verknüpfung überclass_id + display_name, weil assessments nursession_idhat). - Frontend: Toggle-Button neben Tag/Woche/Monat/Jahr. Card-Überschrift wechselt mit. Tooltip in der Bar zeigt korrekten Namen.
- Bug-Fix dabei: Mein erster Wurf hatte
a.user_id— die Spalte gibt's nicht in assessments → HTML-PHP-Warning statt JSON → SyntaxError im Frontend. Korrekter Join überstudent_sessions.
11.8 Sonnensystem Lehrer-Drilldown — Detail-Verbesserung
- In teacher.html
openStudentRuns(): bei_modDetail.moduleId === 'sonnensystem'werden jetzt Sessions geclustert (analog Schüler-Eigen-Verlauf). - Jede Session als eigene Karte mit orange/grün-Border, aufklappbar.
11.9 Avatar-URL-Refactor (alle 4 HTML-Files)
avatarUrl(slug)→ liefert Thumb-Pfad (thumbs/avatar-X.webp),avatarFullUrl(slug)→ liefert Original-Pfad.schueler.html,teacher.html,profil.html: hardcodedassets/img/avatars/avatar-X.pngglobal ersetzt durchassets/img/avatars/thumbs/avatar-X.webp..png→.webpfür 8 Stellen in teacher.html (Live-View, Drilldown, Ergebnisse-Tab, Lizenzen-Tab, Klassen-Tab).
Test-Skript Ergänzungen (post-deployment to TEST):
- geograsim.at/profil → 6 Gruppen × 12 Avatare sichtbar, mit Namen als Label.
- Klick auf Avatar → Pille rechts oben aktualisiert sofort (auch beim Lehrer).
- Reload nach Avatar-Wahl: Lehrer behält den gewählten Avatar.
- Schüler → Profil-Tab → Sonnensystem-Karte: pro Session statt 20 Karten, orange/grün-Border, klick öffnet Details.
- Lehrer → Ergebnisse-Tab → Schüler-Drilldown auf Sonnensystem: gleiche Session-Logik.
- Lehrer → Ergebnisse → Fleißmessung: Toggle „Nach Modul" / „Nach Schüler*in" funktioniert.
- Energiemanager → Onboarding: 4 erzählende Schritte, kein Stichpunkt-Stil.
- Energiemanager → ⚡-Tachometer klick: Wechselstrom-Erklärung sichtbar.
- Energiemanager → Set-Ende: Modal lässt sich mit „Schließen" UND „Weiter" klicken (war ReferenceError).
- profil.html als Lehrer: Tab-Bar oben sichtbar mit 7 Cockpit-Tabs.
9) Folge-Fixes aus lokalem Test (Thomas-Reports)
9.1 Bug: Stadt wiederholt sich innerhalb einer Tour
- Beobachtung: Lissabon zweimal kurz hintereinander in einer Tour.
- Ursache: Im Pool gibt es pro Stadt mehrere Auftragstypen (A/B/C/D) mit derselben
cityId. Der alte Filter blockierte nur DIREKTE Wiederholung — Lissabon → Porto → Lissabon war erlaubt. - Fix (Bus + Flug Engine): Dreistufiger Filter — bevorzugt Städte, die noch GAR NICHT in der Tour sind. Bei 16 Tour-Aufträgen aus 42+ unique Städten ist das problemlos erfüllbar.
Test:
- L1-Tour spielen → jede Stadt taucht maximal einmal als Ziel auf.
- Mit kleinem Pool (z.B. wenn nur 1 Stadt übrig) greift Fallback auf alten Filter.
9.5 Glossar-Link 404 — falscher Pfad
- Beobachtung: Glossar-Links in Event-Sachinfo zeigten auf
../../glossar.html?slug=X→ Browser löst von URL/busfahrtauf/glossar.html→ 404. Plus: Parameter heißtterm, nichtslug. - Fix: Neuer Helper
glossarHref(slug)baut Pfad auswindow.BUSFAHRT_BASE, nutzt extension-less Route + korrekten Parameter?term=. Funktioniert lokal (/geograsim/App/glossar) + production (/glossar).
9.6 Realismus-Bug: keine Fähren/Tunnel/Sondermaut
- Beobachtung: München → Manchester ohne Eurotunnel-Kosten. Reykjavik → Amsterdam ohne Fähre.
- Fix: Neue Funktion
computeCrossingFee(fromCountry, toCountry)in der Engine deckt 7 typische europäische Übergänge ab:- UK ↔ Festland (Kanaltunnel / Fähre Calais-Dover, ~320 €)
- Italien ↔ Frankreich (Mont-Blanc-Tunnel, ~280 €)
- Österreich ↔ Italien (Brenner-Sondermaut, ~45 €)
- Schweden ↔ Dänemark (Öresundbrücke, ~250 €)
- Frankreich ↔ Schweiz (CH-Zoll-Stichprobe + LSVA, ~40 €)
- Island ↔ Festland (Norröna-Fähre Hirtshals-Tórshavn-Seyðisfjörður, ~520 €)
- Irland ↔ UK / Festland (Stena Line ~150 € / Direktfähre ~290 €)
- Norwegen ↔ Festland-EU (EFTA-Stichprobe + Bompenger, ~35 €)
- Report-Felder erweitert:
crossingFee,crossingLabel,crossingSachinfo,crossingGlossar. InsettleOrderdirekt von der Marge abgezogen. - UI: Neue Crossing-Box in der InfoCard (
bf-crossing, blau hervorgehoben, beim ersten Mal aufgeklappt) zeigt Label, Sachinfo-Text und Glossar-Link. In Buchhaltung als eigene Zeile mit −Betrag. - Glossar: 4 neue Einträge:
norroena-faehre,kanaltunnel,mont-blanc-tunnel,oeresundbruecke.
9.7 UK-Hinweis im Quiz-Feedback
- Beobachtung: Schüler*innen kennen „Großbritannien" — UK / „Vereinigtes Königreich" verwirrt.
- Fix: Beim Quiz-Erfolg mit Antwort „Großbritannien" wird zusätzlich erklärt: „Das Land heißt offiziell auch ‚Vereinigtes Königreich' (UK = United Kingdom). ‚Großbritannien' ist eigentlich nur die Insel mit England, Schottland und Wales — Nordirland gehört auch zum UK, ist aber auf der anderen Insel."
9.2 Inhalts-Korrektur: „Vereinigtes Königreich" → „Großbritannien"
- Beobachtung: Quiz „In welchem Land liegt Manchester?" → Antwort „Vereinigtes Königreich". Korrekt, aber für Sek I-Schüler*innen ungewohnt.
- Hintergrund: „Vereinigtes Königreich" (UK = Großbritannien + Nordirland) ist politisch präzise. „Großbritannien" ist im Schulalltag vertrauter.
- Fix:
country: "Vereinigtes Königreich"→"Großbritannien"in cities.json (Bus 2 Städte: London + Manchester, Flug 0 Städte). Alle Quiz-Choices (auch Distraktoren in anderen Stadt-Fragen) wurden mit-gepatcht. - Bewusste Ausnahme: Glossar-Eintrag
eu-aussengrenzebehält „Vereinigtes Königreich (UK, seit Brexit 2021)" — dort ist der politische Kontext relevant.
Test:
- Quiz zu London/Manchester → Choices zeigen „Großbritannien"
- Andere Fragen mit UK als Distraktor → ebenfalls „Großbritannien"
10) Folgeiteration 2026-05-31 (UI/Onboarding)
10.1 Profil-Seite: Schüler-Navigation
- profil.html bekommt Tab-Bar (Module / Erfolge / Profil), nur sichtbar für Schüler*innen.
- „Meine Erfolge"-Link →
schueler.html#achievements; Hash-Listener in schueler.html aktiviert den Tab.
10.2 Sonnensystem-Eigen-Verlauf: Sessions statt 20 Karten
- Bug: jeder gelöste Task war eine eigene Karte → 20+ Karten pro Tour.
- Fix:
groupSonnensystemSessions(runs)clustert task_solved + set_complete zu Tour-Sessions (1h-Gap oder set_complete schließt ab). - Orange linke Seitenleiste = Teil-Durchlauf (abgebrochen), grün = abgeschlossen.
- Aufklappbare Details: Zeitraum, Liste gelöster Aufgaben + Mehrfachversuche, neue Achievements.
- CSS:
.ownruns-card--complete(grün),.ownruns-card--partial(orange).
10.3 Profil-Avatare: 72 Avatare (6 × 12) + Namen + 3 neue Gruppen
- Gruppen erweitert von 3×10 = 30 auf 6×12 = 72:
- Geo-Welt (12, internationale Nationen): + Ozeanographin (Linnea, NO), Tropenbiologe (Kwame, GH)
- Cool & lustig (12): + Skaterin (Reni), DJ (Kofi)
- Tier-Begleiter (12): + Tundra-Wolf (Yuki), Tiefsee-Krake (Otto)
- NEU Aliens erforschen die Welt (12): Zorblax, Aquana, Tempest, Urbanix, Faunor, Floranth, Magmara, Glacium, Solara, Veridia, Altimos, Marinus
- NEU Berühmte Forschungsmaschinen (12): Trieste (Piccard-Tauchboot), Graf Zeppelin, Charlière (1783), Fram, HMS Beagle, Halleysche Tauchglocke, Voyager 1, Vostok-Eisbohrer, Curiosity, Landsat, FS Meteor, Meteosat
- NEU Berühmte Forscher*innen (12): Humboldt, Mercator, Cook, Marco Polo, Ibn Battuta, Nansen, Auguste Piccard, Amundsen, Earhart, Sylvia Earle, Mary Anning, Rachel Carson
- Datenmodell:
AVATAR_GROUPS = [{name, color, items: [{slug, name}]}]. - Picker UI: Bild + Name als Label darunter + Tooltip. Sektion-Header in Gruppen-Farbe.
- Fallback bei fehlendem PNG: SVG-Initial-Kreis in Gruppen-Farbe (
makeAvatarFallback). - Memory:
reference_avatar_slugs.mdkomplett überarbeitet.
Wichtig: 42 PNGs fehlen noch (DALL-E-Account-Limit). Bis dahin zeigt der Initial-Fallback. Sobald OpenAI wieder Generierung erlaubt → Skript-Stub anlegen mit den Prompts aus der Memory.
10.4 Energiemanager-Onboarding: Anwaltsbrief → erzählend
- 4 Onboarding-Schritte komplett umgeschrieben — vollständige Sätze, vor allem Schritt 4 baut explizit auf dem Wechselstrom-Konzept auf.
- Glossar-Links bleiben in den Texten verankert.
10.5 Energiemanager-Netzfrequenz-Info: Wechselstrom-Hintergrund
- Glossar-Eintrag
netzfrequenz(DB + lokales Fallback in game.html) komplett überarbeitet. - Erklärt: Wechselstrom + 50Hz + Chor-Metapher + Zusammenhang Erzeugung/Verbrauch + Toleranzbereich + automatische Schutzmaßnahmen + EU-weite Synchronisation Portugal–Polen.
- Klick auf den Tachometer-Header öffnet jetzt diese ausführliche Erklärung statt des Drei-Satz-Stubs.
Test:
- Profil-Seite → Tab-Bar oben sichtbar, „Meine Erfolge" springt nach schueler.html zum richtigen Tab.
- Profil → Avatar ändern → 6 Gruppen × 12 Avatare sichtbar, Namen als Label, fehlende PNGs zeigen Initial-Kreis (nicht kaputtes Bild).
- Sonnensystem → Meine Erfolge → Karten pro Session statt pro Einzelaufgabe; orange für abgebrochene Tours, grün für abgeschlossene; Klick öffnet Details.
- Energiemanager neu öffnen → Onboarding erzählerisch, ⚡-Tachometer klick öffnet Wechselstrom-Erklärung.
4.6 Bekannte Blocker (ALT, jetzt veraltet — siehe 7/8)
- Turbinen-Bild + residuallast-Bild Refresh: DALL-E-3 weg, Account hat nur noch
gpt-image-*-Familie + Billing-Hard-Limit erreicht. Erst lösbar nach OpenAI-Account-Anpassung durch Thomas. Beide Originale bleiben vorerst wie sie sind.
5) Modul Busfahrt — Zwischenfragen + Geld-Effekt + 2 Bugs
5.1 Zwischenfragen-Refactor: Frage bei JEDER Fahrt + Geld-Effekt
- Was vorher: Nur Typ-B-Aufträge (~15 % der Tour) hatten eine Hauptstadt-Multiple-Choice — ohne Geld-Effekt, nur als „Filter" für den Karten-Tap.
- Was jetzt: Bei JEDEM Auftrag ein Quiz VOR dem Karten-Tap.
- Typ B unverändert (Hauptstadt-Frage, Stadtnamen als Choices).
- Typ A/C/D: generierte Land-Frage „In welchem Land liegt X?" aus
cities.json.
- Geld-Effekt (neue ECON-Werte):
- Richtig beim 1. Versuch → +50 € Bonus
- Jede falsche Antwort → −50 € Strafe (endlos probierbar, wird teuer)
- Buchhaltung: Quiz-Bonus / -Strafe wird in der InfoCard-Tabelle separat ausgewiesen, ist Teil der angezeigten Tour-Marge.
- Endscreen: neue Zeilen „Quiz richtig auf 1. Versuch: X / N" und „Quiz-Bonus / -Strafe". Fahrtenbuch zeigt 🧠-Badge pro Tour.
- Daten: Generator
App/sims/busfahrt/scripts/generate-city-questions.pylegt pro Stadt einequestionan. Re-runnable, überschreibt nicht. - Files:
engine.js(neue FunktionevaluateQuestion, erweitertenextOrder+settleOrder),game.html(showChoiceModal generischer, neue Quiz-Logik),cities.json(+144 question-Einträge).
Test:
- Tour starten → erste Frage erscheint (egal welcher Auftragstyp).
- Bei richtiger 1.-Antwort: Topbar-Budget +50 €, Feedback „+50 € Bonus".
- Bei falscher Antwort: Topbar −50 €, Feedback „−50 € Strafe", weiter probieren.
- Auftrag abschließen → InfoCard zeigt Quiz-Zeile in Buchhaltung.
- Tour-Ende → Endscreen zeigt „Quiz richtig auf 1. Versuch: X / N" + Bonus/Strafe-Summe.
5.2 Salzburg-Text Korrektur
- War: „im Westen Österreichs an der Salzach"
- Jetzt: „in der Mitte Österreichs an der Salzach, nahe der deutschen Grenze und am Rand der Alpen"
5.3 Schüler-Link 404 Bug
- War:
href="/schueler"→ lokal 404 (lokaler BASE_PATH ist/geograsim/App). - Jetzt:
href="../../schueler.html"(relativer Pfad, funktioniert lokal + Production). - Zwei Stellen: Topbar-🏠-Button + End-Overlay-„Zur Übersicht"-Button.
5.4 Bekannte Schwäche (TODO F1 in busfahrt/TODO.md)
- Generator-Distraktoren sind zufällig aus 98 Ländern gewählt → didaktisch oft zu leicht (z.B. „Wien: Japan / Malaysia / Österreich").
- Plan F1: plausiblere Distraktoren (Nachbar-/Kontinent-Logik).
- Plan F2: für ~20–30 Sensationsstädte eine zusätzliche kuratierte Frage (Fluss, Berg, Wahrzeichen).
- Plan F3: Easy-Sprache der Fragen separat formulieren.
- Plan G1: Reykjavik / Island-Anreise didaktisch ausschmücken (Norröna-Fähre).
Online-Test-Skript Ergänzungen (post-deployment to TEST):
- geograsim.at/busfahrt → Tour starten → bei JEDEM Auftrag Quiz vor Karten-Tap
- Quiz-Bonus / -Strafe in Topbar und Buchhaltung sichtbar
- Endscreen zeigt Quiz-Summen + 🧠-Badges im Fahrtenbuch
- 🏠 Schülerseiten-Button funktioniert (kein 404)
- End-Screen Button „Zur Übersicht" landet auf schueler.html (kein 404)
- Salzburg im InfoCard sagt „in der Mitte Österreichs"
6) Busfahrt 3-Level-Refactor + Fluggesellschaft-Skelett
6.1 L3-Aufträge umgelabelt auf L4 (53 Stück)
- Migrations-Skript:
App/sims/busfahrt/scripts/relabel-l3-to-l4.py(idempotent). - Vor: 53 außereuropäische Aufträge (USA 6, Brasilien 6, Kanada 5, Australien 4, Südafrika 5, Marokko 3, Ägypten 3, …) liefen als L3 im Bus-Pool.
- Nach: Alle als
level: "l4"markiert. Im Busfahrt-filterPoolByLevelexplizit ausgeschlossen — L3 nutzt jetzt nur den kumulierten L1+L2-Pool (106 europäische Aufträge). - Reservat-Zweck: Daten bleiben in
busfahrt/orders.jsonals Reservat für das neue Fluggesellschaft-Modul.
6.2 Busfahrt Engine: ECON pro Level
tapToleranceKm,nightFirst,nightChanceAfter,quizBonusFirstTryEur,quizPenaltyPerWrongEursind jetzt pro-Level-Objekte{l1, l2, l3}.- Neue Helper-Funktion
econ(key, levelId)löst auf, mit Fallback auf l1. - Werte:
| L1 | L2 | L3 | |
|---|---|---|---|
| Tap-Toleranz | 10 km | 10 km | 5 km |
| Nachtfahrt-Start (0-basiert) | ab #6 | ab #4 | ab #2 |
| Nachtfahrt-Chance danach | 20 % | 30 % | 90 % |
| Quiz-Bonus richtig 1. Versuch | 50 € | 75 € | 100 € |
| Quiz-Strafe pro Fehlversuch | 50 € | 75 € | 100 € |
| Tour-Länge | 16 | 20 | 24 |
| Tour-Ziel | 8.000 € | 20.000 € | 35.000 € |
Begründung L3 = „Erfahrene:r Buslenker*in": 90 % Nacht (kein Navi) + halbe Tap-Toleranz + Quiz teuer. Pool bleibt L1+L2 — keine neuen Daten nötig, keine neue Mechanik.
Test:
- L1 starten: 16 Aufträge, mild, ab #6 Nacht.
- L2 starten: 20 Aufträge, schon ab #4 Nacht, mehr Quiz-Geld.
- L3 starten: 24 Aufträge, ab #2 fast nur Nacht, 5-km-Toleranz, 100-€-Quiz.
6.3 Fluggesellschaft-App — Skelett gegründet
- Pfad:
App/sims/fluggesellschaft/(README + leererassets/data/) - Inbox:
App/sims/_inbox/fluggesellschaft/_status.md - Memory:
project_fluggesellschaft_state.md(Index in MEMORY.md ergänzt) - Status: Konzept-Phase. Kein Code, nur Doku.
- README enthält: Begründung warum eigenes Modul, Mechanik-Tabelle (Bus vs. Flug), Wiederverwendungs-Liste aus Busfahrt, Asien-Lücke als TODO.
Hier ist nichts zu testen — neuer Ordner, leer.
Folgeschritte (nächste Iteration):
- L4-Aufträge aus busfahrt/orders.json migrieren → fluggesellschaft/orders.json
- Engine-Stub: Großkreis-Routing statt OSRM
- UI-Stub: game.html minimal-Klon
- Asien-Daten ergänzen (Tokio, Peking, Delhi, Bangkok, Singapur, Seoul, Jakarta)
- Splash-Bild via DALL-E (BLOCKIERT durch OpenAI-Limit)