Lehrer-Übersicht: Interventions-Block (Erfolg/Aktiv/Verlauf + Triage) live

Neuer Block oben im Übersicht-Tab: 5 Stat-Karten (Erfolg-Klassenschnitt, Aktuell
aktiv als Streifen, Verlauf-Klassenschnitt mit Skala, Schüler, Simulationen) +
Interventions-Triage (Fördern/Fordern/Begleiten/Bestätigen/Beteiligen) mit
Erfolg-Ampelbalken, blinkender Live-Aktiv-Ampel und Verlaufs-Sparkline pro Person.
Ampelfarben nur für Leistung, Triage-Karten neutral. Alte 5 Stat-Cards raus,
Top-Performer bleibt. Wochen-Cap gegen Zwischenspeicher-Log-Ausreißer.

- results.php: neue fleiss-range 'weeks' (letzte 10 ISO-Wochen)
- 2. Testklasse „3b Klasse" (3 Schüler); Klasse 99 → „4b Klasse"

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-20 13:17:22 +02:00
parent 69888445c7
commit 15ac35a7ad
3 changed files with 289 additions and 10 deletions
+14 -1
View File
@@ -271,7 +271,20 @@ if ($view === 'fleiss') {
$idxMap = function($b) { return (int)$b - 1; };
$label = 'Letzte 12 Monate';
break;
default: Response::error('range muss day|week|month|year sein');
case 'weeks':
// Letzte 10 ISO-Kalenderwochen — je Woche eine Säule (für den „Verlauf").
$sinceSql = "a.submitted_at >= NOW() - INTERVAL 10 WEEK";
$bucketFn = 'YEARWEEK(a.submitted_at, 3)';
$buckets = []; $bmap = [];
for ($i = 9; $i >= 0; $i--) {
$yw = (int)date('oW', strtotime("-$i week"));
$buckets[] = 'KW' . date('W', strtotime("-$i week"));
$bmap[$yw] = 9 - $i;
}
$idxMap = function($b) use ($bmap) { return $bmap[(int)$b] ?? -1; };
$label = 'Letzte 10 Wochen';
break;
default: Response::error('range muss day|week|weeks|month|year sein');
}
// Optional Modul-Filter