# #023 Protokoll ansehen **Status:** erledigt **Im Tracker:** [#35](https://git.wilde-server.de/florian.wilde/Laufzettel/issues/35) **Meilenstein:** v0.2.0 **Labels:** phase-2, frontend ## Ziel Laufzettel schreibt ein Protokoll über alles, was nachvollziehbar bleiben muss — Rollenänderungen, veröffentlichte Vorlagen, archivierte und zurückgeholte Läufe, Verzeichnisquellen, den Moduswechsel. **Ansehen kann es niemand.** Es gibt keine Oberfläche dafür; wer wissen will, wer wann eine Rolle geändert hat, braucht `psql`. Aufgefallen beim Schreiben der Anleitung in [#018](018-e2e-anleitung-pdf.md). **Geschätzt:** 4 h **Tatsächlich:** 1 h 50 min ## Aufgaben - [x] Admin → Protokoll: Liste mit Zeitpunkt, Urheber, Aktion, betroffener Zeile, umblätterbar - [x] Filter nach Zeitraum, Aktion und Urheber; Volltext über die Aktion - [x] Die Mandantensicht gilt auch hier: ein Eintrag zu einem fremden Kunden ist nicht sichtbar - [x] Recht `verwaltung` — das Protokoll sagt, wer was getan hat, und ist damit selbst eine Auskunft über Menschen - [x] Ein Eintrag ohne Urheber (Systemlauf, etwa der Zeitplan) wird als solcher gezeigt, nicht als Lücke - [x] Am Lauf selbst: die Einträge dieses Laufs in seiner Abarbeitungsansicht, eingeklappt ## Akzeptanzkriterien - [x] Test: ein Eintrag eines fremden Kunden erscheint nicht - [x] Test: `TECHNIKER` kommt nicht auf die Seite - [x] Test: ein erzeugtes Passwort taucht in keinem Eintrag auf - [x] Am Handy kein horizontales Scrollen ## Beim Umsetzen dazugekommen - **`Protokoll` hat jetzt eine `kundeId`.** CLAUDE.md verlangt sie für jede kundenbezogene Zeile; das Protokoll hatte sie nicht, und damit ließ sich die Mandantensicht nicht anwenden, ohne je Eintrag die Entität nachzuschlagen. Leer heißt **global** (Einstellungen, Benutzer, kundenfreie Vorlagen, Schnellstart). Zwanzig Schreibstellen setzen sie jetzt; laufbezogene Einträge bleiben ohne, weil der Lauf die bessere Quelle ist — er kann seine Zuordnung nicht verlieren. - **Die Migration führt bestehende Einträge nach**, über den Lauf und über die fünf kundentragenden Entitäten. An echten Daten gefahren: 59 von 733 Einträgen bekamen einen Kunden. - **Nicht zuordenbare Einträge werden verborgen, nicht gezeigt.** 414 Einträge in der Entwicklungsdatenbank zeigen auf längst gelöschte Testgeräte und lassen sich keinem Kunden zuordnen. `vorher`/`nachher` können einen Hostnamen enthalten — bei einer Mandantengrenze wird im Zweifel zugemacht, nicht aufgemacht. - **Keine Tabelle, sondern Karten.** Sieben Spalten sind bei 390 px nicht darstellbar, ohne horizontal zu scrollen, und genau das ist ausgeschlossen. - Das Mandanten-Kriterium ist auf der Seite heute **strukturell** erfüllt, weil sie `verwaltung` verlangt und ein `ADMIN` ohnehin alle Kunden sieht. Der Filter sitzt trotzdem im Lesemodell und ist dort geprüft — ein Lesemodell trägt seine Sicht selbst, und wenn das Recht je weiter gefasst wird, hält die Grenze.