Implements a complete web application for calculating bonus payments for weekend and holiday duty shifts according to NRW rules. Features: - Employee management (add/remove multiple employees) - Monthly duty scheduling (full and half shifts) - Automatic NRW holiday detection (2025-2030) - Bonus calculation with configurable rules - LocalStorage for data persistence - Export/Import functionality (JSON) - Responsive design for desktop and mobile - No external dependencies Calculation Rules: - Qualifying days: Friday, Saturday, Sunday, public holidays, day before holiday - Minimum threshold: 2.0 qualifying days required - Deduction: 1.0 qualifying day after threshold reached - Rates: Normal days 250€, qualifying days 450€ - Half shifts: 50% of respective rate - No bonus payment if threshold not reached Technical Stack: - Vanilla JavaScript (no frameworks) - HTML5 & CSS3 - LocalStorage API - Modern, gradient-based UI design Files: - webapp/index.html - Main HTML interface - webapp/styles.css - Responsive styling - webapp/app.js - Main application logic and UI handling - webapp/calculator.js - Bonus calculation engine - webapp/holidays.js - NRW public holidays provider - webapp/storage.js - LocalStorage data management - webapp/README.md - Comprehensive documentation Updated main README.md to include web app in available versions.
112 lines
3.5 KiB
Markdown
112 lines
3.5 KiB
Markdown
# Dienstplan Generator (NRW - Variante 2)
|
||
|
||
Projekt zum automatischen Erstellen von Dienstplänen mit Vergütungsberechnung nach NRW-Regeln (Variante 2 "streng").
|
||
|
||
## Verfügbare Versionen
|
||
|
||
### Web-App (Browser) 🆕
|
||
**Empfohlen für die meisten Benutzer!**
|
||
|
||
Moderne Web-Anwendung zur Bonusberechnung für Wochenend- und Feiertagsdienste.
|
||
- ✅ Läuft direkt im Browser (keine Installation)
|
||
- ✅ Mitarbeiterverwaltung
|
||
- ✅ Monatliche Dienstplanung
|
||
- ✅ Automatische Bonusberechnung
|
||
- ✅ Export/Import-Funktion
|
||
|
||
Siehe [webapp/README.md](webapp/README.md) für Details.
|
||
|
||
### Python/Excel Version (Desktop)
|
||
Python-basierter Generator für Excel-Dienstpläne.
|
||
|
||
### Android App (Mobile)
|
||
Native Android-App für mobiles Dienstplan-Management. Siehe [android-app/README.md](android-app/README.md) für Details.
|
||
|
||
## Features (Python/Excel Version)
|
||
|
||
- ✅ Automatische Erkennung von Wochenenden (Fr–So), Feiertagen und Vortagen
|
||
- ✅ Vergütungslogik: WT 250€, WE 450€ (nur ab Schwelle ≥ 2,0 WE-Einheiten)
|
||
- ✅ Abzug 1,0 WE-Einheit (Freitag-Priorität) nach Erreichen der Schwelle
|
||
- ✅ Vorbefüllte Monatsvorlagen mit allen Datumswerten
|
||
- ✅ Excel-kompatibel (ohne Office 365 Funktionen)
|
||
|
||
## Installation
|
||
|
||
1. Virtuelle Umgebung erstellen:
|
||
|
||
```powershell
|
||
python -m venv .venv
|
||
```
|
||
|
||
2. Umgebung aktivieren:
|
||
|
||
```powershell
|
||
.\.venv\Scripts\Activate.ps1
|
||
```
|
||
|
||
3. Abhängigkeiten installieren:
|
||
|
||
```powershell
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
## Verwendung
|
||
|
||
### Monat erstellen
|
||
|
||
```powershell
|
||
python src/fill_plan_dates.py 2025 11 # November 2025
|
||
python src/fill_plan_dates.py 2025 12 # Dezember 2025
|
||
```
|
||
|
||
Die Datei landet in `output/Dienstplan_YYYY_MM_NRW.xlsx`.
|
||
|
||
### Daten eintragen
|
||
|
||
1. Öffne die generierte Datei
|
||
2. Gehe zum Blatt "Plan"
|
||
3. Trage in Spalte B die Mitarbeiter-Namen ein
|
||
4. Trage in Spalte C den Anteil ein (1 = voll, 0.5 = halb)
|
||
5. Gehe zum Blatt "Auswertung" und trage in Spalte A alle Mitarbeiter ein
|
||
|
||
**Fertig!** Alle Berechnungen erfolgen automatisch.
|
||
|
||
## Projektstruktur
|
||
|
||
```text
|
||
.
|
||
├── webapp/ # Web-App (Browser) 🆕
|
||
│ ├── index.html # Haupt-HTML-Datei
|
||
│ ├── styles.css # Styling
|
||
│ ├── app.js # App-Logik & UI
|
||
│ ├── calculator.js # Bonusberechnung
|
||
│ ├── holidays.js # NRW-Feiertagsdaten
|
||
│ ├── storage.js # LocalStorage-Verwaltung
|
||
│ └── README.md # Web-App Dokumentation
|
||
├── src/ # Python source code
|
||
│ ├── build_template.py # Erstellt die Basis-Vorlage
|
||
│ ├── fill_plan_dates.py # Füllt Monate mit Datumszeilen
|
||
│ └── read_excel.py # Liest xlsx-Dateien aus
|
||
├── android-app/ # Android mobile app
|
||
│ ├── app/ # Android app source code
|
||
│ ├── build.gradle.kts # Build configuration
|
||
│ └── README.md # Android app documentation
|
||
├── output/ # Generierte Monatspläne
|
||
├── templates/ # Basis-Vorlage
|
||
├── requirements.txt # Python-Abhängigkeiten (openpyxl)
|
||
├── SPECIFICATION.md # Vollständige Regeln & Formeln
|
||
└── README.md # Diese Datei
|
||
```
|
||
|
||
## Regeln (Variante 2 - streng)
|
||
|
||
- **WE-Tag**: Fr/Sa/So + Feiertag + Vortag Feiertag
|
||
- **WT-Tag**: Alle anderen Tage (250 € pro Einheit)
|
||
- **WE-Vergütung**: Nur wenn Monatssumme ≥ 2,0 WE-Einheiten → 450 €/Einheit, dann Abzug 1,0 (zuerst von Freitag)
|
||
- **Unter Schwelle**: WE-Dienste = 0 € (nicht als WT vergütet)
|
||
|
||
Details siehe `SPECIFICATION.md`.
|
||
|
||
## Lizenz
|
||
|
||
MIT
|