Laborbuch — podręcznik administratora
Profil laboratorium, projekty, użytkownicy i 2FA, storno, tłumaczenia, zamknięcia tygodni, kopie, licencja, aktualizacje.
Podręcznik administratora instancji Laborbuch — konfiguracja, użytkownicy, zamykanie tygodni, kopie i licencja. Codzienną pracę opisuje podręcznik użytkownika.
Panel admina
Panel jest pod adresem /admin/ (logowanie tym samym kontem i 2FA co do dziennika — panelu nie da się otworzyć z pominięciem 2FA). Dostęp mają konta z uprawnieniem „w zespole” (staff); pełną konfigurację robi superużytkownik utworzony przy instalacji.
Pierwsza konfiguracja — Ustawienia strony
Ustawienia strony → Profil laboratorium dopasowuje system do charakteru pracy:
| Ustawienie | Znaczenie |
|---|---|
| Integracja Git/GitHub | Repozytoria, synchronizacja commitów i kotwice commitowe — profil IT/hardware; wyłącz w laboratorium bez kodu |
| Kotwice plikowe (uploady) | Załączanie plików dowodowych do wpisów |
| Tryb kotwic plikowych | Upload — plik przechowywany w instancji; Hash-only — plik zostaje u użytkownika, system zapisuje tylko odcisk SHA-256 (tajemnica przedsiębiorstwa nigdy nie trafia na serwer) |
Projekty
Projekty → Dodaj: nazwa, slug, Kod Vorhaben (odwzorowanie na wniosek BSFZ), opis odgraniczenia B+R od rutyny. Dwie listy osób:
- Członkowie — dodają wpisy w projekcie i widzą jego dane.
- Obserwatorzy — widzą wpisy i raporty projektu (praca zespołowa), ale bez godzin innych osób (maskowanie „—”) i bez prawa dodawania wpisów.
Nowe konto trafia domyślnie do członków wszystkich aktywnych projektów, a nowy projekt dostaje wszystkie istniejące konta. Wykluczenie kogoś z projektu to świadome usunięcie z listy Członkowie — raz usunięta osoba nie zostanie dopisana ponownie.
Przy włączonym Git dodaj projektowi Repozytoria (format owner/nazwa; token dostępu ustawia się w konfiguracji instancji jako GITHUB_TOKEN). Commity pobierają się co 15 minut; ręcznie: przycisk w dashboardzie albo akcja Synchronizuj commity z GitHub w adminie.
Token typu fine-grained obejmuje repo tylko jednego właściciela zasobów, więc repo organizacji jest dla tokena konta osobistego niewidoczne (GitHub odpowiada wtedy 404, nie 403). Takie repo dostaje własny token w polu Token dostępowy — wystaw go na organizację (Resource owner = organizacja, wybrane repo, uprawnienie Contents: Read-only), a organizacja musi mieć włączony dostęp przez fine-grained PAT. Puste pole = token globalny. Akcja Sprawdź dostęp GitHub weryfikuje konfigurację bez pobierania commitów.
Użytkownicy i 2FA
Użytkownicy → Dodaj: login i hasło, potem w edycji konta uprawnienia („w zespole” dla dostępu do admina) i grupy ról (Badacz, Kierownik B+R, Redaktor CMS). Metodę 2FA deklarujesz per konto — na dole strony użytkownika:
- 2FA — TOTP (aplikacja / karta sprzętowa): dodaj urządzenie; dla aplikacji (np. Google Authenticator) klucz generuje się sam — kod QR do zeskanowania znajdziesz otwierając urządzenie w sekcji „TOTP devices”; dla karty sprzętowej wklej jej seed w pole
key, a odchył zegara koryguj polamidrift/tolerance. - 2FA — kod na e-mail: dodaj urządzenie; puste pole
email= adres z konta. Wymaga skonfigurowanej poczty (EMAIL_* w konfiguracji instancji). - Konto bez urządzenia loguje się samym hasłem.
Limit kont licencji liczy konta aktywne: przy wyczerpanym limicie nie dodasz ani nie aktywujesz konta — dezaktywacja (odznaczenie „aktywny”) zwalnia miejsce bez utraty historii wpisów.
Parametry rozliczeniowe (sekcja na stronie konta) zawierają osobowy sufit tygodniowy. Puste pole = sufit globalny instancji, domyślnie 40 h, czyli reguła Eigenleistung wg §3 Abs. 3 FZulG. Dla pracownika wpisz wymiar jego umowy: godziny pracownika są kwalifikowane w wysokości rzeczywistej, więc przy pół etatu sufit wynosi 20 h, a nadgodziny pracownika nie są „B+R ponad sufit”. Ustawiony sufit widać także na dashboardzie danej osoby — w pasku tygodnia i jako linia na wykresie.
Wpisy, korekty (storno) i tłumaczenia
Wpisy w adminie: pełna lista z filtrami. Wpis w otwartym tygodniu można poprawić; wpis zamknięty (🔒) jest tylko do odczytu — na zawsze.
- Storno: dodaj nowy wpis z ujemnymi godzinami i wskaż korygowany w polu
corrects. Oryginał zostaje — korekta jest jawna, jak w księgowości. - Tłumaczenia: przy ustawionym
TRANSLATE_AUTO_LANGS(np.de) każdy nowy lub poprawiony wpis tłumaczy się automatycznie w tle zaraz po zapisie. Braki (starsze wpisy, chwilowa awaria API) raport dotłumaczy sam przy generowaniu w danym języku — partiami, a masowo:manage.py translate_entries --lang de. Ręcznie: zaznacz wpisy → akcja Przetłumacz na niemiecki / angielski / polski (Claude). Tłumaczenie to osobny rekord (oryginał nietknięty), tłumaczy się raz i można je poprawić ręcznie w Tłumaczenia wpisów. Wymaga kluczaANTHROPIC_API_KEYw konfiguracji; każde tłumaczenie to płatne wywołanie API — ale tylko jedno na wpis i język. - Kotwice (sekcja we wpisie): commity, pliki (hash liczony automatycznie), mtime, dziennik zdarzeń, inne.
Zamknięcie tygodnia — rytm pracy
Tydzień zamyka się komendą na serwerze (np. w poniedziałek za tydzień poprzedni):
docker compose exec web python manage.py close_week 2026-W29
Zamknięcie: buduje kanoniczny zapis wszystkich wpisów tygodnia → liczy SHA-256 → znakuje czasem w BeatTime (podpis Ed25519) i OpenTimestamps (kotwica w Bitcoinie) → blokuje wpisy (🔒). Dowody znajdziesz w Zamknięcia tygodni (odcisk, status, dowody stempli). Stempel OTS dojrzewa po potwierdzeniu w Bitcoinie — komenda upgrade_ots aktualizuje dowody.
Zasada: zamykaj regularnie. Otwarty tydzień to wpisy bez stempla — im szybciej zamkniesz, tym mocniejszy dowód.
Kopie zapasowe
Pulpit admina → Kopie zapasowe bazy: utworzenie kopii (bez zatrzymywania systemu), lista z datami, Pobierz (odłóż kopię poza serwer!), Przywróć (automatycznie odkłada stan sprzed przywrócenia jako pre-restore-…) i Usuń. Kopia obejmuje bazę; pliki dowodowe w media/ wymagają osobnej kopii katalogu. Operacje trafiają do dziennika audytu.
Audyt odczytów
Odczyty (audyt) — append-only rejestr: kto i kiedy otwierał raporty, pobierał pliki dowodowe, tworzył i przywracał kopie. Wpisów nie da się zmienić ani usunąć — przy tajemnicy przedsiębiorstwa odczyt bywa równie wrażliwy jak edycja.
Licencja
Plik license.json leży w katalogu instalacji. Stan widać na dashboardzie (klient, pakiet, limit kont, ważność). Po wygaśnięciu instancja przechodzi w tryb tylko-do-odczytu z pełnym eksportem — dane nigdy nie są zakładnikiem. Odnowienie: podmiana pliku na nowy (bez restartu). Rozszerzenie pakietu: nowy plik od dostawcy.
Aktualizacje
cd laborbuch && docker compose pull && docker compose up -d
Migracje bazy wykonują się automatycznie przy starcie. Obrazy są podpisane (cosign) — weryfikacja opisana na stronie produktu. Przed większymi aktualizacjami utwórz kopię zapasową.