Aufräumen und header zentralisieren
This commit is contained in:
285
doc/README.md
Normal file
285
doc/README.md
Normal file
@@ -0,0 +1,285 @@
|
||||
# Stundenerfassungs-System
|
||||
|
||||
Eine webbasierte Anwendung zur Erfassung von Arbeitszeiten mit Admin-Bereich, PDF-Export, Überstunden-Verwaltung und LDAP-Integration.
|
||||
|
||||
## Features
|
||||
|
||||
### Für Mitarbeiter
|
||||
- ✅ Login mit Benutzername und Passwort oder LDAP
|
||||
- ✅ Wöchentliche Stundenerfassung (Montag - Sonntag)
|
||||
- ✅ Automatisches Speichern der Einträge
|
||||
- ✅ Eingabe von Start-/Endzeit, Pausen und Notizen
|
||||
- ✅ Mehrere Tätigkeiten pro Tag mit Projektnummern (bis zu 5)
|
||||
- ✅ Automatische Berechnung der Gesamtstunden
|
||||
- ✅ Überstunden-Verwaltung (Anzeige und Verbrauch)
|
||||
- ✅ Urlaubsverwaltung (ganzer/halber Tag)
|
||||
- ✅ Krankheitstage erfassen
|
||||
- ✅ Feiertage werden automatisch erkannt
|
||||
- ✅ Wochenend-Prozentsätze (konfigurierbar)
|
||||
- ✅ Wöchentliches Abschicken des Stundenzettels
|
||||
- ✅ Überstunden-Auswertung pro Woche mit detaillierter Aufschlüsselung
|
||||
- ✅ Anzeige aktueller Überstunden und verbleibender Urlaubstage
|
||||
- ✅ Automatische Zeiterfassung via IP-Ping (optional)
|
||||
- ✅ QR-Code für Check-in/Check-out
|
||||
|
||||
### Für Administratoren
|
||||
- ✅ Benutzerverwaltung (Anlegen, Löschen, Bearbeiten)
|
||||
- ✅ Rollenvergabe (Mitarbeiter, Verwaltung, Admin)
|
||||
- ✅ Mehrere Rollen pro Benutzer möglich
|
||||
- ✅ Übersicht aller Benutzer mit Statistiken
|
||||
- ✅ Personalnummern verwalten
|
||||
- ✅ Wochenstunden und Urlaubstage pro Mitarbeiter konfigurieren
|
||||
- ✅ LDAP-Integration für Benutzer-Synchronisation
|
||||
- ✅ LDAP-Konfiguration und manuelle/automatische Synchronisation
|
||||
- ✅ System-Optionen (Wochenend-Prozentsätze)
|
||||
|
||||
### Für Verwaltung
|
||||
- ✅ Postfach mit eingereichten Stundenzetteln
|
||||
- ✅ PDF-Generierung und Download
|
||||
- ✅ Übersichtliche Darstellung aller Einreichungen
|
||||
- ✅ Wochenansicht mit Statistiken pro Mitarbeiter
|
||||
- ✅ Überstunden-Offset (manuelle Korrekturen)
|
||||
- ✅ Admin-Kommentare zu Stundenzetteln
|
||||
- ✅ Versionsverwaltung bei Änderungen
|
||||
- ✅ Übersicht über Überstunden und Urlaubstage aller Mitarbeiter
|
||||
|
||||
## Installation
|
||||
|
||||
### Voraussetzungen
|
||||
- Node.js (Version 14 oder höher)
|
||||
- npm (wird mit Node.js installiert)
|
||||
|
||||
### Schritt 1: Dependencies installieren
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### Schritt 2: Server starten
|
||||
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
|
||||
Der Server läuft nun auf `http://localhost:3333`
|
||||
|
||||
Für Entwicklung mit automatischem Neustart:
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### Docker (optional)
|
||||
|
||||
Das System kann auch mit Docker betrieben werden:
|
||||
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## Standard-Zugangsdaten
|
||||
|
||||
Nach der Installation sind folgende Benutzer verfügbar:
|
||||
|
||||
### Administrator
|
||||
- **Benutzername:** admin
|
||||
- **Passwort:** admin123
|
||||
- **Funktion:** Kann Benutzer anlegen und verwalten, LDAP konfigurieren
|
||||
|
||||
### Verwaltung
|
||||
- **Benutzername:** verwaltung
|
||||
- **Passwort:** verwaltung123
|
||||
- **Funktion:** Kann eingereichte Stundenzettel einsehen, PDFs erstellen und Überstunden korrigieren
|
||||
|
||||
**WICHTIG:** Bitte ändern Sie diese Passwörter nach der ersten Anmeldung!
|
||||
|
||||
## Verwendung
|
||||
|
||||
### Für Mitarbeiter
|
||||
|
||||
1. Melden Sie sich mit Ihren Zugangsdaten an
|
||||
2. Wählen Sie die gewünschte Woche aus (Pfeiltasten)
|
||||
3. Tragen Sie Ihre Arbeitszeiten ein:
|
||||
- **Start:** Arbeitsbeginn
|
||||
- **Ende:** Arbeitsende
|
||||
- **Pause:** Pausenzeit in Minuten
|
||||
- **Tätigkeiten:** Bis zu 5 Tätigkeiten mit Beschreibung, Stunden und Projektnummer
|
||||
- **Notizen:** Optional, z.B. Projekt oder Tätigkeit
|
||||
- **Überstunden:** Optional, wenn Überstunden verbraucht werden sollen
|
||||
- **Urlaub:** Ganzer oder halber Tag Urlaub
|
||||
- **Krank:** Krankheitstag markieren
|
||||
4. Die Einträge werden automatisch gespeichert
|
||||
5. Am Ende der Woche: Klicken Sie auf **"Woche abschicken"**
|
||||
6. Nach dem Abschicken können keine Änderungen mehr vorgenommen werden
|
||||
7. **Überstunden-Auswertung:** Klicken Sie auf "Details anzeigen" im Bereich "Aktuelle Überstunden" für eine wöchentliche Aufschlüsselung
|
||||
|
||||
### Für Administratoren
|
||||
|
||||
1. Melden Sie sich als Admin an
|
||||
2. Sie gelangen automatisch zur Benutzerverwaltung
|
||||
3. **Neuen Benutzer anlegen:**
|
||||
- Füllen Sie das Formular aus
|
||||
- Wählen Sie die passende Rolle (mehrere möglich)
|
||||
- Personalnummer, Wochenstunden und Urlaubstage konfigurieren
|
||||
- Klicken Sie auf "Benutzer anlegen"
|
||||
4. **Benutzer löschen:**
|
||||
- Klicken Sie auf "Löschen" neben dem gewünschten Benutzer
|
||||
- System-Benutzer (Admin, Verwaltung) können nicht gelöscht werden
|
||||
5. **LDAP konfigurieren:**
|
||||
- Navigieren Sie zum LDAP-Bereich
|
||||
- Konfigurieren Sie LDAP-Verbindung und Synchronisation
|
||||
- Führen Sie manuelle Synchronisationen durch oder aktivieren Sie automatische Syncs
|
||||
|
||||
### Für Verwaltung
|
||||
|
||||
1. Melden Sie sich als Verwaltungs-Benutzer an
|
||||
2. Sie sehen alle eingereichten Stundenzettel im Postfach
|
||||
3. **PDF erstellen:**
|
||||
- Klicken Sie auf "PDF herunterladen" neben dem gewünschten Stundenzettel
|
||||
- Die PDF wird automatisch generiert und heruntergeladen
|
||||
4. **Überstunden korrigieren:**
|
||||
- In der Wochenansicht können Sie manuelle Korrekturen (Offset) für jeden Mitarbeiter vornehmen
|
||||
5. **Kommentare hinzufügen:**
|
||||
- Fügen Sie Admin-Kommentare zu Stundenzetteln hinzu
|
||||
6. Die PDF enthält:
|
||||
- Mitarbeitername und Personalnummer
|
||||
- Zeitraum
|
||||
- Alle Tageseinträge mit Start, Ende, Pause, Stunden, Tätigkeiten und Notizen
|
||||
- Überstunden-Verbrauch
|
||||
- Urlaubstage
|
||||
- Gesamtstundensumme
|
||||
|
||||
## Technologie-Stack
|
||||
|
||||
- **Backend:** Node.js + Express
|
||||
- **Datenbank:** SQLite3
|
||||
- **Template Engine:** EJS
|
||||
- **PDF-Generierung:** PDFKit
|
||||
- **Authentifizierung:** bcryptjs + express-session
|
||||
- **LDAP:** ldapjs
|
||||
- **QR-Codes:** qrcode
|
||||
|
||||
## Projektstruktur
|
||||
|
||||
```
|
||||
stundenerfassung/
|
||||
├── routes/ # API-Routen
|
||||
│ ├── admin-routes.js # Admin-Funktionen
|
||||
│ ├── admin-ldap-routes.js # LDAP-Verwaltung
|
||||
│ ├── auth-routes.js # Authentifizierung
|
||||
│ ├── dashboard-routes.js # Dashboard-Routen
|
||||
│ ├── timesheet-routes.js # Stundenerfassung
|
||||
│ ├── user-routes.js # Benutzer-APIs
|
||||
│ └── verwaltung-routes.js # Verwaltungs-Funktionen
|
||||
├── services/ # Services
|
||||
│ ├── feiertage-service.js # Feiertags-API
|
||||
│ ├── ldap-service.js # LDAP-Service
|
||||
│ ├── ldap-scheduler.js # LDAP-Synchronisation
|
||||
│ ├── pdf-service.js # PDF-Generierung
|
||||
│ └── ping-service.js # IP-basierte Zeiterfassung
|
||||
├── views/ # EJS-Templates
|
||||
├── public/ # Statische Dateien
|
||||
│ ├── css/
|
||||
│ ├── js/
|
||||
│ └── images/
|
||||
└── helpers/ # Helper-Funktionen
|
||||
```
|
||||
|
||||
## Datenbankstruktur
|
||||
|
||||
### Tabelle: users
|
||||
- Speichert Benutzerinformationen und Zugangsdaten
|
||||
- Passwörter werden verschlüsselt gespeichert
|
||||
- Unterstützt mehrere Rollen pro Benutzer
|
||||
- Personalnummer, Wochenstunden, Urlaubstage, Überstunden-Offset
|
||||
|
||||
### Tabelle: timesheet_entries
|
||||
- Speichert einzelne Tageseinträge
|
||||
- Automatische Berechnung der Gesamtstunden
|
||||
- Unterstützt mehrere Tätigkeiten pro Tag
|
||||
- Überstunden-Verbrauch, Urlaub, Krankheit
|
||||
|
||||
### Tabelle: weekly_timesheets
|
||||
- Speichert eingereichte Wochenstundenzettel
|
||||
- Verknüpfung mit Benutzer und Status
|
||||
- Versionsverwaltung und Admin-Kommentare
|
||||
|
||||
### Tabelle: system_options
|
||||
- Systemweite Einstellungen
|
||||
- Wochenend-Prozentsätze (Samstag/Sonntag)
|
||||
|
||||
### Tabelle: public_holidays
|
||||
- Öffentliche Feiertage (Baden-Württemberg)
|
||||
- Automatische Aktualisierung
|
||||
|
||||
### Tabelle: ldap_config
|
||||
- LDAP-Konfiguration
|
||||
- Synchronisationseinstellungen
|
||||
|
||||
### Tabelle: ping_status
|
||||
- IP-basierte Zeiterfassung
|
||||
- Ping-Status pro Benutzer und Tag
|
||||
|
||||
## Features im Detail
|
||||
|
||||
### Überstunden-Verwaltung
|
||||
- Automatische Berechnung basierend auf Sollstunden
|
||||
- Berücksichtigung von Wochenend-Prozentsätzen
|
||||
- Feiertagsstunden werden automatisch hinzugefügt
|
||||
- Urlaubsstunden werden in die Berechnung einbezogen
|
||||
- Manuelle Korrekturen durch Verwaltung möglich
|
||||
- Detaillierte wöchentliche Auswertung für Mitarbeiter
|
||||
|
||||
### Urlaubsverwaltung
|
||||
- Ganzer oder halber Tag Urlaub
|
||||
- Verbleibende Urlaubstage werden angezeigt
|
||||
- Verplante Urlaubstage werden erfasst
|
||||
- Urlaubstage werden in Überstunden-Berechnung berücksichtigt
|
||||
|
||||
### Wochenend-Prozentsätze
|
||||
- Konfigurierbare Prozentsätze für Samstag und Sonntag
|
||||
- Werden automatisch auf gearbeitete Stunden angewendet
|
||||
- Standard: 100% (keine Zuschläge)
|
||||
|
||||
### Feiertage
|
||||
- Automatische Erkennung öffentlicher Feiertage (Baden-Württemberg)
|
||||
- Feiertagsstunden werden automatisch berechnet
|
||||
- Arbeit an Feiertagen zählt als Überstunden
|
||||
|
||||
### LDAP-Integration
|
||||
- Automatische Benutzer-Synchronisation
|
||||
- Konfigurierbare Synchronisationsintervalle
|
||||
- Manuelle Synchronisation möglich
|
||||
- LDAP-Authentifizierung als Alternative zu lokalen Passwörtern
|
||||
|
||||
## Sicherheit
|
||||
|
||||
- ✅ Passwörter werden mit bcrypt verschlüsselt
|
||||
- ✅ Session-basierte Authentifizierung
|
||||
- ✅ Rollenbasierte Zugriffskontrolle
|
||||
- ✅ CSRF-Schutz durch Sessions
|
||||
- ✅ LDAP-Integration für zentrale Authentifizierung
|
||||
- ✅ SQL-Injection-Schutz durch parametrisierte Queries
|
||||
|
||||
## Anpassungen
|
||||
|
||||
### Port ändern
|
||||
Bearbeiten Sie in `server.js` die Zeile:
|
||||
```javascript
|
||||
const PORT = 3333; // Ändern Sie hier den Port
|
||||
```
|
||||
|
||||
### Datenbank-Speicherort
|
||||
Die Datenbank wird standardmäßig als `stundenerfassung.db` im Projektverzeichnis gespeichert.
|
||||
Über die Umgebungsvariable `DB_PATH` kann ein anderer Pfad angegeben werden.
|
||||
|
||||
### Wochenend-Prozentsätze
|
||||
Im Admin-Bereich können die Prozentsätze für Samstag und Sonntag konfiguriert werden.
|
||||
Standard: 100% (keine Zuschläge).
|
||||
|
||||
## Lizenz
|
||||
|
||||
Proprietär - Für interne Firmennutzung
|
||||
|
||||
## Support
|
||||
|
||||
Bei Fragen oder Problemen wenden Sie sich bitte an Ihre IT-Abteilung.
|
||||
Reference in New Issue
Block a user