feat(doku): Anleitung, PDF und Ende-zu-Ende-Abnahme
Prüfung / pruefung (push) Canceled after 0s
Prüfung / pruefung (pull_request) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
Prüfung / e2e (pull_request) Canceled after 0s

Neun Kapitel unter docs/anleitung/ fuer Technik und Verwaltung, mit 35
Bildern aus `pnpm docs:screenshots` und einem Fehlerbehebungskapitel aus
echten Meldungen. `pnpm docs:pdf` macht daraus 72 Seiten A4 — hell
gedruckt, mit Deckblatt, Inhaltsverzeichnis und Seitenzahlen, ohne neue
Abhaengigkeit.

Die Ablaeufe pruefen ihre Voraussetzungen, bevor der erste startet:
antwortet ein gebauter Stand, steht der Seed-Bestand, und liest der
Server dieselbe Datenbank wie der Testprozess. Jeder Ablauf legt an, was
er braucht, und raeumt es weg. Vier neue kommen dazu: Hauptablauf,
Onboarding mit Vergleich der Zwischenablage, Rollen und 390 px auf
achtzehn Seiten.

Drei Fehler kamen dabei heraus. Das Projekt „handy" pruefte 412 px statt
der verlangten 390. Ein angemeldeter Benutzer ohne Recht erfuhr nie,
warum er abgewiesen wurde — die Meldung stand auf einer Seite, die ihn
sofort weiterleitet; jetzt gibt es /kein-zugriff. Und der
Verzeichnis-Ablauf schrieb die Attributzuordnung der ersten vorhandenen
Quelle um, in einer echten Installation also der produktiven.

101 Ablaeufe in INTERN und 97 in DIENSTLEISTUNG, beide ohne Fehlschlag.

Closes #18

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Florian Wilde
2026-09-26 11:03:02 +02:00
co-authored by Claude Opus 5
parent 9bd198a531
commit 10e272654f
104 changed files with 4527 additions and 299 deletions
+154
View File
@@ -0,0 +1,154 @@
# 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.**
## 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.
## Was protokolliert wird
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. Eine
eigene Ansicht dafür gibt es in der Oberfläche noch nicht; was am Lauf selbst geschehen ist, steht in
seiner Abarbeitungsansicht und im Ausdruck.
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.