Audit-Trail¶
Der Audit-Trail protokolliert alle Aenderungen an Datensaetzen im System. Er stellt die lueckenlose Nachverfolgbarkeit aller Bearbeitungsvorgaenge sicher und ist eine zentrale Anforderung fuer die Einhaltung von Qualitaetsstandards wie ISO 17025.
Uebersicht¶
Der Audit-Trail erfasst automatisch jede Erstellung, Aenderung und Loeschung von Datensaetzen. Dabei werden der Zeitpunkt, der ausfuehrende Benutzer sowie die alten und neuen Werte gespeichert.
Ueberwachte Bereiche¶
Jeder Bereich wird in einer eigenen Audit-Tabelle gefuehrt. Die Spaltenanzeige wird rollenbasiert und dynamisch geladen.
| Bereich | Tabelle | Beschreibung |
|---|---|---|
| Inventar | inventory_audit |
Aenderungen an Inventardatensaetzen. |
| Buchungen | booking_audit |
Aenderungen an Buchungsdatensaetzen. |
| Kunden | customers_audit |
Aenderungen an Kundenstammdaten. |
| Wartung / Reparatur | repair_audit |
Aenderungen an Wartungs- und Reparaturauftraegen. |
Spalten¶
| Spalte | Beschreibung |
|---|---|
| Zeitstempel | Datum und Uhrzeit der Aenderung. |
| Benutzer | Name des Benutzers, der die Aenderung vorgenommen hat. |
| Typ | Art der Aenderung (INSERT, UPDATE, DELETE). |
| Feldname | Name des geaenderten Feldes. |
| Alter Wert | Wert vor der Aenderung. |
| Neuer Wert | Wert nach der Aenderung. |
| Tabelle | Betroffener Datenbereich (z. B. inventory, calibration). |
| Datensatz-ID | Eindeutige Kennung des betroffenen Datensatzes. |
Zugriff¶
Der Audit-Trail ist in verschiedenen Bereichen des Systems zugaenglich:
- Inventardetails: Unter dem Reiter Statushistorie werden alle Aenderungen am jeweiligen Inventar angezeigt.
- Kundendetails: Aenderungen am Kundendatensatz und zugehoerigen Kontakten.
- Buchungsdetails: Aenderungen an einzelnen Buchungsvorgaengen.
Typische Nutzungsszenarien¶
- Aenderungsnachverfolgung: Pruefen, wer wann welche Aenderungen an einem Geraetedatensatz vorgenommen hat.
- Qualitaetsaudit: Nachweis der lueckenlosen Dokumentation fuer externe Audits und Zertifizierungen.
- Fehleranalyse: Identifikation fehlerhafter Aenderungen und Rueckverfolgung zum Verursacher.
- Statusverlauf: Nachvollziehen der Statuswechsel eines Inventars ueber die gesamte Lebensdauer.
Technische Hinweise¶
Automatische Erfassung
Der Audit-Trail wird automatisch bei jeder Datenaenderung befuellt. Es ist keine manuelle Aktion erforderlich. Systeminterne Aenderungen werden mit dem Benutzer "SYSTEM" protokolliert.
Unveraenderbarkeit
Audit-Trail-Eintraege sind Teil der revisionssicheren Dokumentation. Aenderungen am Audit-Trail selbst sollten nur durch autorisiertes Personal erfolgen.
- Statusfelder werden automatisch in lesbare Bezeichnungen uebersetzt (z. B. Inventarstatus, Buchungsstatus).
- Die Ansicht unterstuetzt Filter nach Benutzer, Zeitraum, Aenderungstyp und Feldname.
- Die angezeigte Spaltenkonfiguration ist rollenabhaengig und wird per AJAX dynamisch geladen.
- Der Zugriff erfordert die Berechtigung
inventory_details_statushistory_view.
Aufbewahrung und Archiv¶
Der Audit-Trail waechst mit jeder Aenderung und wird nie kleiner, solange nichts ihn aufraeumt. Auf einer aktiv genutzten Anlage kommen mehrere zehntausend Eintraege pro Tag zusammen. calServer haelt ihn deshalb in zwei Stufen.
| Stufe | Tabelle | Zweck |
|---|---|---|
| Heisses Fenster | audit |
Die juengste Vergangenheit, hinter Grid und Detailseiten. Vorgabe: 24 Monate. |
| Archiv | audit_archive |
Alles Aeltere. Gleiche Spalten, weniger Indizes, wird selten gelesen. |
Der Umzug ins Archiv loescht nichts. Ein Eintrag verlaesst das System erst, wenn die gesetzliche Aufbewahrungsfrist abgelaufen ist.
Aufbewahrungsfrist einstellen¶
Die Frist gilt fuer Audit-Meldungen und Geraetedaten gleichermassen und ist je nach Labor, Akkreditierung und Kundenvertrag verschieden. Einstellbar sind 10 bis 30 Jahre, die Vorgabe sind 10.
Gepflegt wird sie unter Administration > Grundeinstellungen > Aufbewahrung.
| Feld | Bedeutung | Vorgabe |
|---|---|---|
| Aufbewahrungsfrist (Jahre) | Wann ein archivierter Eintrag geloescht werden darf (10-30). | 10 |
| Audit-Trail: heisses Fenster (Monate) | Wie lange ein Eintrag im heissen Fenster bleibt. | 24 |
Die Mindestfrist laesst sich nicht unterschreiten
Ein Wert unter 10 Jahren wird auf 10 angehoben, ein Wert ueber 30 auf 30 gekappt. Das heisse Fenster wird zusaetzlich durch die Frist begrenzt.
Der Aufraeumlauf¶
Die geplante Aufgabe Audit-Trail archivieren (audit:prune) laeuft taeglich
um 4 Uhr. Sie verschiebt zuerst alles aus dem heissen Fenster ins Archiv und
loescht danach aus dem Archiv, was die Frist hinter sich hat.
# Trockenlauf: zeigt an, was umziehen und was geloescht wuerde
docker exec calserver-api-v2 php artisan audit:prune --dry-run
Der erste Lauf dauert
Auf einer gewachsenen Anlage zieht der erste Lauf sehr viele Zeilen um. Er laeuft in Stapeln und kann gefahrlos abgebrochen und wiederholt werden -- der naechste Lauf macht dort weiter, wo der vorige aufgehoert hat.
Anlegen und Loeschen im Trail¶
Beim Anlegen und beim Loeschen eines Datensatzes schreibt calServer einen Eintrag, der alle Felder als Momentaufnahme enthaelt -- nicht einen Eintrag je Feld. Die Ansicht faltet ihn wieder in die einzelne Felder auf, der Inhalt ist also derselbe.
Zwei Auswirkungen im Alltag:
- Der Filter Feldname trifft nur Aenderungen, keine Anlage- oder Loeschvorgaenge. Nach diesen wird ueber den Aenderungstyp gefiltert.
- In einer aufgefalteten Momentaufnahme stehen Verweise auf andere Datensaetze als Kennung statt als Name. Die Kennung wird gekuerzt angezeigt, der volle Wert steht im Tooltip.
