Skip to content

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

SzenarioTapsTippen
Alle da1 ("Vollstaendig")0
1 fehlt mit Meldung1 ("Vollstaendig")0
1 fehlt ohne Meldung3 ("Nicht vollstaendig" → Name → Aktion)0
2 fehlen ohne Meldung4 ("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-Tap

Berechnung (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

MethodePfadBeschreibung
GET/spaces/:id/morning-checkHeutigen Check laden (auto-generiert)
POST/spaces/:id/morning-check/complete"Vollstaendig" — Check abschliessen
POST/spaces/:id/morning-check/mark-absentSchueler als fehlend markieren (1 Tap)
POST/spaces/:id/morning-check/mark-lateSchueler als verspaetet markieren
GET/morning-checks/summarySekretariats-Uebersicht alle Klassen

SSE-Events

EventTrigger
morning-check.updatedLehrkraft bestaetigt oder markiert
morning-check.alertKind fehlt ohne Meldung
absence.changedNeue 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

PhaseAufgabeAufwand
1DB-Modell (MorningCheck + Entries) + API~2 Tage
2Morgen-Check-Balken UI (grosse Zahl + 2 Buttons)~2 Tage
3Wer-fehlt-Liste + Aktions-Buttons~2 Tage
4Sekretariats-Dashboard~1 Tag
5Krisen-Integration + Eltern-Benachrichtigung + Cron~1 Tag

Gesamt: ~8 Tage