Files
SkillMate/CHANGES_ORGANIGRAMM.md
2025-09-23 22:40:37 +02:00

220 Zeilen
7.3 KiB
Markdown

# Organigramm & Vertretungsmanagement - Implementierung
## Übersicht
Vollständige Implementierung eines interaktiven Organigramm-Systems mit dynamischer Vertretungsverwaltung für das LKA NRW.
## Datum: 2025-01-22
## Neue Features
### 1. Organigramm-Verwaltung
- **Hierarchische Darstellung** der Behördenstruktur (Direktion → Abteilung → Dezernat → Sachgebiet)
- **Sondereinheiten** wie Personalrat und Schwerbehindertenvertretung
- **Führungsstellen (FüSt)** für Abteilungen 1-6
- **Interaktive Visualisierung** mit Zoom/Pan und Suche
### 2. Dynamisches Vertretungssystem
- **Selbstverwaltung**: Mitarbeiter können eigene Vertretungen festlegen
- **Unbegrenzte Delegationskette**: Vertretungen können weitergegeben werden
- **Zeitliche Begrenzung**: Von-Bis Zeiträume für Vertretungen
- **Ebenengleiche Vertretung**: Automatische Vorschläge für passende Vertreter
### 3. Admin-Panel Features
- **React Flow Editor** für Drag & Drop Organigramm-Bearbeitung
- **Einheiten-Verwaltung**: Hinzufügen, Bearbeiten, Löschen von Organisationseinheiten
- **Visuelle Differenzierung** durch Gradient-Farbschema nach Abteilungen
- **PDF-Import ready** für zukünftige OCR-Integration
### 4. Frontend Features
- **Organigramm-Modal**: Fullscreen-Popup mit 3-Bereich-Layout
- **Mitarbeiter-Details**: Anzeige von Mitarbeitern pro Einheit
- **Vertretungs-Tab** in "Mein Profil"
- **Quick-Access**: 🏢 Button im Header für schnellen Zugriff
## Technische Änderungen
### Backend
#### Neue Dateien:
- `backend/src/routes/organization.ts` - API-Routes für Organigramm und Vertretungen
#### Geänderte Dateien:
- `backend/src/config/secureDatabase.ts` - Neue Datenbank-Tabellen:
- `organizational_units` - Organisationseinheiten
- `employee_unit_assignments` - Mitarbeiter-Zuordnungen
- `special_positions` - Sonderpositionen (Beauftragte, Räte)
- `deputy_assignments` - Vertretungszuweisungen
- `deputy_delegations` - Vertretungs-Weitergaben
- `backend/src/index.ts` - Neue Route `/api/organization` registriert
- `backend/src/routes/employeesSecure.ts` - Neue Route `/employees/public` für öffentliche Mitarbeiterliste
#### API Endpoints:
```
GET /api/organization/units - Alle Einheiten abrufen
GET /api/organization/hierarchy - Hierarchie-Baum abrufen
GET /api/organization/units/:id - Einzelne Einheit mit Mitarbeitern
POST /api/organization/units - Neue Einheit anlegen
PUT /api/organization/units/:id - Einheit bearbeiten
POST /api/organization/assignments - Mitarbeiter zuordnen
GET /api/organization/my-units - Eigene Einheiten abrufen
GET /api/organization/deputies/my - Eigene Vertretungen abrufen
POST /api/organization/deputies/my - Vertretung anlegen
POST /api/organization/deputies/delegate - Vertretung weitergeben
GET /api/organization/deputies/chain/:id - Vertretungskette abrufen
GET /api/organization/special-positions - Sonderpositionen abrufen
```
### Shared Types
#### Geänderte Dateien:
- `shared/index.d.ts` - Neue TypeScript-Definitionen:
- `OrganizationalUnit` - Organisationseinheit
- `OrganizationalUnitType` - Einheiten-Typen
- `EmployeeUnitAssignment` - Mitarbeiter-Zuordnung
- `EmployeeUnitRole` - Rollen (leiter, stellvertreter, mitarbeiter, beauftragter)
- `SpecialPosition` - Sonderpositionen
- `DeputyAssignment` - Vertretungszuweisung
- `DeputyDelegation` - Vertretungs-Delegation
### Admin-Panel
#### Neue Dateien:
- `admin-panel/src/views/OrganizationEditor.tsx` - React Flow basierter Organigramm-Editor
#### Geänderte Dateien:
- `admin-panel/src/App.tsx` - Route `/organization` hinzugefügt
- `admin-panel/src/components/Layout.tsx` - Navigation für Organigramm hinzugefügt
#### NPM Packages:
```json
{
"reactflow": "^11.x",
"@reactflow/controls": "^11.x",
"@reactflow/minimap": "^11.x",
"@reactflow/background": "^11.x"
}
```
### Frontend
#### Neue Dateien:
- `frontend/src/components/OrganizationChart.tsx` - Interaktives Organigramm-Modal
- `frontend/src/components/DeputyManagement.tsx` - Vertretungsverwaltung
#### Geänderte Dateien:
- `frontend/src/components/Header.tsx` - Organigramm-Button und Modal-Integration
- `frontend/src/views/MyProfile.tsx` - Tab für Vertretungsverwaltung hinzugefügt
## Datenmodell
### Organisationsstruktur
```sql
organizational_units:
- id (UUID)
- code (z.B. "ZA 1", "Dezernat 42")
- name (Vollständiger Name)
- type (direktion/abteilung/dezernat/sachgebiet/...)
- level (0=Direktor, 1=Abteilung, 2=Dezernat, 3=SG/TD)
- parent_id (Verweis auf übergeordnete Einheit)
- position_x/y (Visuelle Position)
- color (Farbcodierung)
- has_fuehrungsstelle (Boolean)
```
### Vertretungssystem
```sql
deputy_assignments:
- principal_id (Wer wird vertreten)
- deputy_id (Wer vertritt)
- valid_from/until (Zeitraum)
- reason (Urlaub/Dienstreise/etc.)
- can_delegate (Darf weitergeben)
deputy_delegations:
- original_assignment_id
- from_deputy_id
- to_deputy_id
- reason
```
## UI/UX Features
### Visuelle Gestaltung
- **Gradient-Farbschema** für Abteilungen 1-6
- **Icon-System** für verschiedene Einheiten-Typen
- **Hover-Effekte** mit Mitarbeiteranzahl und Details
- **Breadcrumb-Navigation** für Hierarchie-Pfad
- **Dark Mode Support** vollständig integriert
### Interaktionen
- **Zoom/Pan** für große Organigramme
- **Suche** nach Einheiten und Personen
- **Filter** nach Abteilungen
- **Drag & Drop** im Admin-Editor
- **Kontextmenüs** für schnelle Aktionen
## Sicherheit
- **Rollenbasierte Zugriffskontrolle** für Admin-Funktionen
- **Audit-Logging** für kritische Aktionen
- **Verschlüsselte Felder** für sensitive Daten
- **JWT-Authentication** für alle API-Calls
## Migration & Deployment
### Datenbank-Migration
Beim ersten Start werden automatisch alle neuen Tabellen angelegt.
### Rollback
Falls ein Rollback nötig ist, können die neuen Tabellen entfernt werden:
```sql
DROP TABLE IF EXISTS deputy_delegations;
DROP TABLE IF EXISTS deputy_assignments;
DROP TABLE IF EXISTS special_positions;
DROP TABLE IF EXISTS employee_unit_assignments;
DROP TABLE IF EXISTS organizational_units;
```
## Testing
### Smoke Tests
1. Backend neu starten für Datenbank-Schema
2. Admin-Panel: Organigramm → Einheit hinzufügen
3. Frontend: 🏢 Button → Organigramm anzeigen
4. Mein Profil → Vertretungen → Vertretung hinzufügen
### Bekannte Limitierungen
- PDF-Import noch nicht implementiert (Struktur vorbereitet)
- Skill-Aggregation pro Einheit noch nicht implementiert
- E-Mail-Benachrichtigungen für Vertretungen noch nicht aktiv
## Performance
- **Lazy Loading** für große Hierarchien
- **Virtualisierung** bei >500 Nodes
- **Caching** von Hierarchie-Daten
- **Progressive Disclosure** für Ebenen
## Zukünftige Erweiterungen
1. **PDF-OCR Import** für automatisches Einlesen von Organigrammen
2. **Skill-Matrix** pro Organisationseinheit
3. **Stellenplan-Integration** mit Soll/Ist-Vergleich
4. **Export-Funktionen** (PDF, PNG, Excel)
5. **Historien-Tracking** für Reorganisationen
6. **E-Mail-Notifications** bei Vertretungsänderungen
## Abhängigkeiten
- React Flow 11.x für Organigramm-Editor
- Better-SQLite3 für Datenbank
- TypeScript für Type-Safety
- Tailwind CSS für Styling
## Support & Dokumentation
Bei Fragen oder Problemen:
- Prüfen Sie die Browser-Konsole für Fehler
- Stellen Sie sicher, dass alle Services laufen
- Überprüfen Sie die Datenbank-Verbindung
- Logs befinden sich in `backend/logs/`