feat(protokoll): Protokoll ansehen, mit Filtern und Mandantensicht
Geschrieben wurde es seit dem Datenmodell, ansehen konnte es niemand: wer wissen wollte, wer wann eine Rolle geaendert hat, brauchte psql. Neue Seite Verwaltung -> Protokoll: Volltext ueber Aktion und Lauftitel, Filter nach Urheber und Zeitraum, fuenfzig Eintraege je Seite, neueste zuerst. Ein Eintrag ohne Urheber steht als Systemlauf da und nicht als Luecke -- der Zeitplan des Verzeichnisabgleichs hat keinen Menschen hinter sich. Am Lauf selbst stehen seine Eintraege eingeklappt in der Abarbeitungsansicht. Kein eigenes Recht dafuer: wer den Lauf sehen darf, darf auch sehen, was an ihm geschehen ist. Dafuer traegt Protokoll jetzt eine kundeId, wie CLAUDE.md es fuer jede kundenbezogene Zeile verlangt. Ohne sie liess sich die Mandantensicht nicht anwenden, ohne je Eintrag die Entitaet nachzuschlagen. Leer heisst global; laufbezogene Eintraege bleiben ohne, weil der Lauf die bessere Quelle ist. Die Migration fuehrt bestehende Eintraege nach -- an echten Daten gefahren, 59 von 733 bekamen einen Kunden. Ein Eintrag, der sich keinem Kunden zuordnen laesst, wird einem beschraenkten Benutzer nicht gezeigt: vorher/nachher koennen einen Hostnamen enthalten, und bei einer Mandantengrenze wird im Zweifel zugemacht. Keine Tabelle, sondern Karten: sieben Spalten sind bei 390 px nicht darstellbar, ohne horizontal zu scrollen. Im gebauten Stand durchgeklickt: blaettern, filtern, Werte aufklappen, Abschnitt am Lauf, 390 px auf beiden Seiten ohne Scrollen. Closes #35
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# #023 Protokoll ansehen
|
||||
|
||||
**Status:** offen
|
||||
**Status:** erledigt
|
||||
**Im Tracker:** [#35](https://git.wilde-server.de/florian.wilde/Laufzettel/issues/35)
|
||||
**Meilenstein:** v0.2.0
|
||||
**Labels:** phase-2, frontend
|
||||
@@ -14,22 +14,42 @@ geändert hat, braucht `psql`.
|
||||
|
||||
Aufgefallen beim Schreiben der Anleitung in [#018](018-e2e-anleitung-pdf.md).
|
||||
|
||||
**Geschätzt:** 4 h **Tatsächlich:** –
|
||||
**Geschätzt:** 4 h **Tatsächlich:** 1 h 50 min
|
||||
|
||||
## Aufgaben
|
||||
|
||||
- [ ] Admin → Protokoll: Liste mit Zeitpunkt, Urheber, Aktion, betroffener Zeile, umblätterbar
|
||||
- [ ] Filter nach Zeitraum, Aktion und Urheber; Volltext über die Aktion
|
||||
- [ ] Die Mandantensicht gilt auch hier: ein Eintrag zu einem fremden Kunden ist nicht sichtbar
|
||||
- [ ] Recht `verwaltung` — das Protokoll sagt, wer was getan hat, und ist damit selbst eine Auskunft
|
||||
- [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
|
||||
- [ ] Ein Eintrag ohne Urheber (Systemlauf, etwa der Zeitplan) wird als solcher gezeigt, nicht als
|
||||
- [x] Ein Eintrag ohne Urheber (Systemlauf, etwa der Zeitplan) wird als solcher gezeigt, nicht als
|
||||
Lücke
|
||||
- [ ] Am Lauf selbst: die Einträge dieses Laufs in seiner Abarbeitungsansicht, eingeklappt
|
||||
- [x] Am Lauf selbst: die Einträge dieses Laufs in seiner Abarbeitungsansicht, eingeklappt
|
||||
|
||||
## Akzeptanzkriterien
|
||||
|
||||
- [ ] Test: ein Eintrag eines fremden Kunden erscheint nicht
|
||||
- [ ] Test: `TECHNIKER` kommt nicht auf die Seite
|
||||
- [ ] Test: ein erzeugtes Passwort taucht in keinem Eintrag auf
|
||||
- [ ] Am Handy kein horizontales Scrollen
|
||||
- [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.
|
||||
|
||||
Reference in New Issue
Block a user