Ein zugewiesener Lauf fiel bisher nur auf, wenn jemand die Uebersicht oeffnete; ein ueberfaelliger ueberhaupt nicht. Vier Anlaesse gehen jetzt hinaus — zugewiesen, ueberfaellig, abgeschlossen und Verzeichnisabgleich fehlgeschlagen —, je Person abschaltbar. Niemand bekommt Post ueber die eigene Tat: das ist der haeufigste Grund, Benachrichtigungen ganz abzuschalten, und deshalb faellt der Handelnde immer aus der Empfaengerliste. Eingereiht wird im Anfrage-Pfad, gesendet wird es nicht. Ein haengender Mailserver darf kein Abhaken blockieren, also schreibt der Dienst eine Zeile in `Zustellung` und ein eigener Zeitplan schickt sie. Betreff und Rumpf stehen fertig darin: eine Meldung sagt, was *damals* war. In keiner Nachricht steht ein Schrittinhalt, und damit auch kein erzeugtes Passwort. Darueber wacht src/lib/meldungen.ts — die Funktionen dort nehmen nur Kopfdaten, der Typ laesst nichts anderes zu. Geprueft wird es zusaetzlich ueber alle Rumpftexte, die wirklich verschickt wurden, so wie #012 es fuer die Druckansicht tat. Zwei Dinge haetten ohne Datenbank nicht gehalten. Die Einmaligkeit der Ueberfaelligkeitsmeldung liegt in einem partiellen eindeutigen Index: der Zeitplan sieht jede Minute nach, und ohne ihn bekaeme der Zustaendige fuer einen Lauf, der ueber das Wochenende steht, 2880 Mails — jede fuer sich korrekt, kein Test rot. Und die Sperre der Warteschlange liegt in derselben Tabelle wie die des Abgleichs, denn hinter einem Lastverteiler laufen zwei Instanzen. Eine stille Warteschlange ist schlimmer als keine: Verwaltung → Zustellungen zeigt mit Grund, was hinausging und was nicht. Geprueft gegen einen echten SMTP-Faenger (mailpit) statt gegen eine abgefangene Funktion — und `mailpit` gehoert damit ins Tor vor dem Commit, sonst ueberspringt die Suite 3 Tests und sieht gruen aus. Closes #54 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
12 KiB
Verwaltung
Der Bereich Admin gehört der Rolle Administrator. Oben schalten Reiter um: Einstellungen, Benutzer, Abteilungen und — nur im Modus Intern — Verzeichnis.
Abteilungen sind in Kapitel 05 beschrieben, das Verzeichnis in Kapitel 06.
Benutzer und Rollen
Benutzer sind die Menschen, die Laufzettel bedienen. Nicht zu verwechseln mit den Mitarbeitern aus dem Verzeichnis: die melden sich hier nie an.
Je Konto stehen Name, E-Mail, die Anmeldewege (Anbieter, Passwort oder „kein Anmeldeweg“) und der Zeitpunkt der letzten Anmeldung. Rechts:
- die Rollenwahl mit dem Knopf Setzen,
- der Schalter aktiv / deaktiviert.
Beim eigenen Konto steht statt des Schalters das bist du — niemand soll sich selbst aussperren.
Ein deaktiviertes Konto wird auch mit einem noch gültigen Sitzungs-Cookie abgewiesen, und eine geänderte Rolle greift sofort: Rolle und Aktiv-Status werden bei jeder Anfrage aus der Datenbank gelesen.
Bei Anmeldung über den Anbieter wird die Rolle aus den Gruppen gesetzt und überschreibt eine hier gewählte. Wer eine Rolle dauerhaft ändern will, ändert sie also in der Gruppenzuordnung des Anbieters, nicht hier.
Welche Rolle was darf, steht in Kapitel 01.
Ein lokales Konto anlegen
Unter Lokales Konto anlegen: Name, E-Mail, Rolle und Passwort (mindestens 12 Zeichen), dann Konto anlegen. Das Passwort wird nur als Hash gespeichert.
Gedacht ist das als Notfallzugang, falls der Anmeldeanbieter ausfällt. Ist der lokale Login abgeschaltet, sagt die Seite das; neue Konten entstehen dann beim ersten Anmelden über den Anbieter von selbst.
Einstellungen
Organisation
Der Name des eigenen Betriebs. Im Modus Intern erscheint er nirgends in der Oberfläche — er wird erst sichtbar, wenn du auf Dienstleistung umstellst, denn dann wird daraus der erste Kunde.
Namensregeln
Vorlagen für UPN, Anmeldename (sam), Mail und Hostname. Beim Start eines Laufs berechnet Laufzettel daraus Vorschläge, die der Techniker überschreiben kann — der Knopf dafür heißt dort Namen aus den Regeln vorschlagen.
Platzhalter in den Regeln:
| Platzhalter | Bedeutung |
|---|---|
{vorname} |
der Vorname |
{nachname} |
der Nachname |
{v} |
der erste Buchstabe des Vornamens |
{nnn} |
eine fortlaufende Nummer |
{kundenkuerzel} |
das Kürzel des Kunden (nur Modus Dienstleistung) |
Beispiele: {vorname}.{nachname}@firma.de für den UPN, {v}{nachname} für den Anmeldenamen,
PC-{nnn} für den Hostname.
Ein Vorschlag ist ein Angebot, keine Zusage: verbindlich wird ein Name erst beim Anlegen im Verzeichnis. Sind keine Regeln hinterlegt, sagt der Start-Dialog das und lässt die Felder leer.
Sperr-OU
Die Ziel-OU für deaktivierte Konten, etwa OU=Gesperrt,OU=Benutzer,DC=firma,DC=local. Sie füllt den
Platzhalter {{ou_gesperrt}} und wird beim Offboarding gebraucht.
Speichern übernimmt alle drei Abschnitte auf einmal.
Adresse für die QR-Codes
Ganz unten steht, welche Adresse in den gedruckten QR-Codes landet, als Beispiel ausgeschrieben:
https://…/t/LZ-7K3F9Q.
Sie lässt sich hier nicht ändern. Sie kommt aus der Umgebung der Anwendung, weil gedruckte Aufkleber sonst ins Leere zeigen würden. Steht dort „APP_URL ist nicht gesetzt — Etiketten können noch nicht gedruckt werden“, muss das erst beim Betrieb der Anwendung eingetragen werden. Drucke vorher keine Etiketten.
Schnellstart je Gerätetyp
Auf der Seite eines Geräts stehen oben die Vorlagen, die dort am häufigsten gebraucht werden — ein Klick, und der Lauf steht. Welche das sind, wird unter Verwaltung → Schnellstart festgelegt, je Gerätetyp getrennt.
Zu jedem Gerätetyp steht dort die Liste in der Reihenfolge, in der die Kacheln erscheinen. Mit den Pfeilen wird umsortiert, mit dem × entfernt, und über Vorlage hinzufügen kommt eine dazu. Nach jeder Änderung steht „nicht gespeichert“ daneben, bis Speichern gedrückt ist — die Reihenfolge wandert als Ganzes in die Datenbank, nicht Zeile für Zeile.
Drei Dinge, die hier anders sind als erwartet:
- Zur Auswahl stehen nur veröffentlichte, nicht archivierte Vorlagen. Ein Entwurf taugt nicht: aus ihm lässt sich kein Lauf starten, die Kachel täte also nichts.
- Eine archivierte Vorlage verschwindet von selbst aus dem Schnellstart. Niemand muss hier aufräumen, nachdem eine Vorlage weggelegt wurde.
- Eine Vorlage, die nur für einen Kunden gilt, lässt sich zuweisen und wird mit dem Kundennamen gezeigt. Sie erscheint trotzdem nur bei den Geräten dieses Kunden.
Ein leerer Schnellstart ist kein Mangel. Unter Vorlage zuweisen steht auf der Geräteseite jede Vorlage, die zu diesem Gerät passt, und der Start-Dialog kennt sie ohnehin alle.
Sobald hier einmal gespeichert wurde, hält sich der Seed heraus: die mitgelieferten Vorgaben werden danach nicht mehr nachgelegt. Das ist gewollt — eine entfernte Kachel soll nicht beim nächsten Einrichtungslauf zurückkommen.
Betriebsmodus umstellen
Oben auf der Einstellungsseite steht der aktuelle Modus mit einer Erklärung und darunter der Weg zum anderen. Der Wechsel braucht keinen Neustart.
Zu Dienstleistung wechseln klappt einen Dialog auf, der die Folgen aufzählt — dieselbe Prüfung, die der Wechsel danach durchsetzt, keine nachgebaute zweite Wahrheit:
- Die bisherige eigene Organisation wird zum ersten Kunden.
- Alle Geräte, Personen, Abteilungen und Läufe bleiben daran hängen.
- Kunden werden zu einer sichtbaren Ebene: Kundenliste, Kundenwahl beim Start eines Laufs, Kundenkürzel auf den Etiketten.
Dafür trägst du Name als erster Kunde und Kürzel (2–6 Zeichen) ein, setzt das Häkchen „Ja, den Betriebsmodus jetzt auf … umstellen“ und drückst Auf Dienstleistung umstellen.
Der Rückweg ist enger: er geht nur mit genau einem nicht archivierten Kunden.
Gibt es mehr, steht dort „Wechsel zu Intern gerade nicht möglich“ mit der Zahl und dem Hinweis, die übrigen Kunden zu archivieren. Geht es, lauten die Folgen:
- Der einzige Kunde wird zur eigenen Organisation und verschwindet aus der Oberfläche.
- Alle Daten bleiben erhalten, nur die Kundenebene wird ausgeblendet.
- Archivierte Kunden bleiben archiviert und tauchen nicht wieder auf.
Der Wechsel ist also in beide Richtungen eine Datenänderung und kein Datenverlust. Trotzdem ist er keine Kleinigkeit: er ändert, was die ganze Anwendung zeigt — deshalb das Häkchen.
Kunden
Den Menüpunkt Kunden gibt es nur im Modus Dienstleistung. Geräte, Personen, Abteilungen und Läufe hängen an genau einem Kunden, und diese Grenze ist nicht nur eine Anzeige: ein Lauf kann kein Gerät, keine Person und keine Abteilung eines fremden Kunden wählen.
Je Kunde stehen das Kürzel, der Name und die Zählung (Geräte, Personen, Läufe). Der eigene Betrieb trägt das Kennzeichen eigene Organisation.
Kunde anlegen verlangt Name und Kürzel. Das Kürzel erscheint auf den Etiketten und lässt
sich in der Hostname-Regel als {kundenkuerzel} verwenden — wähl es also so, dass man es auf einem
Aufkleber erkennt.
Bearbeiten ändert Name, Kürzel und Notizen. archivieren nimmt einen Kunden außer Dienst; gelöscht wird nichts, sonst verlöre das Archiv seine Bezüge. Die eigene Organisation lässt sich nicht archivieren.
Eine Vorlage lässt sich einem Kunden zuordnen („nur Musterfirma GmbH“) oder für alle gelten lassen. Eine kundenspezifische Vorlage startet keinen Lauf bei einem anderen Kunden.
Benachrichtigungen
Ein zugewiesener Lauf fiel früher nur auf, wenn jemand die Übersicht öffnete. Ein überfälliger überhaupt nicht. Laufzettel meldet deshalb vier Dinge — und nur diese vier:
| Anlass | Wer bekommt es |
|---|---|
| Ein Lauf wird jemandem zugewiesen | der Zugewiesene |
| Ein Lauf ist überfällig | der Zugewiesene, einmal je Lauf |
| Ein Lauf wird abgeschlossen | der Zugewiesene und wer ihn angelegt hat |
| Ein Verzeichnisabgleich schlägt fehl | alle Administratoren |
Über die eigene Tat bekommt niemand Post. Wer selbst zuweist, abschließt oder abhakt, erfährt es nicht per Mail — das ist der häufigste Grund, Benachrichtigungen ganz abzuschalten.
In der Nachricht stehen Titel, Status, Gerät, Person, Frist und ein Link. Keine Schrittinhalte, und damit auch kein erzeugtes Passwort. Das Passwort entsteht bei jeder Anzeige neu; eine Mail dagegen bleibt für immer in einem Postfach.
Einrichten
Unter Verwaltung → Einstellungen, Abschnitt Benachrichtigungen: Host, Port, Benutzer, Passwort und Absender des Mailservers. Dann Speichern, dann Testmail schicken — die geht sofort hinaus, nicht über die Warteschlange, und ein Fehler erscheint im Klartext.
Daneben steht ein Webhook: dieselben vier Anlässe als JSON an eine Adresse, mit Signatur. Das ist
für Ticketsysteme und Chat-Räume gedacht; die Einzelheiten stehen in
docs/betrieb/benachrichtigungen.md.
Das Passwortfeld ist leer, obwohl ein Passwort gesetzt ist. Leer heißt „unverändert lassen“ — sonst löschte jedes Speichern der übrigen Felder das Passwort mit.
Abschalten
Unter Verwaltung → Benutzer schaltet der Mail-Knopf an einer Person die Benachrichtigungen ab. Das geht auch für das eigene Konto. Wer abgeschaltet hat, bekommt nichts und löst auch keinen Fehler aus.
Zustellungen
Unter Verwaltung → Zustellungen steht, was hinausgegangen ist und was nicht. Schlägt eine Zustellung fehl, versucht Laufzettel es nach 1, 5, 30 und 120 Minuten erneut; nach dem fünften Fehlschlag bleibt sie als aufgegeben stehen.
Da hinzusehen lohnt, wenn jemand sagt, er bekomme keine Mails. Fast immer ist das SMTP-Passwort abgelaufen — und ohne diese Seite merkt es wochenlang niemand, weil die Läufe weiter funktionieren. Ganz oben steht ein Hinweis, sobald etwas aufgegeben wurde.
Protokoll
Laufzettel schreibt ein Protokoll über das, was nachvollziehbar bleiben muss: Rollenänderungen, veröffentlichte Vorlagen, eingespielte Vorlagen, archivierte und zurückgeholte Läufe, angelegte und gelöschte Verzeichnisquellen, den Moduswechsel. Ein Protokolleintrag verliert seinen Urheber nie, und geändert oder gelöscht wird keiner.
Zu sehen ist das unter Verwaltung → Protokoll, neueste Einträge zuerst, fünfzig je Seite. Vier Filter stehen darüber:
- Aktion oder Lauf — Volltext über die Aktion, die Art des Eintrags und den Titel des Laufs. „Rolle“ findet jede Rollenänderung, „archiviert“ jede Archivierung.
- Urheber — zur Auswahl stehen nur die, die wirklich Einträge haben.
- von und bis — der bis-Tag zählt mit; „bis heute“ enthält also, was heute passiert ist.
Hinter Werte stehen die Felder vor und nach der Änderung, soweit sie festgehalten wurden. Eingeklappt, weil sie lang werden können.
Ein Eintrag ohne Urheber ist keine Lücke. Dort steht „Systemlauf“: der Zeitplan des Verzeichnisabgleichs läuft ohne Menschen dahinter, und das soll man sehen können.
Was an einem einzelnen Lauf geschehen ist, steht außerdem unten in seiner Abarbeitungsansicht unter Protokoll dieses Laufs, eingeklappt. Wer den Lauf sehen darf, sieht auch dessen Einträge — dafür braucht es keine Administratorrolle.
Ein erzeugtes Passwort steht nie im Protokoll — es wird nirgends gespeichert. Gäbe es ein Feld dafür, wäre die Versuchung groß, es „nur fürs Protokoll“ mitzuschreiben.




