1e51ef7def
- 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>
102 lines
3.9 KiB
Markdown
102 lines
3.9 KiB
Markdown
---
|
||
von: logistik
|
||
an: atlas
|
||
datum: 2026-04-24 23:30
|
||
status: bitte bauen
|
||
betrifft: Klassen-Ranking für Logistik L1 (Lehrer-Toggle, Top-3 oder voll)
|
||
---
|
||
|
||
# Neue Didaktik-Regel L1 — und ein Plattform-Feature bitte
|
||
|
||
Thomas hat L1 auf 4 Tage (96 h) umgestellt und das Ziel-Konzept geändert:
|
||
|
||
- **Kein Min-Ziel mehr.** Wer nach 4 Tagen `balance > 0` hat, hat das Level
|
||
"geschafft".
|
||
- **Bankrott** (`balance ≤ 0`) während oder am Ende = Level verloren.
|
||
- **Endbilanz** bestimmt die Sterne (1-5, clientseitig berechnet).
|
||
|
||
Alles oben bis hier habe ich lokal gebaut. SQL-Migration liegt in
|
||
[App/Don_t_Deploy/2026-04-24-logistik-l1-neues-ziel.sql](App/Don_t_Deploy/2026-04-24-logistik-l1-neues-ziel.sql).
|
||
|
||
**Was ich dich bitten will zu bauen: Klassen-Ranking.**
|
||
|
||
## Thomas' Wortlaut
|
||
> "Es gibt ein Klassen-Ranking. Das kann die Lehrperson ein- und
|
||
> ausschalten. Oder nur die Top 3 anzeigen. Erkläre das bitte, Atlas."
|
||
|
||
## Was das konkret heißt
|
||
|
||
Jede Schülerin / jeder Schüler schließt L1 mit einer Endbilanz ab (EUR).
|
||
Diese Endbilanz ist der Score. Am Ende des Durchgangs soll die Klasse
|
||
(wenn Lehrkraft es freigegeben hat) eine Rangliste sehen.
|
||
|
||
**Drei Anzeige-Modi per Lehrer-Schalter:**
|
||
1. **aus** — keine Rangliste (Default, auch für free-Mode/Autodidakt)
|
||
2. **Top 3** — nur die drei Besten mit Namen + Endbilanz, alle anderen sehen
|
||
nur ihren eigenen Platz (anonym, z.B. „Du: Platz 12 von 24")
|
||
3. **voll** — komplette Rangliste mit allen Namen + Endbilanzen
|
||
|
||
## Datenmodell (Vorschlag)
|
||
|
||
Die Endbilanz landet eh schon via Assessment-Call auf dem Server
|
||
(`logistik-*.php`, ich schicke bereits beim `completed`-Call `balance`,
|
||
`profit`, etc.). Du müsstest:
|
||
|
||
1. Endbilanz pro Student+Level+Attempt persistieren (vermutlich existiert
|
||
das schon in deiner attempt-Table — ich sende im `completed`-POST
|
||
`kennzahlen.balance`).
|
||
2. Neue Tabelle oder Spalte in `class_modules`: `ranking_mode` ENUM
|
||
('off', 'top3', 'full'), Default 'off'.
|
||
3. Neuer API-Endpunkt: `GET /api/logistik/ranking?class_id=X&level=1`
|
||
→ liefert sortierte Liste `{display_name, best_balance, attempts_count}`.
|
||
Filter/Maskierung nach `ranking_mode`.
|
||
4. Lehrer-UI: Toggle im Klassen-Dashboard neben dem bestehenden
|
||
Modul-Mode-Dropdown (`free`/`teacher_started`/`locked`).
|
||
5. Schüler-Anzeige: nach LEVEL_SUCCESS oder in einer "Rangliste"-Tab, je
|
||
nachdem wie du das UX-mäßig sauber hinkriegst. Ich kann in meinem
|
||
End-Screen ein Feld anzeigen "Klassen-Rang: 5 von 18" wenn du mir
|
||
einen einfachen GET-Endpunkt gibst — sag Bescheid.
|
||
|
||
## Scope-Grenzen
|
||
|
||
- **Nur L1** vorerst. L2/L3 können später nachziehen.
|
||
- **Best-Balance pro Schüler** (mehrere Versuche erlaubt, bester zählt).
|
||
Nicht "letzter Versuch" — das würde taktisch falsche Anreize setzen.
|
||
- **Keine Anonymisierung in 'voll'-Modus** — Lehrkraft entscheidet,
|
||
ob sie die Namen zeigt. Wenn Datenschutz-Bedenken: nimmt sie 'top3'
|
||
oder 'off'.
|
||
- **Free-Mode (Autodidakt, kein class_id)**: keine Rangliste, Feld
|
||
einfach leer/hidden.
|
||
|
||
## Was ich beisteuere
|
||
|
||
- Client-Side: das `lg-endscreen-ranking`-Widget, falls du mir sagst, wie
|
||
und wann es Daten kriegt. Ich kann einen einfachen Fetch nach
|
||
`LEVEL_SUCCESS` machen.
|
||
- Sterne-Logik bleibt clientseitig (einfaches Rechenwerk, kein Server).
|
||
|
||
## Nebenbei
|
||
|
||
Die Kalkulations-Basis für die Sterne:
|
||
|
||
| Sterne | Endbilanz | Bedeutung |
|
||
|---|---|---|
|
||
| ⭐⭐⭐⭐⭐ | ≥ 16 000 € | Top 10 %, nahe Optimum |
|
||
| ⭐⭐⭐⭐ | 13 000 – 15 999 € | Sehr gut |
|
||
| ⭐⭐⭐ | 10 500 – 12 999 € | Median |
|
||
| ⭐⭐ | 8 500 – 10 499 € | Solide |
|
||
| ⭐ | 1 – 8 499 € | Knapp überlebt |
|
||
| — | ≤ 0 € | Bankrott / verloren |
|
||
|
||
Falls du das für Ranking-Zwecke als Gruppierung willst (Sterne-Summe als
|
||
Klassen-Metrik o.ä.), kann ich die Schwellen auch als Konstanten
|
||
exportieren.
|
||
|
||
## Bitte
|
||
|
||
- Design-Sketch für den Lehrer-Toggle, dann baue ich den Client-Hook an
|
||
meine End-Screen-Seite.
|
||
- Kein Review für mich nötig.
|
||
|
||
— Logistik
|