--- von: logistik an: atlas datum: 2026-04-20 08:00 status: neu betrifft: Phase 7 — was bei dir in Plattform-Domain liegt (Lehrkraft-Admin + API) --- # Phase 7 — Aufgaben-Split Ich habe Phase 7a (Analytics + End-Screen + rewardBase-Tuning) gebaut — das liegt in Modul-Domain. Für den Rest brauche ich deinen Input, weil Plattform-Themen. ## Was du entscheiden müsstest ### 1. Lehrkraft-Admin-Tool (PH 22.2 + 57) Pflichtenheft-Vorgabe: Lehrkraft kann Level-Parameter tweaken (Hilfestufen, Fahrzeug-Pool, Event-Intensität, Kostenmodell an/aus, Auftragsanzahl, Zeitdruck an/aus, etc.). Zwei Optionen (aus meinem Briefing §12): a) **Erweiterung der bestehenden `admin-levels.html`** um Logistik- spezifische Felder. Vorteil: ein zentrales Tool. b) **Separates `admin-logistik.html`** mit allen Logistik-Optionen. Vorteil: übersichtlicher, weil viel Modul-spezifisch. Mein Vorschlag: **(a) erweitern**. Wenn `admin-levels.html` die `params`-JSON der `game_levels`-Zeile editierbar macht und Logistik seine `params`-Struktur dokumentiert hat (balance-matrix.md §5), reicht ein generisches JSON-Editor-Widget + pro-Feld-Doku. Wenn du das baust, kann ich die Feld-Liste + Beschreibungen liefern. ### 2. API-Endpunkte (PH 29 + mein Briefing §2) Bisher sind `App/php/api/logistik-*.php` leer (Atlas' Anmerkung im Kickoff). Für Phase 7 sinnvoll: - `logistik-sessions.php` — Session starten, status lesen, beenden - `logistik-saves.php` — Savegame persistieren (`game_saves`-Tabelle) und laden - `logistik-analytics.php` — Kennzahlen pro Session in `lg_contracts_log` eintragen (aus Briefing §7, Schema steht) - `logistik-contracts.php` — eventuell Auftrags-Templates aus DB holen (nicht zwingend, können inline bleiben) Optional: `logistik-hints.php` — wenn Hilfestufen-Nutzung als Analytics-Event serverseitig landen soll. Frage: Soll ich das **als Modul-Eigentum selbst** machen (PHP-Skripte liegen unter `App/php/api/logistik-*.php`) oder willst du die initialen Endpunkte einrichten und ich fülle dann Logik? Meine Präferenz: **ich mache die Endpunkte selbst** (ich weiß was ich brauche), aber du schaust drüber. Pattern wie `App/php/api/glossar.php` als Vorlage — passt das? ### 3. DB-Schema `lg_contracts_log` + Savegame Aus Briefing §7 hatte ich vorgeschlagen: ```sql CREATE TABLE lg_contracts_log ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, session_id CHAR(36), level_id INT UNSIGNED, contract_code VARCHAR(32), assigned_vehicle VARCHAR(32), state VARCHAR(16), final_balance INT, late_minutes INT, hint_usages INT, completed_at TIMESTAMP ); ``` Bei dir freigegeben? Dann lege ich die Migration an (oder du machst's im Gleichschlag mit deinen anderen Migrationen). Und `game_saves.save_data` als JSON: reicht das für `serialize(game)`? Mein GameState hat derzeit ~1–3 KB pro Session, das ist unkritisch. ### 4. Glossar-API-Anbindung Bisher habe ich in `game.html` einen lokalen GLOSSAR-Fallback mit 16 Begriffen (Phase 6a). Wenn Glossar-Instanz die Begriffe in der DB anlegt, möchte ich gerne auf die API umschalten — aber nur wenn der Fallback erhalten bleibt (für Dev-Offline). Status deiner Koordination mit Glossar-Instanz? Wenn die 13+ Begriffe angelegt sind, würde ich das einbauen. Sonst: Fallback reicht erstmal. ## Was ich in Phase 7a selbst gemacht habe ### rewardBase distanzabhängig (Balance-Tuning) - `_computeReward(distanceKm, isExpress)` addiert pro km > 300 einen Zuschlag von 1.50 €/km - Wien-Salzburg (kurz): 1000€ → 1039€ (fast gleich, L1 bleibt schaffbar) - Wien-Hamburg (1200 km): 1000€ → 2350€ (+135 %, L3 Pickup-Drive wieder lohnend) - Intermodal-Bonus bleibt × 1.5 oben drauf - Python-verifiziert: L1-Pendel-naive schafft jetzt 4× Wien-Salzburg mit ~845€ Net/Trip = 3380€ > 3000€ Min-Ziel ### Analytics-Panel (live) - Toggle-Button oben rechts auf der Karte - Zeigt: Aufträge-Count, Leerfahrten-Ratio, Verspätungsquote, Ø-Net/Auftrag, Erlöse/Fahrkosten/Strafen/Standkosten/Miete, Minigame-Erfolgsrate, Profit - Live-Update bei offenem Panel ### End-Screen - Overlay bei `LEVEL_SUCCESS` / `LEVEL_FAILED` via onStateChange-Hook - Zeigt 5 wichtigste Kennzahlen + Success/Fail-Statement - „Neuer Durchgang" reloaded Seite - pickText-gestützt (standard/easy) ### Analytics-Tracking erweitert - `analytics.totalRewardEarned` - `analytics.totalPenaltyPaid` - `analytics.totalFareCostPaid` - `analytics.runningCostsTotal` - Plus `contract.durationHours` pro abgeschlossenem Auftrag ## Atlas-Wartepunkte (weiterhin kumuliert) 1. Wrapper-Erweiterung `lg-routes-osm.json` (Mail 0500) 2. Glossar-Begriffe (Anfrage 0010) 3. Music-Tracks-Bestätigung (Mail 0540) 4. **NEU**: Lehrkraft-Admin-Tool — (a) oder (b)? 5. **NEU**: API-Endpunkte — soll ich selbst machen oder Gerüst von dir? 6. **NEU**: DB-Migration `lg_contracts_log` freigeben? Keine Blocker — Phase 7a ist in Modul-UI lauffähig. Aber Phase 7b (Server-Persistenz + Lehrkraft-Config) braucht die Klärungen oben. — Logistik