Laborbuch — Administrator-Handbuch
Laborprofil, Projekte, Benutzer und 2FA, Storno, Übersetzungen, Wochenabschlüsse, Backups, Lizenz, Updates.
Administrator-Handbuch der Laborbuch-Instanz — Konfiguration, Benutzer, Wochenabschlüsse, Backups und Lizenz. Die tägliche Arbeit beschreibt das Benutzerhandbuch.
Adminbereich
Der Adminbereich liegt unter /admin/ (Anmeldung mit demselben Konto und 2FA wie das Journal — der Adminbereich ist nicht ohne 2FA erreichbar). Zugriff haben Konten mit „Mitarbeiter”-Recht (staff); die volle Konfiguration erledigt der bei der Installation angelegte Superuser.
Erstkonfiguration — Seiteneinstellungen
Seiteneinstellungen → Laborprofil passt das System an die Arbeitsweise an:
| Einstellung | Bedeutung |
|---|---|
| Git/GitHub-Integration | Repositories, Commit-Synchronisierung und Commit-Anker — Profil IT/Hardware; im Labor ohne Code deaktivieren |
| Datei-Anker (Uploads) | Beweisdateien an Einträge anhängen |
| Modus der Datei-Anker | Upload — Datei wird in der Instanz gespeichert; Hash-only — die Datei bleibt beim Benutzer, das System speichert nur den SHA-256-Fingerabdruck (Geschäftsgeheimnisse erreichen den Server nie) |
Projekte
Projekte → Hinzufügen: Name, Slug, Vorhabens-Code (Zuordnung zum BSFZ-Antrag), Beschreibung der Abgrenzung FuE/Routine. Zwei Personenlisten:
- Mitglieder — legen Einträge an und sehen die Projektdaten.
- Beobachter — sehen Einträge und Berichte (Teamarbeit), aber ohne Stunden anderer Personen (Maskierung „—”) und ohne Eintragsrecht.
Ein neues Konto wird automatisch Mitglied aller aktiven Projekte, und ein neues Projekt erhält alle vorhandenen Konten. Der Ausschluss aus einem Projekt ist das bewusste Entfernen aus der Liste Mitglieder — eine einmal entfernte Person wird nicht erneut hinzugefügt.
Bei aktivem Git fügen Sie dem Projekt Repositories hinzu (Format owner/name; das Zugriffstoken wird in der Instanzkonfiguration als GITHUB_TOKEN gesetzt). Commits werden alle 15 Minuten geholt; manuell: Button im Dashboard oder Admin-Aktion Commits von GitHub synchronisieren.
Ein Fine-grained-Token deckt nur Repositories eines Ressourcenbesitzers ab; ein Organisations-Repository ist für das Token eines persönlichen Kontos unsichtbar (GitHub antwortet dann mit 404, nicht 403). Ein solches Repository erhält ein eigenes Token im Feld Zugriffstoken — ausgestellt auf die Organisation (Resource owner = Organisation, ausgewähltes Repository, Berechtigung Contents: Read-only); die Organisation muss den Zugriff über Fine-grained-PATs erlauben. Leeres Feld = globales Token. Die Aktion GitHub-Zugriff prüfen verifiziert die Konfiguration, ohne Commits zu holen.
Benutzer und 2FA
Benutzer → Hinzufügen: Login und Passwort, dann im Konto die Rechte („Mitarbeiter” für den Adminbereich) und Rollengruppen. Die 2FA-Methode legen Sie je Konto fest — unten auf der Benutzerseite:
- 2FA — TOTP (App / Hardware-Karte): Gerät hinzufügen; für Apps (z. B. Google Authenticator) wird der Schlüssel automatisch erzeugt — den QR-Code finden Sie beim Öffnen des Geräts im Bereich „TOTP devices”; für Hardware-Karten den Karten-Seed in
keyeintragen, Uhren-Drift überdrift/tolerancekorrigieren. - 2FA — Code per E-Mail: Gerät hinzufügen; leeres
email= Kontoadresse. Erfordert konfigurierten Mailversand (EMAIL_* in der Instanzkonfiguration). - Ein Konto ohne Gerät meldet sich nur mit Passwort an.
Das Lizenzlimit zählt aktive Konten: Bei ausgeschöpftem Limit lässt sich kein Konto anlegen oder aktivieren — Deaktivierung („aktiv” abwählen) gibt den Platz frei, ohne die Eintragshistorie zu verlieren.
Abrechnungsparameter (Bereich auf der Kontoseite) enthalten die persönliche Wochenobergrenze. Leeres Feld = globale Obergrenze der Instanz, standardmäßig 40 Std., also die Eigenleistungsregel nach § 3 Abs. 3 FZulG. Für Arbeitnehmer die vertragliche Arbeitszeit eintragen: Ihre Stunden sind in der tatsächlich geleisteten Höhe förderfähig, bei einer halben Stelle also 20 Std.; Überstunden eines Arbeitnehmers sind kein „FuE über der Obergrenze”. Die gesetzte Obergrenze erscheint auch im Dashboard der Person — im Wochenbalken und als Linie im Diagramm.
Einträge, Korrekturen (Storno) und Übersetzungen
Einträge im Adminbereich: vollständige Liste mit Filtern. Einträge offener Wochen sind korrigierbar; abgeschlossene (🔒) sind endgültig schreibgeschützt.
- Storno: neuen Eintrag mit negativen Stunden anlegen und im Feld
correctsden korrigierten Eintrag angeben. Das Original bleibt — die Korrektur ist offen, wie in der Buchhaltung. - Übersetzungen: mit gesetztem
TRANSLATE_AUTO_LANGS(z. B.de) wird jeder neue oder korrigierte Eintrag direkt nach dem Speichern automatisch im Hintergrund übersetzt. Lücken (ältere Einträge, kurzzeitige API-Störung) schließt der Bericht beim Generieren in der jeweiligen Sprache selbst — schubweise; massenhaft:manage.py translate_entries --lang de. Manuell: Einträge markieren → Aktion Ins Deutsche / Englische / Polnische übersetzen (Claude). Die Übersetzung ist ein separater Datensatz (Original unangetastet), wird einmal erstellt und kann unter Übersetzungen der Einträge manuell korrigiert werden. ErfordertANTHROPIC_API_KEY; jede Übersetzung ist ein kostenpflichtiger API-Aufruf — aber nur einer pro Eintrag und Sprache. - Anker (Bereich im Eintrag): Commits, Dateien (Hash automatisch), mtime, Ereignisprotokoll, Sonstiges.
Wochenabschluss — der Arbeitsrhythmus
Die Woche wird per Befehl auf dem Server abgeschlossen (z. B. montags für die Vorwoche):
docker compose exec web python manage.py close_week 2026-W29
Der Abschluss: baut die kanonische Fassung aller Wocheneinträge → berechnet SHA-256 → stempelt über BeatTime (Ed25519-Signatur) und OpenTimestamps (Bitcoin-Verankerung) → sperrt die Einträge (🔒). Die Nachweise stehen unter Wochenabschlüsse. Der OTS-Stempel reift nach der Bitcoin-Bestätigung — upgrade_ots aktualisiert die Nachweise.
Grundsatz: regelmäßig abschließen. Eine offene Woche sind Einträge ohne Stempel — je früher der Abschluss, desto stärker der Beweis.
Backups
Admin-Startseite → Datenbank-Backups: Backup erstellen (ohne Systemstopp), Liste mit Daten, Herunterladen (Kopie außerhalb des Servers ablegen!), Wiederherstellen (sichert den vorherigen Stand automatisch als pre-restore-…) und Löschen. Das Backup umfasst die Datenbank; Beweisdateien in media/ benötigen eine separate Verzeichniskopie. Alle Operationen landen im Audit-Journal.
Lesezugriffs-Audit
Lesezugriffe (Audit) — append-only Register: wer wann Berichte öffnete, Beweisdateien herunterlud, Backups erstellte und wiederherstellte. Einträge sind weder änderbar noch löschbar.
Lizenz
Die Datei license.json liegt im Installationsverzeichnis. Den Status zeigt das Dashboard (Kunde, Paket, Kontenlimit, Gültigkeit). Nach Ablauf wechselt die Instanz in den Nur-Lese-Betrieb mit vollem Export — Daten werden nie eingeschlossen. Verlängerung: Datei gegen die neue austauschen (ohne Neustart).
Updates
cd laborbuch && docker compose pull && docker compose up -d
Datenbankmigrationen laufen beim Start automatisch. Die Images sind signiert (cosign). Vor größeren Updates ein Backup erstellen.