Koch Laboratory

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:

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:

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.

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.