Morgen-Check: Anwesenheitsuebersicht fuer Lehrkraefte
Das Problem
Jeden Morgen die gleiche Routine: Lehrkraft betritt die Klasse, zaehlt Koepfe, vergleicht mit der Klassenliste, prueft ob Krankmeldungen eingegangen sind. Wenn ein Kind fehlt und keine Meldung da ist → Unruhe, Telefonat, im schlimmsten Fall Vermissten-Alarm.
In einer handyfreien Schule soll die Lehrkraft die Zahl im Lehrerzimmer oder auf dem Klassen-Display sehen — ohne tippen, ohne suchen. Ein Blick genuegt.
Designprinzip: Zero Typing
Kein Tippen. Nur Sehen und Druecken.
- Schritt 1: Eine Zahl sehen
- Schritt 2: Einen Button druecken
- Schritt 3: Nur wenn noetig — einen Namen antippen
Der Flow
Morgens: Lehrkraft oeffnet den Klassen-Space
┌─────────────────────────────────────────────────────────┐
│ │
│ 22 │
│ muessen da sein │
│ │
│ 2 entschuldigt (Leon, Mia) │
│ │
│ [ Vollstaendig ✓ ] │
│ │
└─────────────────────────────────────────────────────────┘Die Lehrkraft sieht eine einzige grosse Zahl: 22. Das ist die Anzahl die heute anwesend sein muss. Darunter klein: wer entschuldigt fehlt (aus den Krankmeldungen der Eltern).
Die Lehrkraft zaehlt die Koepfe im Raum. 22? → Ein Tap: "Vollstaendig". Fertig.
Wenn es nicht stimmt
┌─────────────────────────────────────────────────────────┐
│ │
│ 22 │
│ muessen da sein │
│ │
│ 2 entschuldigt (Leon, Mia) │
│ │
│ [ Vollstaendig ✓ ] [ Nicht vollstaendig ✗ ] │
│ │
└─────────────────────────────────────────────────────────┘Die Lehrkraft zaehlt 21. → Ein Tap: "Nicht vollstaendig"
Es erscheint die Schueler-Liste. Alle als anwesend markiert. Die Lehrkraft tippt auf den Namen des fehlenden Kindes:
┌─────────────────────────────────────────────────────────┐
│ Wer fehlt? │
│ │
│ ✓ Anna Bauer ✓ Emma Braun │
│ ✓ Tim Fischer ✓ Sophie Klein │
│ 🔴 Leon Mueller (krank) ✓ Lisa Lang │
│ ✓ Max Weber ← TAP │
│ 🟡 Mia Schmidt (Arzt) ✓ Nina Ross │
│ ✓ Jan Hoffmann ✓ Lena Wolf │
│ ✓ Paul Schneider │
│ │
└─────────────────────────────────────────────────────────┘Ein Tap auf "Max Weber" → Max wird als fehlend markiert:
┌─────────────────────────────────────────────────────────┐
│ ⚠ Max Weber fehlt ohne Meldung │
│ │
│ [ Verspaetet ] [ Eltern benachrichtigen ] │
│ │
│ [ ⚠ Notfall: Vermisstes Kind ] │
│ │
│ [ Spaeter klaeren — Check abschliessen ] │
│ │
└─────────────────────────────────────────────────────────┘Drei Optionen, alle ein Tap:
- Verspaetet: Max kommt halt spaeter. Kein Alarm.
- Eltern benachrichtigen: System-Nachricht an Max' Eltern im Messenger.
- Notfall: Oeffnet Krisen-Szenario "Vermisstes Kind" mit vorausgefuelltem Namen.
- Spaeter klaeren: Check trotzdem abschliessen, Max bleibt als "ungeklaert".
Sekretariat: Automatische Warnung
Das Sekretariat sieht im eigenen Dashboard alle Klassen auf einen Blick:
┌─────────────────────────────────────────────────────────┐
│ Morgen-Check: Montag, 21. April 08:12 │
│ │
│ ✅ Klasse 1a ── 18/18 vollstaendig │
│ ✅ Klasse 2b ── 20/20 vollstaendig │
│ ⚠ Klasse 3a ── 21/23 — 1 ungeklaert (Max Weber) │
│ ⏳ Klasse 4b ── Check ausstehend │
│ ✅ Klasse 5a ── 19/19 vollstaendig │
│ │
│ Gesamt: 4 von 5 Klassen geprueft │
│ Abwesend heute: 8 entschuldigt, 1 ungeklaert │
│ │
└─────────────────────────────────────────────────────────┘Wenn eine Klasse bis 08:30 nicht geprueft ist → Erinnerung an die Lehrkraft. Wenn ein Kind ungeklaert fehlt → rote Markierung beim Sekretariat.
Interaktionsschritte zaehlen
| Szenario | Taps | Tippen |
|---|---|---|
| Alle da | 1 ("Vollstaendig") | 0 |
| 1 fehlt mit Meldung | 1 ("Vollstaendig") | 0 |
| 1 fehlt ohne Meldung | 3 ("Nicht vollstaendig" → Name → Aktion) | 0 |
| 2 fehlen ohne Meldung | 4 ("Nicht vollstaendig" → Name → Name → Aktion) | 0 |
Null Tippen in jedem Szenario.
Technisches Konzept
Datenmodell
MorningCheck
├── id
├── tenantId
├── spaceId
├── date (DATE, unique pro Space + Tag)
├── expectedCount ── Schueler im Space (auto-berechnet)
├── reportedAbsentCount ── aus AbsenceEntry (auto-berechnet)
├── mustBePresent ── expectedCount - reportedAbsentCount
├── status: 'pending' | 'complete' | 'alert'
├── confirmedBy ── Lehrkraft-UserId
├── confirmedAt
├── createdAt
MorningCheckEntry
├── id
├── checkId ── FK auf MorningCheck
├── studentUserId
├── studentName
├── status: 'present' | 'absent_reported' | 'absent_unreported' | 'late'
├── source: 'auto' | 'manual' ── auto = aus AbsenceEntry, manual = Lehrkraft-TapBerechnung (automatisch, kein Tippen)
Bei Oeffnung des Spaces (oder GET /morning-check):
1. expectedCount = Anzahl Mitglieder im Space mit contactVisibility='space-only'
2. reportedAbsent = AbsenceEntry-Count fuer heute fuer diese Schueler
3. mustBePresent = expectedCount - reportedAbsent
4. Fuer jeden Schueler: auto-Status aus AbsenceEntry setzen
→ Lehrkraft sieht nur die Zahl "mustBePresent" und die Namen der gemeldeten.API-Endpoints
| Methode | Pfad | Beschreibung |
|---|---|---|
| GET | /spaces/:id/morning-check | Heutigen Check laden (auto-generiert) |
| POST | /spaces/:id/morning-check/complete | "Vollstaendig" — Check abschliessen |
| POST | /spaces/:id/morning-check/mark-absent | Schueler als fehlend markieren (1 Tap) |
| POST | /spaces/:id/morning-check/mark-late | Schueler als verspaetet markieren |
| GET | /morning-checks/summary | Sekretariats-Uebersicht alle Klassen |
SSE-Events
| Event | Trigger |
|---|---|
morning-check.updated | Lehrkraft bestaetigt oder markiert |
morning-check.alert | Kind fehlt ohne Meldung |
absence.changed | Neue Krankmeldung → Check aktualisiert sich |
Integration
Abwesenheits-Modul: Morgen-Check liest AbsenceEntry automatisch. Neue Meldungen waehrend des Checks aktualisieren die Zahl in Echtzeit.
Krisenmanagement: "Notfall" oeffnet Szenario "Vermisstes Kind" mit Name, Klasse, letzter bekannter Anwesenheit vorausgefuellt.
Messenger (Eltern): "Eltern benachrichtigen" sendet eine System-Nachricht an die Eltern des fehlenden Kindes: "Ihr Kind Max war heute nicht in der Schule und es liegt keine Abwesenheitsmeldung vor. Bitte kontaktieren Sie die Schule."
Chat: Nach Check-Abschluss wird eine System-Nachricht gepostet: "Morgen-Check 21.04.: 22 anwesend, 2 entschuldigt. ✓"
Wo erscheint der Morgen-Check?
Im Workspace (Mitarbeiter)
Der Morgen-Check-Balken erscheint oben im Klassen-Space, ueber dem Chat. Er ist prominent aber nicht stoerend — nach der Bestaetigung klappt er auf eine einzeilige Zusammenfassung zusammen.
Sichtbar nur wenn:
- Es ein Werktag ist (Mo-Fr, Feiertage konfigurierbar)
- Der Space Schueler als Mitglieder hat
- Der Check heute noch nicht bestaetigt wurde
- Der User ein Mitarbeiter ist (nicht Eltern/Schueler)
Im Sekretariats-Dashboard
Eigener Hub oder Tab im Workspace: "Anwesenheit heute". Zeigt alle Klassen mit Status auf einen Blick. Filtert: Alle ✅ | Mit Warnung ⚠ | Ausstehend ⏳
Umsetzung
| Phase | Aufgabe | Aufwand |
|---|---|---|
| 1 | DB-Modell (MorningCheck + Entries) + API | ~2 Tage |
| 2 | Morgen-Check-Balken UI (grosse Zahl + 2 Buttons) | ~2 Tage |
| 3 | Wer-fehlt-Liste + Aktions-Buttons | ~2 Tage |
| 4 | Sekretariats-Dashboard | ~1 Tag |
| 5 | Krisen-Integration + Eltern-Benachrichtigung + Cron | ~1 Tag |
Gesamt: ~8 Tage