Code von github.com/Kenearos/Dienstplan
Implements complete test coverage for the duty schedule calculator: Test Coverage: - Holiday Provider: NRW holiday detection (2025-2030) - Calculator - Day Classification: Qualifying days (Fr-So, holidays, day before) - Calculator - Bonus Calculation: All scenarios (threshold, mixed days, half shifts) - Storage: CRUD operations, export/import, data persistence - Edge Cases: Rounding errors, performance, leap years Test Statistics: - Total Tests: 30+ - Categories: 5 (HolidayProvider, Calculator×2, Storage, Edge Cases) - Assertions: assertEqual, assertAlmostEqual, assertTrue, assertFalse Features: - Visual test runner with color-coded results - Detailed error messages with expected vs. actual values - Grouped test results by category - Performance tracking - Summary statistics (total/passed/failed) Test Scenarios Include: - Threshold: <2.0 days (0€), =2.0 days (450€), >2.0 days (900€) - Mixed duties: Normal + qualifying days - Half shifts: Correct calculation (0.5 × rates) - Holidays: Including day before holiday - Storage: Multiple employees, data persistence - Edge cases: Rounding, 30+ duties, leap year Files: - webapp/test.html - Test runner UI - webapp/test-suite.js - Test implementation (30+ tests) - webapp/TEST_GUIDE.md - Comprehensive testing documentation Usage: 1. Open http://localhost:8000/test.html 2. Click "Alle Tests ausführen" 3. View results with pass/fail indicators All tests passing ✅ |
||
|---|---|---|
| .github | ||
| android-app | ||
| output | ||
| src | ||
| webapp | ||
| .gitignore | ||
| CHANGELOG.md | ||
| claude.md | ||
| README.md | ||
| requirements.txt | ||
| SPECIFICATION.md | ||
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 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 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
- Virtuelle Umgebung erstellen:
python -m venv .venv
- Umgebung aktivieren:
.\.venv\Scripts\Activate.ps1
- Abhängigkeiten installieren:
pip install -r requirements.txt
Verwendung
Monat erstellen
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
- Öffne die generierte Datei
- Gehe zum Blatt "Plan"
- Trage in Spalte B die Mitarbeiter-Namen ein
- Trage in Spalte C den Anteil ein (1 = voll, 0.5 = halb)
- Gehe zum Blatt "Auswertung" und trage in Spalte A alle Mitarbeiter ein
Fertig! Alle Berechnungen erfolgen automatisch.
Projektstruktur
.
├── 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
├── claude.md # Umfassende Projekt-Dokumentation
└── 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