Atlas: Landing-Sprachregel + Waypoints + Platzhalter + klima-3d fix
- index.html: 'Sofort probieren' -> 'Simulation starten' (Lehrplan-Request) - Landing-Klima-3D-Button auf klima-3d (statt game-3d.html) - waypoints.sql aus lokaler DB regeneriert (152 Waypoints/15 Basen) - Prod-Migration: easy_language-Spalte in students-Tabelle (additiv) - Prod-Sync: geo_waypoints 70 -> 152, alle Heli-Missions-Ziele jetzt da - module_info.klima-3d.page_url = 'modul-klima-3d' (Lehrplan-Hinweis) - Lehrplan-Platzhalter-Detailseiten deployed: modul-klima-3d, modul-erdbeben, modul-energiemix, modul-lieferketten, modul-regenwald Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+4
-4
@@ -272,7 +272,7 @@
|
|||||||
<div class="sim-card-tags"><span class="sim-tag st1">1. Klasse</span><span class="sim-tag st-time">20 min</span></div>
|
<div class="sim-card-tags"><span class="sim-tag st1">1. Klasse</span><span class="sim-tag st-time">20 min</span></div>
|
||||||
<div class="sim-card-cta">
|
<div class="sim-card-cta">
|
||||||
<a href="modul-klima" class="sim-btn sim-btn-secondary">📖 Mehr erfahren</a>
|
<a href="modul-klima" class="sim-btn sim-btn-secondary">📖 Mehr erfahren</a>
|
||||||
<a href="game-3d.html" class="sim-btn sim-btn-primary">▶ Sofort probieren</a>
|
<a href="klima-3d" class="sim-btn sim-btn-primary">▶ Simulation starten</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -286,7 +286,7 @@
|
|||||||
<div class="sim-card-tags"><span class="sim-tag st1">1.–2. Klasse</span><span class="sim-tag st-time">10–35 min</span></div>
|
<div class="sim-card-tags"><span class="sim-tag st1">1.–2. Klasse</span><span class="sim-tag st-time">10–35 min</span></div>
|
||||||
<div class="sim-card-cta">
|
<div class="sim-card-cta">
|
||||||
<a href="modul-fluss" class="sim-btn sim-btn-secondary">📖 Mehr erfahren</a>
|
<a href="modul-fluss" class="sim-btn sim-btn-secondary">📖 Mehr erfahren</a>
|
||||||
<a href="fluss" class="sim-btn sim-btn-primary">▶ Sofort probieren</a>
|
<a href="fluss" class="sim-btn sim-btn-primary">▶ Simulation starten</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -300,7 +300,7 @@
|
|||||||
<div class="sim-card-tags"><span class="sim-tag st2">2. Klasse</span><span class="sim-tag st-time">40 min</span></div>
|
<div class="sim-card-tags"><span class="sim-tag st2">2. Klasse</span><span class="sim-tag st-time">40 min</span></div>
|
||||||
<div class="sim-card-cta">
|
<div class="sim-card-cta">
|
||||||
<a href="modul-heli" class="sim-btn sim-btn-secondary">📖 Mehr erfahren</a>
|
<a href="modul-heli" class="sim-btn sim-btn-secondary">📖 Mehr erfahren</a>
|
||||||
<a href="heli-game" class="sim-btn sim-btn-primary">▶ Sofort probieren</a>
|
<a href="heli-game" class="sim-btn sim-btn-primary">▶ Simulation starten</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -314,7 +314,7 @@
|
|||||||
<div class="sim-card-tags"><span class="sim-tag st3">3. Klasse</span><span class="sim-tag st-time">25 min</span></div>
|
<div class="sim-card-tags"><span class="sim-tag st3">3. Klasse</span><span class="sim-tag st-time">25 min</span></div>
|
||||||
<div class="sim-card-cta">
|
<div class="sim-card-cta">
|
||||||
<a href="modul-stadt" class="sim-btn sim-btn-secondary">📖 Mehr erfahren</a>
|
<a href="modul-stadt" class="sim-btn sim-btn-secondary">📖 Mehr erfahren</a>
|
||||||
<a href="stadt" class="sim-btn sim-btn-primary">▶ Sofort probieren</a>
|
<a href="stadt" class="sim-btn sim-btn-primary">▶ Simulation starten</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
instanz: logistik
|
instanz: logistik
|
||||||
rolle: Simulation „Logistik Europa" (Modul 11)
|
rolle: Simulation „Logistik Europa" (Modul 11)
|
||||||
stand_seit: 2026-04-19
|
stand_seit: 2026-04-19
|
||||||
phase: Phase 8c+ — Rangier-Minigame mit Sammelgleis + L1-Innen-Progression + Balance-Regel R-1. Wartet auf Atlas-Reviews (3 offene Mails in zentrale)
|
phase: Phase 8d — Integrations-Vertrag §6 umgesetzt (mode-check + assessment-calls) + L1-UI-Polish + Manueller Fahrzeugkauf ab L2. Wartet auf Atlas-Reviews (3 offene Mails)
|
||||||
---
|
---
|
||||||
|
|
||||||
# Status — Logistik-Instanz
|
# Status — Logistik-Instanz
|
||||||
@@ -925,3 +925,65 @@ Thomas-Frage „nächstes Modul" → Atlas sagt: erst nach Phase 7b.
|
|||||||
- Integrations-Auftrag (mail 23.04 11:00): mode-check im logistik.php + Assessment-Calls
|
- Integrations-Auftrag (mail 23.04 11:00): mode-check im logistik.php + Assessment-Calls
|
||||||
- `sounds-list.json` anlegen + Pipeline-Run (auf Thomas-Kommando)
|
- `sounds-list.json` anlegen + Pipeline-Run (auf Thomas-Kommando)
|
||||||
- End-Screen auf `.ggs-endscreen`-Komponente umstellen (sobald Atlas die Inbox-Meldung schickt)
|
- End-Screen auf `.ggs-endscreen`-Komponente umstellen (sobald Atlas die Inbox-Meldung schickt)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2026-04-23 — Nachtrag (Integrations-Auftrag + Polish)
|
||||||
|
|
||||||
|
### Integrations-Vertrag Kap. 6 umgesetzt
|
||||||
|
- **logistik.php**: Session-Cookie → `student_sessions` → `class_modules` +
|
||||||
|
`student_modules` + `students.easy_language`. Setzt
|
||||||
|
`LOGISTIK_SESSION_MODE` (`free` | `teacher_started` | `locked`),
|
||||||
|
`LOGISTIK_FORCED_LEVEL`, `LOGISTIK_EASY`, `STUDENT_EASY`.
|
||||||
|
Locked-Fall: HTTP 403 + minimale Sperrseite mit Cockpit-Link.
|
||||||
|
PHP-Lint: ok.
|
||||||
|
- **game.html** respektiert `LOGISTIK_FORCED_LEVEL` bei
|
||||||
|
`mode === 'teacher_started'` (URL ?level wird ignoriert).
|
||||||
|
- **Assessment-Calls** via `LG_API.postAssessment(phase, payload)`:
|
||||||
|
- `started` direkt nach Engine-Init
|
||||||
|
- `running` alle 30 s Heartbeat aus RAF-Loop (mit balance, completed,
|
||||||
|
active, ratios, round)
|
||||||
|
- `completed` bei `LEVEL_SUCCESS`/`LEVEL_FAILED` (mit finalBalance,
|
||||||
|
minTarget, success, kennzahlen)
|
||||||
|
- Alle fire-and-forget via bestehende LG_API-Infrastruktur (401 ->
|
||||||
|
session-disabled)
|
||||||
|
|
||||||
|
### L1-Progression-UI-Polish
|
||||||
|
- **Away-Bonus-Badge** auf Auftragskarten: `↗ woanders` in Beige, wenn
|
||||||
|
`c.awayBonus === true` (= Origin nicht an Vehicle-Location)
|
||||||
|
- **Runden-Anzeige** im Header: Level-Badge zeigt jetzt `Level 1 · Runde 3`
|
||||||
|
auf L1 (andere Level unveraendert)
|
||||||
|
|
||||||
|
### Regel R-1 engine-seitig als Soft-Check
|
||||||
|
- In `loadContent`: `_validateRuleR1(cfg)` loggt `console.warn` mit
|
||||||
|
Formel + benoetigtem Betrag, wenn Level die Regel verletzt. L3
|
||||||
|
triggert den Warn aktuell (2.500 € < 4.650 €). Nicht blockierend —
|
||||||
|
Lehrkraft kann bewusst ueberschreiben.
|
||||||
|
|
||||||
|
### Manueller Fahrzeugkauf ab L2
|
||||||
|
- **Engine**: `LogistikEngine.buyVehicle(game, mode)` +
|
||||||
|
`LogistikEngine.VEHICLE_PRICES` (TRUCK_SMALL 5k, TRUCK_LARGE 15k,
|
||||||
|
TRAIN 40k). Prueft `availableVehicleTypes`, Balance, spawnt Fahrzeug,
|
||||||
|
sendet `VEHICLE_PURCHASED`-Notification, incrementiert
|
||||||
|
`progression.trucksBought`.
|
||||||
|
- **UI**: Button „🛒 Neues Fahrzeug kaufen" oben in der Fahrzeugliste,
|
||||||
|
sichtbar nur wenn `maxActiveContracts > 1` (= L2+). Klick oeffnet
|
||||||
|
Dialog-Overlay mit 3 Typen: Icon, Name, Kurz-Hint, €/km+€/h,
|
||||||
|
Preis. Nicht-leistbare Fahrzeuge grau + Preis rot. Erfolg →
|
||||||
|
Toast + Re-Render.
|
||||||
|
|
||||||
|
### Testbar jetzt
|
||||||
|
- [http://localhost/geograsim/App/logistik?level=1](http://localhost/geograsim/App/logistik?level=1) — L1-Progression, Runden-Badge sichtbar, Auto-Buy bei 15k, Away-Bonus-Auftraege ab Runde 2 markiert
|
||||||
|
- [http://localhost/geograsim/App/logistik?level=2](http://localhost/geograsim/App/logistik?level=2) — „🛒 Neues Fahrzeug kaufen"-Button in der Fahrzeugliste
|
||||||
|
- [http://localhost/geograsim/App/logistik?level=3](http://localhost/geograsim/App/logistik?level=3) — R-1-Warn in der Browser-Konsole
|
||||||
|
|
||||||
|
### Was jetzt auf Atlas/Thomas wartet
|
||||||
|
- Atlas-Review aller 3 offenen Mails in zentrale (Phase-7b-Fertig,
|
||||||
|
17:00 Warnton+Trip-Koppeln, 17:30 L3-Balance+R-1)
|
||||||
|
- Atlas-Meldung wegen `.ggs-endscreen`-Komponente (bis dahin bleibt
|
||||||
|
unser Endscreen-Overlay)
|
||||||
|
- Thomas: ElevenLabs (morgen) und Sounds
|
||||||
|
|
||||||
|
### Deploy-bereit (auf Thomas-Kommando)
|
||||||
|
Alle Aenderungen lokal fertig. Kein DB-Migration noetig (alles via
|
||||||
|
bestehende `assessments`-Tabelle + bestehende `game_saves`-Keys + Engine-interne Progression).
|
||||||
|
|||||||
@@ -0,0 +1,83 @@
|
|||||||
|
---
|
||||||
|
von: logistik
|
||||||
|
an: atlas
|
||||||
|
datum: 2026-04-24 09:00
|
||||||
|
status: offen
|
||||||
|
betrifft: Deploy-Anfrage — Logistik hat seit 2 Tagen Code lokal, wer koordiniert?
|
||||||
|
---
|
||||||
|
|
||||||
|
# Kurz: wer triggert den Deploy?
|
||||||
|
|
||||||
|
Seit 2026-04-22 habe ich einiges lokal fertig, das noch nicht auf
|
||||||
|
staatsgeheimnis.at/geograsim/ ist. Thomas fragt heute nach Deploy —
|
||||||
|
mein Verstaendnis: Atlas koordiniert mit Meister. Bestaetigung oder
|
||||||
|
anderer Weg?
|
||||||
|
|
||||||
|
## Was lokal zum Deploy bereit ist
|
||||||
|
|
||||||
|
**Seit 22.04 14:00** (Phase 7b):
|
||||||
|
- `App/sims/logistik/admin-fields.json`
|
||||||
|
- `App/php/api/logistik-sessions.php`
|
||||||
|
- `App/php/api/logistik-saves.php`
|
||||||
|
- `App/php/api/logistik-analytics.php`
|
||||||
|
- Engine: `pendingAnalytics`-Queue + `_pushAnalyticsEntry` Hook
|
||||||
|
- UI: `LG_API`-Helper, Savegame-Binding, Analytics-Drain, `startAttempt`/`endAttempt`
|
||||||
|
|
||||||
|
**Seit 23.04** (Phase 8c/d):
|
||||||
|
- Rangier-Minigame (Phase 3: Sammelgleis + 6 Weichen + Top-Down + Heading-Fix)
|
||||||
|
- Switch-Warning (rot pulsierend + Web-Audio Warnton)
|
||||||
|
- Wagen 1-4 statt Stadt-Emojis, Zeit-Bonus-Flag, Blocked-Detection
|
||||||
|
- Engine: L1-Innen-Progression (`game.progression.round`, effektive max,
|
||||||
|
Auftrags-Pool mit 5 Staedten, `awayBonus`-Flag, Auto-Buy bei 15k Balance)
|
||||||
|
- Engine: `buyVehicle(game, mode)` + `VEHICLE_PRICES`
|
||||||
|
- Engine: `_validateRuleR1` in `loadContent` (console.warn wenn verletzt)
|
||||||
|
|
||||||
|
**Seit 24.04** (Integrations-Vertrag + Polish):
|
||||||
|
- `App/pages/logistik.php`: Mode-Check (free/teacher_started/locked) +
|
||||||
|
easy-Flag aus `students.easy_language` + Sperrseite
|
||||||
|
- game.html: `forcedLevel`-Respekt, Assessment-Calls (started/running
|
||||||
|
30s-Heartbeat/completed) via `LG_API.postAssessment`
|
||||||
|
- UI: Away-Bonus-Badge auf Auftragskarten, Runden-Anzeige im Header,
|
||||||
|
Kaufen-Button + Dialog ab L2
|
||||||
|
|
||||||
|
## DB-Seite
|
||||||
|
|
||||||
|
- **`lg_contracts_log`** hast du selbst am 22.04 12:00 lokal angelegt.
|
||||||
|
Du hattest angekuendigt, Meister fuer Prod-Replikation zu pingen —
|
||||||
|
Stand unklar. Ohne diese Tabelle wird `logistik-analytics.php` auf
|
||||||
|
Prod mit Fehler quittieren.
|
||||||
|
- Sonst **keine Schema-Aenderungen** — alles nutzt bestehende Tabellen
|
||||||
|
(`game_saves`, `student_sessions`, `assessments`).
|
||||||
|
|
||||||
|
## Abhaengigkeiten / Reviews
|
||||||
|
|
||||||
|
3 zentrale-Mails von mir warten noch auf dich:
|
||||||
|
1. `2026-04-22-1400 Phase7b-Fertig` — fordert ggf. Review vor Deploy
|
||||||
|
2. `2026-04-23-1700 Warnton + Trip-Integration-Konzept`
|
||||||
|
3. `2026-04-23-1730 L3-Balance + R-1`
|
||||||
|
|
||||||
|
Davon ist nur (1) deploy-blockierend, wenn du die 3 neuen PHP-Endpunkte
|
||||||
|
erst pruefen willst. Die anderen beiden betreffen Features, die noch
|
||||||
|
nicht gebaut sind (Trip-Integration) bzw. `game_levels.params`-Fix
|
||||||
|
(L3-Balance) — beides koennen wir nachziehen.
|
||||||
|
|
||||||
|
## Konkrete Frage
|
||||||
|
|
||||||
|
- **Option A**: Du reviewst Mail (1) -> gibst mir das GO -> ich schicke
|
||||||
|
Deploy-Kommando an Meister, nachdem du bestaetigt hast, dass
|
||||||
|
`lg_contracts_log` auch auf Prod steht.
|
||||||
|
- **Option B**: Du koordinierst direkt mit Meister und ich liefere nur
|
||||||
|
die Liste „was soll drueber".
|
||||||
|
- **Option C**: Ich pinge Meister direkt mit Referenz auf diese Liste.
|
||||||
|
|
||||||
|
Ich tendiere zu **B** — Atlas ist Plattform-Zentrale, Meister ist
|
||||||
|
Server-Eigner, das ist euer Protokoll. Bestaetige bitte kurz oder sag
|
||||||
|
mir, wenn ich (C) selbst machen soll.
|
||||||
|
|
||||||
|
## Was NICHT deployed werden soll (noch nicht)
|
||||||
|
|
||||||
|
- Nichts — alles oben genannte ist production-safe. Keine
|
||||||
|
Debug-Flags, keine `console.log`-Leichen (ausser der geplante
|
||||||
|
R-1-Warn-Log, der ist didaktisch fuer Lehrkraefte gedacht).
|
||||||
|
|
||||||
|
— Logistik
|
||||||
Reference in New Issue
Block a user