# LeanderShiftPlanner ## Einleitung LeanderShiftPlanner ist ein Tool zur automatisierten Erstellung von Schichtplänen. Es ermöglicht das Anlegen von Personen und Schichten, deren Verknüpfung sowie die Berechnung und Filterung von Schichtplänen. Zusätzlich können Stundenzettel automatisch generiert werden – entweder vollständig zufällig oder auf Basis eines Google Kalenders. #### Alle Stundenangaben müssen im Wochenstunden-Format erfolgen! --- # Hauptfunktionen ## 1. Personen und Schichten verwalten **Personen hinzufügen:** Klicke auf den Tab „Persons" und nutze die Schaltfläche „Add new person", um eine neue Person anzulegen. Dabei gibst du Vorname, Nachname, die wöchentlichen Arbeitsstunden sowie optional eine Stundenzettel-Quelle an. **Personen bearbeiten/löschen:** Über die Buttons „Edit person" und „Delete person" kannst du bestehende Einträge ändern oder entfernen. **Schichten hinzufügen:** Wechsle in den Tab „Shifts" und klicke auf „Add new shift", um eine neue Schicht zu erstellen. Pro Schicht legst du den Wochentag, die Uhrzeit (Start und Ende), die Dauer in Stunden, die Position am Tag (1., 2. oder 3. Schicht) sowie die minimale und maximale Personenanzahl fest. **Schichten bearbeiten/löschen:** Ändere oder entferne Schichten mit „Edit shift" und „Delete shift". --- ## 2. Personen und Schichten zuweisen **Person einer Schicht zuweisen:** Wähle eine Schicht aus und klicke auf „Select persons for shift". **Schicht einer Person zuweisen:** Wähle eine Person aus und nutze „Select shifts for person". *Die Verlinkung von Personen und Schichten wird automatisch in beide Richtungen durchgeführt. Eine Schicht, welche per „Select shifts for person" einer Person hinzugefügt wurde, erhält also automatisch auch einen Link zu der Person – ohne dass dies per „Select persons for shift" noch einmal extra erfolgen muss!* --- ## 3. Schichtpläne berechnen und filtern **Schichtpläne generieren:** Drücke „Start calculation", um eine automatische Planung der Schichten durchzuführen. Das Programm berechnet dabei **alle möglichen Kombinationen**, bei denen jede Person exakt ihre eingetragenen Wochenstunden arbeitet – nicht mehr und nicht weniger. Jede gültige Kombination wird als eigener Schichtplan gespeichert. **Schichtpläne filtern:** Wechsle in den Tab „ShiftPlans" und nutze „Filter shiftplans", um die Ergebnisse nach bestimmten Kriterien einzugrenzen. **Filter zurücksetzen:** Mit „Reset all filters" werden alle angewendeten Filter entfernt und alle berechneten Pläne wieder angezeigt. *Die Berechnung der Schichtpläne kann je nach Anzahl der Personen und Schichten etwas Zeit in Anspruch nehmen, da alle möglichen Kombinationen parallel berechnet werden. Hier also einfach etwas Geduld mitbringen.* --- ## 4. Schichtpläne anzeigen und speichern **Schichtplan öffnen:** Wähle einen erstellten Plan aus und nutze „Open selected ShiftPlan", um ihn als PNG-Bild oder Text einzusehen. **Alle Schichtpläne speichern:** Mit „Save all ShiftPlans" werden alle aktuell gefilterten Pläne als PNG-Bilder im Verzeichnis `Data/Output/ShiftPlans` gespeichert. --- ## 5. Stundenzettel generieren LeanderShiftPlanner bietet drei Möglichkeiten, Stundenzettel zu erstellen: **Automatisch per Google Kalender:** Über „Generate Timesheets" können Stundenzettel direkt aus einem Google Kalender ausgelesen werden. Dazu muss eine gültige Google API-Konfiguration hinterlegt sein (siehe `Resources/templates/googleapi.txt`). Das Programm sucht im Kalender nach Einträgen, die den Namen der jeweiligen Person enthalten, und erstellt daraus einen vollständigen Stundenzettel für jeden Monat. **Google Kalender mit Zufalls-Auffüllung:** Dieselbe Funktion steht auch mit der Option „Randomize" zur Verfügung. Hierbei werden die aus dem Kalender gelesenen Einträge automatisch angepasst: Zu viele Stunden werden gekürzt, zu wenige Stunden werden mit zufällig generierten Einträgen aufgefüllt – sodass jede Person am Ende exakt ihre Wochenstunden (×4 Wochen pro Monat) erreicht. **Vollständig zufällig:** Über „Generate Random Timesheets" werden Stundenzettel komplett ohne Kalenderanbindung generiert. Das Programm verteilt die Arbeitsstunden anhand eines festen Musters (Tage mit 6, 4, 2 oder 1 Stunde) gleichmäßig über die Werktage des Monats. Feiertage (Hessen) und Wochenenden werden dabei automatisch ausgespart. Alle generierten Stundenzettel werden als Excel-Dateien (`.xlsx`) im Verzeichnis `Data/Output/Timesheets` abgelegt. --- # Hinweise - Alle Stunden müssen als **Wochenstunden** angegeben werden, nicht als Tages- oder Monatsstunden. - Pro Schicht werden bis zu **3 Personen gleichzeitig** unterstützt. - Das Programm ist für eine **5-Tage-Woche** ausgelegt. - Für die Google Kalender-Integration müssen Client ID und Client Secret in der Datei `Resources/templates/googleapi.txt` hinterlegt sein. - Feiertage werden automatisch über die öffentliche API [feiertage-api.de](https://feiertage-api.de) für das Bundesland **Hessen** abgerufen.