Files
Laufzettel/docs/anleitung/07-admin.md
T
Florian Wilde ac51753d53
Prüfung / pruefung (pull_request) Canceled after 0s
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (pull_request) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
feat(protokoll): Protokoll ansehen, mit Filtern und Mandantensicht
Geschrieben wurde es seit dem Datenmodell, ansehen konnte es niemand: wer
wissen wollte, wer wann eine Rolle geaendert hat, brauchte psql.

Neue Seite Verwaltung -> Protokoll: Volltext ueber Aktion und Lauftitel, Filter
nach Urheber und Zeitraum, fuenfzig Eintraege je Seite, neueste zuerst. Ein
Eintrag ohne Urheber steht als Systemlauf da und nicht als Luecke -- der
Zeitplan des Verzeichnisabgleichs hat keinen Menschen hinter sich.

Am Lauf selbst stehen seine Eintraege eingeklappt in der Abarbeitungsansicht.
Kein eigenes Recht dafuer: wer den Lauf sehen darf, darf auch sehen, was an ihm
geschehen ist.

Dafuer traegt Protokoll jetzt eine kundeId, wie CLAUDE.md es fuer jede
kundenbezogene Zeile verlangt. Ohne sie liess sich die Mandantensicht nicht
anwenden, ohne je Eintrag die Entitaet nachzuschlagen. Leer heisst global;
laufbezogene Eintraege bleiben ohne, weil der Lauf die bessere Quelle ist. Die
Migration fuehrt bestehende Eintraege nach -- an echten Daten gefahren, 59 von
733 bekamen einen Kunden.

Ein Eintrag, der sich keinem Kunden zuordnen laesst, wird einem beschraenkten
Benutzer nicht gezeigt: vorher/nachher koennen einen Hostnamen enthalten, und
bei einer Mandantengrenze wird im Zweifel zugemacht.

Keine Tabelle, sondern Karten: sieben Spalten sind bei 390 px nicht
darstellbar, ohne horizontal zu scrollen.

Im gebauten Stand durchgeklickt: blaettern, filtern, Werte aufklappen,
Abschnitt am Lauf, 390 px auf beiden Seiten ohne Scrollen.

Closes #35
2026-10-04 18:05:48 +02:00

199 lines
9.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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](05-mitarbeiter-geraete.md) beschrieben, das Verzeichnis in
[Kapitel 06](06-verzeichnis.md).
## Benutzer und Rollen
![Die Benutzerliste mit Rollenwahl je Konto](bilder/admin-benutzer-desktop.png)
**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](01-erste-schritte.md).
### 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
![Die Einstellungen mit Betriebsmodus, Organisation, Namensregeln und Sperr-OU](bilder/admin-einstellungen-desktop.png)
### 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
![Der Bestätigungsdialog für den Moduswechsel mit den Folgen](bilder/admin-moduswechsel-desktop.png)
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.**
![Der abgelehnte Moduswechsel mit der Begründung](bilder/admin-moduswechsel-abgelehnt-desktop.png)
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
![Die Kundenliste mit Kürzel, Zählung und der eigenen Organisation](bilder/kunden-desktop.png)
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.
## 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.