# #035 M22 – Mitarbeiter-Selbstauskunft **Status:** offen **Im Tracker:** [#55](https://git.wilde-server.de/florian.wilde/Laufzettel/issues/55) **Meilenstein:** v0.2.0 **Labels:** phase-2, backend, frontend **Geschätzt:** 8 h **Tatsächlich:** – ## Ziel „Was ist eigentlich mit meinem Notebook passiert?“ fragt heute jemand im Ticket, und ein Techniker sieht nach. Ein Mitarbeiter soll die Läufe zu **seinen** Geräten und zu **seiner** Person selbst ansehen können — nur lesend. ## Woran es hängt Ein `Mitarbeiter` ist kein `Benutzer`. Die Anwendung kennt vier Rollen für Leute, die **arbeiten**; ein Mitarbeiter ist Gegenstand der Arbeit, nicht ihr Träger. Es gibt heute keinen Weg, von einer Anmeldung zu einer `Mitarbeiter`-Zeile zu kommen. ## Zu entscheiden - [ ] **Anmeldung über OIDC, Zuordnung über den UPN, neue Rolle `MITARBEITER`** — Empfehlung. Das Haus hat seine Leute ohnehin im Identitätsanbieter; wer sich anmeldet und keiner Rollengruppe angehört, wird über `upn` einer `Mitarbeiter`-Zeile zugeordnet und bekommt genau ein Recht: `selbstauskunft`. `Benutzer.mitarbeiterId` hält die Zuordnung fest. Die Alternative — ein Link mit Token je Person — braucht keine Anmeldung, aber jeder weitergeleitete Link ist dann ein Datenleck, und widerrufen müsste man je Person. - [ ] **Was der Mitarbeiter sieht:** Titel, Status, Zeitraum und Gerät eines Laufs. **Nicht** die Schritte, nicht die Notizen, nicht die Kommentare, nicht die Anhänge. In einem Lauf stehen Arbeitsnotizen über Menschen und Zugangsdaten-Platzhalter; eine Selbstauskunft ist keine Akteneinsicht. Das ist die wichtigste Entscheidung dieses Meilensteins und gehört in die Anleitung, nicht nur in den Code. - [ ] **Kein Zugang ohne Zuordnung.** Wer sich anmeldet und zu keiner `Mitarbeiter`-Zeile passt, bekommt `/kein-zugriff` mit Begründung — nicht eine leere Seite, die wie ein Fehler aussieht. ## Aufgaben - [ ] `Rolle` um `MITARBEITER` erweitern; `RECHTE` bekommt `selbstauskunft: ["MITARBEITER", …]`. **Jede** Rollenprüfung in `tests/rollen.test.ts` wächst um eine Spalte — die Matrix ist ausgeschrieben und nicht berechnet, genau damit das auffällt - [ ] `Benutzer.mitarbeiterId` mit Mandantengrenze als zusammengesetzter Fremdschlüssel - [ ] Zuordnung beim Login über `upn`, unabhängig von Groß- und Kleinschreibung; mehrdeutig ist ein Fehler und kein Zufallstreffer - [ ] Eigene Seite `/meine-geraete`: meine Geräte, je Gerät die Läufe chronologisch, Titel und Status - [ ] **Jede Abfrage schränkt auf die eigene Person ein** — nicht die Seite. Ein Lesemodell trägt seine Sicht selbst (CLAUDE.md) - [ ] Die Navigation zeigt einem `MITARBEITER` nur diese Seite; alles andere ist weg, nicht grau - [ ] Anleitung: ein eigenes kurzes Kapitel, an Mitarbeiter gerichtet und nicht an Techniker ## Akzeptanzkriterien - [ ] Test: ein `MITARBEITER` sieht die Läufe seiner Geräte und keinen anderen - [ ] Test: er sieht **keine** Schritte, Notizen, Kommentare oder Anhänge — geprüft über die Antwort, nicht über die Seite - [ ] Test: er kann nichts schreiben — jede Server Action weist ihn ab (`tests/zugang.test.ts` erkennt eine ungeprüfte Aktion ohnehin) - [ ] Test: ohne passende `Mitarbeiter`-Zeile führt die Anmeldung auf `/kein-zugriff` mit Begründung - [ ] Test: ein mehrdeutiger UPN wird abgewiesen und protokolliert - [ ] Test: die Rollenmatrix ist vollständig — jede der fünf Rollen gegen jedes Recht - [ ] Am Handy kein horizontales Scrollen