diff --git a/README.md b/README.md index a3b5dbb..3ef2d15 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,75 @@ # 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. +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 zu erstellen. +**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. +**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. +**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“. +**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“. +**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“. +**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!_ +*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 basierend auf den hinterlegten Personen und Schichtzeiten durchzuführen. +**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. +**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. +**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 Parametern etwas Zeit in Anspruch nehmen. Hier also einfach etwas Geduld mitbringen._ +*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 oder Text einzusehen. +**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 gefilterten Pläne als PNG im Verzeichnis `Data/Output/ShiftPlans` gespeichert. +**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 -Automatisch Stundenzettel erstellen: Über „Generate Timesheets“ können alle Stundenzettel automatisch generiert und im Ordner `Data/Output/Timesheets` abgelegt werden. \ No newline at end of file +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. \ No newline at end of file