Files
3d.lehrstun.de/docs/lehrer-dashboard.md
Hans Puettmann 76addcb846 Herr Rechmann + L3-Titel + L2-Workflow
Drei Aenderungen aus Herbs Feedback:

1. Markus -> Herr Rechmann (60 Treffer in 26 Dateien + DB-Lektionen L2/L3)
   Konvention: Herb bleibt 'Herb' (interne Anrede fuer Claude), Markus
   wird in SuS-sichtbaren Texten als 'Herr Rechmann' ausgeschrieben.
   Wo 'Herb und Markus' stand -> 'Herb und Herr Rechmann'. Wenn das
   stilistisch zu uneinheitlich wirkt, koennen wir Herb spaeter auch
   in SuS-Texten zu 'Herr Puettmann' umziehen.

2. L3-Titel: 'Customizer — parametrisches 3D-Modell anpassen'
   -> 'Mein eigenes 3D-Modell designen'
   Begruendung Herb: 'Customizer' + 'parametrisch' wirken abschreckend.
   Methode kommt in den Aufgabe-Text, nicht in den Titel.

3. L2-Inhalt komplett geschrieben (~4.8 KB):
   - 8-Schritte-Workflow vom Stoebern auf Printables bis zum
     Druck-Abholen
   - A1-mini-Spezifika klar markiert (offen → nur PLA, 18×18 cm)
   - P-Serie-Spezifika fuer groessere Drucke
   - Tipps zur Modell-Wahl (klein anfangen, 4+ Sterne)
   - Was-tun-wenn-Tabelle bei Druckproblemen
   - Lehrer-Eskalations-Pfad: pausieren via Handy-App + Lehrer rufen

   Quellenlage: PDF-Anleitung A1 mini im OneDrive + Bambu-Wiki online
   waren beide nicht maschinell zugaenglich (pdftoppm fehlt, Wiki
   gibt HTTP 402). Workflow basiert auf Standard-Bambu-Studio-Bedienung
   + Konsistenz mit der L1-P2S-Beschreibung. Herb/Herr Rechmann pruefen
   die A1-mini-Spezifika beim Lehrer-Test und korrigieren via Inline-Edit
   (oder per Migration, wenn Inline-Edit-UI noch nicht live ist).
2026-05-24 19:51:19 +02:00

7.9 KiB

type, projekt, stand, tags
type projekt stand tags
konzept-modul 3d.lehrstun.de 2026-05-24
konzept
admin
dashboard

Lehrer-Dashboard mit Drill-Down

V5 aus der Reality-Check-Analyse (../decisions#E-020). Schließt eine bekannte Lücke des Arduino-Kurses, wo Herb manuell in jedes Gruppen-Cockpit schauen muss, um zu sehen, wer wo steht.

Route: /admin/dashboard. Berechtigung: @admin_required. Vom Cockpit nicht zu verwechseln — das ist der Lehrer-Arbeitsplatz.

Layout-Skizze

┌─ Admin-Dashboard ──────────────────────────────────────────────┐
│                                                                 │
│  ┌─ Wer ist heute hier (basiert auf check_in von HEUTE) ───┐   │
│  │  🦊 Mia      "Schlüsselanhänger weitermachen"   → [→]   │   │
│  │  🦦 Tom      "neues Projekt: Wasserrakete"      → [→]   │   │
│  │  🐧 Lara     "L2 fertig machen"                  → [→]   │   │
│  │  3 SuS heute eingeloggt                                  │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                                                 │
│  ┌─ Wartet auf Lehrer-Reaktion ─────────────────── [3] ─────┐   │
│  │  🟡 Mia — "Schlüsselanhänger" zur Freigabe (2 Tage)      │   │
│  │  🟡 Tom — "Drohnenrahmen" zur Freigabe (heute)           │   │
│  │  🔵 Lara — Rückfrage offen seit 5 Tagen                  │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                                                 │
│  ┌─ Drucker-Status (live) ─────────────────────────────────┐   │
│  │  🟢 P1S #1      drucken    "Schlüsselanhänger Mia"  43%  │   │
│  │  🟢 P1S #2      idle                                     │   │
│  │  🟡 X1C         drucken    "Drohnenrahmen Tom"      89%  │   │
│  │  🔴 A1 mini     offline (Status veraltet >5min)          │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                                                 │
│  ┌─ Wer hängt fest (>2 Wochen kein Fortschritt) ───────────┐   │
│  │  🐝 Anna — letzter Check-In vor 3 Wochen                 │   │
│  │  → [Erinnerungs-Notiz im Cockpit hinterlassen]           │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Sektion 1: Wer ist heute hier

Datenquelle: check_in mit besuch_datum = TODAY.

Inhalt pro Zeile:

  • Tier-Icon + Vorname (Klick → Profil-Detail)
  • Modus aus Check-In (z.B. „weiter wie bisher", „neues Projekt", „onboarding", „helfen")
  • Optionaler Freitext aus Check-In (falls vorhanden, in kursiv)
  • Link zum aktuellen Projekt (falls vorhanden)
  • Quick-Action: „Notiz hinterlassen" → schreibt Lehrer-Notiz ins SuS-Cockpit

Zweck: In den ersten 5 Minuten der AG-Stunde weiß der Lehrer ohne Rumfragen, was läuft.

Sektion 2: Wartet auf Lehrer-Reaktion

Datenquelle: Zwei Untergruppen:

  1. Projekte mit freigabe_status = 'wartet_auf_freigabe' — sortiert nach Wartezeit, älteste oben.
  2. Rückfragen mit status = 'offen', die schon länger als 3 Tage warten — der SuS hat möglicherweise vergessen, nachzubessern.

Badge im Header: Anzahl der zu reviewen Projekte. Sichtbar auch in der Navigation (klein, rote Zahl neben „Admin").

Quick-Action: Klick auf Eintrag → /admin/projekt-freigabe/<id> öffnet Detail-Review mit Three.js-Vorschau, allen Files, Edit-Möglichkeit, Freigeben-/Rückfrage-/Löschen-Buttons.

Zweck: Review-Last sichtbar machen, damit nichts liegen bleibt.

Sektion 3: Drucker-Status (live)

Datenquelle: drucker_status (vom Bambu-Cloud-Polling befüllt — siehe druckerapi).

Inhalt pro Drucker:

  • Status-Ampel (🟢 druckt/idle, 🟡 pausiert/Wartung, 🔴 offline/failed)
  • Drucker-Name + Modell
  • Aktueller Job-Name (wenn drucken)
  • Fortschritt + Restzeit
  • Quick-Action bei roter Ampel: „Manueller Status setzen" (Override)

Zweck: Der Lehrer sieht beim Reinkommen in den Druckraum sofort, welche Drucker frei sind, welche fertig zur Abholung sind, welche Probleme haben.

Sektion 4: Wer hängt fest

Datenquelle: SuS, die in den letzten 2 Wochen weder einen check_in gemacht haben noch ein Projekt abgeschlossen haben.

Zweck: Stille Aussteiger erkennen. Wer 3 Wochen nicht da war, ist möglicherweise nicht mehr dabei — oder braucht eine kurze Nachricht.

Quick-Action: „Erinnerungs-Notiz im Cockpit hinterlassen" — beim nächsten Login sieht der SuS ein grünes Banner („Hey, lange nicht gesehen — alles okay?").

Performance-Hinweise

Das Dashboard macht 4 Queries:

  • SELECT aus check_in WHERE besuch_datum = TODAY + JOIN profil + LEFT JOIN aktives projekt
  • SELECT aus projekt WHERE freigabe_status IN ('wartet_auf_freigabe') + JOIN profil
  • SELECT aus drucker_status (4 Zeilen)
  • Subquery für „hängt fest"-Liste

Alle Indexes setzen: idx_projekt_freigabe, FK-Index auf check_in.besuch_datum. Bei 8-10 SuS und ~50 Projekten/Jahr ist Performance kein Thema.

Quick-Action-Mechanik: „Notiz im Cockpit hinterlassen"

Tabelle lehrer_notiz (neu):

CREATE TABLE lehrer_notiz (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    profil_id INTEGER NOT NULL,         -- Adressat
    von_profil_id INTEGER,              -- Lehrer (NULL = System)
    text TEXT NOT NULL,
    erstellt_am DATETIME DEFAULT CURRENT_TIMESTAMP,
    gelesen_am DATETIME,                -- NULL = ungelesen
    typ TEXT DEFAULT 'info',            -- 'info'|'rueckfrage'|'erinnerung'
    FOREIGN KEY (profil_id) REFERENCES profil(id) ON DELETE CASCADE
);

Wird im Cockpit als gelbes Banner gerendert (analog zur Rückfrage-Mechanik V6). SuS kann jede Notiz mit „verstanden" wegklicken → gelesen_am wird gesetzt.

Was das Dashboard NICHT zeigt

  • Keine Aggregate über die ganze AG-Historie (das wäre Statistik, gehört in /admin/statistik als optionaler späterer Bereich).
  • Keine Daten anderer Lehrkräfte (es gibt nur Herb + Herr Rechmann, gleiche Sicht).
  • Kein Eingriff in laufende Druckjobs — das macht weiterhin die Bambu Handy App.

Inline-Edit-Berechtigungen für Lehrer

Aus routen#inline-edit-whitelist:

  • Lektionen: titel, aufgabe_md, tipp_md, extern_link — immer.
  • Software-Seiten: titel, inhalt_md, url, quickstart_md — immer.
  • Projekte: titel, beschreibung_md, tags — nur während Review (Status wartet_auf_freigabe oder rueckfrage).
  • Einstellungen: wert — immer.

Jede Inline-Edit-Aktion landet in aenderung_log mit Lehrer-Profil-ID. So bleibt nachvollziehbar, wer was wann geändert hat.

Querverweise