StartseiteDokumentationModuleMitarbeiterverwaltung
Administration & Governance · Global

Mitarbeiterverwaltung: wann das Modul im Produktalltag Sinn ergibt.

Mitarbeiter, Einladungen, Aktivstatus, Rollen und tenantweite Personaldaten organisieren. Das Modul wird in der passenden Verwaltungs- oder Arbeitsoberfläche freigeschaltet und genutzt.

  • Mitarbeiterverwaltung erklärt kompakt, wofür der Bereich gedacht ist und wann er im Arbeitsalltag relevant wird.
  • Der Bereich spielt in der Praxis besonders mit Stellenbezeichnungen und Berechtigungen zusammen.
  • Rollen, Sichtbarkeit und angrenzende Bereiche bestimmen, wie gut das Modul im Alltag funktioniert.
Modulzweck

Wofür das Modul gedacht ist

Mitarbeiterverwaltung ist Teil des aktiven Modul-Katalogs und deckt einen klaren Ausschnitt des Produktalltags ab.

Mitarbeiter, Einladungen, Aktivstatus, Rollen und tenantweite Personaldaten organisieren. Im tenantweiten Kontext sorgt der Bereich dafür, dass wiederkehrende Entscheidungen, Stammdaten oder Übersichten nicht in Nebensysteme ausweichen müssen.

Mitarbeiterverwaltung ist als eigenständiger Produktbaustein gedacht. Gerade deshalb lohnt sich ein Blick darauf, wie der Bereich mit Rollen, Datenkontext und angrenzenden Modulen zusammenspielt.

Das Modul wird in der passenden Verwaltungs- oder Arbeitsoberfläche freigeschaltet und genutzt.
Praxisbezug

Typische Einsatzfälle

Diese Situationen zeigen, wann der Bereich in einem sauberen Rollout oder im laufenden Betrieb konkret Mehrwert liefert.

Tenant sauber aufsetzen

Das Modul hilft dabei, organisatorische Regeln und Stammdaten an einer kontrollierten Stelle zu pflegen.

Verantwortung eingrenzen

Governance-Bereiche sollten nur wenige Personen pflegen, damit die Struktur stabil bleibt.

Rollouts belastbar machen

Eine klare Administrationsstruktur vereinfacht Onboarding, Rechtestruktur und spätere Produkterweiterungen.

Modulverbindungen

Wie das Modul mit anderen Bereichen zusammenspielt

struct-i-vio ist als zusammenhängende Plattform gedacht. Diese Module liegen fachlich am nächsten bei diesem Bereich.

Sichtbarkeit

Berechtigungen und Sichtbarkeit

Die öffentliche Dokumentation beschreibt die Logik auf Produktniveau - nicht als technische Policy-Liste, sondern als Rollout-Leitfaden.

Die Sichtbarkeit wird tenantweit bzw. organisationsweit freigeschaltet und sollte zu Rolle und Verantwortungsbereich passen.
Das Modul hat keinen eigenständigen Hauptmenüpfad. Zugriff und Aktionen greifen direkt in den jeweiligen Verwaltungs- oder Projektoberflächen.
Strukturverändernde oder tenantweite Einstellungen gehören in einen kleinen Administrationskreis und sollten nicht breit ausgerollt werden.
Empfohlener Einsatz

Best Practices

So bleibt der Bereich bei Einführung und Nutzung anschlussfähig an den restlichen Produktfluss.

Nur wenige Personen sollten tenantweite Struktur- oder Berechtigungsbereiche pflegen dürfen.
Vor größeren Änderungen prüfen, welche angrenzenden Module oder Automationen mit betroffen sind.
Administrative Einstellungen immer zusammen mit Rollenmodell und Rollout-Plan dokumentieren.
Tiefer einsteigen

Entwickler Info

Bedenkliches Modul: 5 von 15 Permissions sind UI-Hook-only enforced (nur React canAction-Check, kein API-Pre-Check, keine RLS-Policy). Plus 1 TRULY UNBOUND. Der Permission-Schutz hängt damit weitgehend an der Frontend-Schicht — wer den API direkt callt, umgeht ihn.

Entwickler-Info aufklappen (5)

⚠ KRITISCH5 UI-Hook-only Permissions ohne API/RLS-Backstop

view_employees, edit_employee, change_position_level, deactivate_employee und manage_job_positions werden NUR in pages/admin/employees.tsx via canAction geprüft. Die zugehörigen API-Endpoints (/api/employees, /api/admin/employees/[id]) haben keinen action-spezifischen Pre-Check, und es gibt keine RLS-Policy auf dim_employees mit diesen Permissions. Wer einen API-Client direkt aufruft (curl, andere Tools), umgeht die Permission. AUSNAHME bei manage_job_positions: zusätzlich aktiv in RLS auf job_positions — dort funktioniert der Schutz.

  • pages/admin/employees.tsx:187-195
  • Endpoints ohne Pre-Check: /api/employees, /api/admin/employees/[id]

⚠ KRITISCHinvite_employee ist TRULY UNBOUND

Die Permission existiert in dim_modules, ist aber nirgends im Code, RPC, RLS oder View referenziert. Der tatsächliche Einladungs-Flow nutzt manage_invitations. Toggle wirkungslos — sollte aus dem Schema entfernt werden.

Self-Bypass für HR-Daten

employee_personal_details_select/insert/update haben jeweils OR-Klauseln: own employee_id ODER view_hr_details/edit_hr_details. Jeder User darf eigene HR-Daten lesen und pflegen, ohne die Permissions zu haben — pragmatischer Self-Service.

  • RLS: public.employee_personal_details :: epd_select / _insert / _update

Stage-1-Coupling: edit_rates → manage_job_positions (INSERT-Pfad)

Bekannte Layer-Mismatch-Coupling. API-Check fragt edit_rates, RLS-Insert-Policy auf job_positions verlangt manage_job_positions. Konflikt nur beim Anlegen NEUER Positionen — UPDATE-Pfad reicht edit_rates allein.

  • lib/permission-dependencies.ts

job_positions_select hat keine Permission-Klausel

Die SELECT-Policy auf job_positions ist tenant-only — jeder Mitarbeiter sieht alle Job-Positionen / Stundensätze. Nur Mutations sind durch manage_job_positions / edit_rates gegated. Pragmatisch — Job-Positionen sind nicht sensitiv — sollte aber bewusst entschieden sein.

  • RLS: public.job_positions :: job_positions_select