Arbeitszeitmodelle
Zweck
Arbeitszeitmodelle (WorkTimeModel) sind Vorlagen für regelmaessige Arbeitswochen — Vollzeit (z. B. 40 h), Teilzeit (20 h), 4-Tage-Woche (32 h). Pro Modell pflegen Sie auf dem Tab Tage den Tagesplan (Mo–So) und ggf. eine Kernzeit. Mitarbeiter-Verträge (EmployeeContract) verweisen auf ein Arbeitszeitmodell — daraus berechnet das System Soll-Stunden, Pausen und Ueberstunden.
Voraussetzungen
Berechtigungen (CASL)
| Action | Subject | Wirkung | Keycloak-Rolle |
|---|---|---|---|
view | FE_WorkTimeModel, WorkTimeModel | Liste/Details aufrufbar | — |
create/update | WorkTimeModel | Pflegen | APP_SPEAMCORE_CREATE/UPDATE_WORK_TIME_MODEL |
view | WorkTimeModelDay | Tab Tage sichtbar | APP_SPEAMCORE_VIEW_WORK_TIME_MODEL_DAY |
view | Country | Land-Auswahl + LaborLawInfoBox | APP_SPEAMCORE_VIEW_COUNTRY |
Hinweis: Weder Listen- noch Detailseite haben einen Delete-Button — bestätigt im Live-Walkthrough. Arbeitszeitmodelle werden nur via Backend-API gelöscht. Hintergrund: Modelle sind oft an aktive Mitarbeiter-Verträge gebunden, ein versehentliches Löschen wuerde die Sollzeitberechnung der betroffenen Mitarbeiter brechen.
Schritt-für-Schritt-Anleitung
Modell anlegen
- Arbeitszeitmodelle (
/work-time-models) → + Neu. - Name vergeben (z. B. „Vollzeit 40h").
- Optional Beschreibung und Land setzen — die
LaborLawInfoBoxzeigt dann die landesspezifischen Arbeitszeitgesetz-Eckpunkte (z. B. für DE: max. 8 h pro Tag laut ArbZG). autoDeductBreaksaktivieren, wenn Pausen automatisch von der Sollzeit abgezogen werden sollen.- Tab Tage öffnen → pro Wochentag Sollzeit, Kernzeit Start/Ende, Arbeitstag-Flag.


Toolbar (Detail-Seite)
Schlanke Toolbar oben rechts:
| Icon | Aktion (aria-label) | CASL | Wirkung |
|---|---|---|---|
| ← | Zurückgehen | — | Zurück zur Liste. |
| 🏠 | Zur Startseite gehen | — | Springt auf das Dashboard / /. |
| ⏮/◀/▶/⏭ | Pagination | — | Navigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung. |
Globale Floating-Drawer (links)
Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:
- KAL. (Mini-Kalender)
- ZEIT (Persoenliche Wochen-Arbeitszeit)
- ARBEIT (Eigene bevorstehende Aufträge)
UI-Elemente
Tab: „Allgemein"
Form mit Stammfeldern und LaborLawInfoBox.
Tab: „Tage"
Tagesplan-Editor — pro Wochentag: Arbeitstag-Checkbox, Sollzeit HH:MM, Kernzeit Start, Kernzeit Ende.
Komponente: LaborLawInfoBox
Context-Komponente, die abhaengig von countryId die Arbeitszeitgesetz-Eckpunkte anzeigt (z. B. für DE: 8 h Maximum pro Tag, 48 h pro Woche).
Switch: „autoDeductBreaks"
Wenn aktiv, zieht die Stundenkonto-Berechnung automatisch Pausen von der Sollzeit ab.
Felder und Eingaben
| Feldname | Pflicht | Datentyp | Beschreibung | Wirkung beim Ausfuellen | Voraussetzung |
|---|---|---|---|---|---|
name | ja | String | Modell-Bezeichnung. | Erscheint in Mitarbeiter-Verträgen und Reports. | — |
description | nein | TEXT | Optionale Erlaeuterung. | Nur informativ. | — |
countryId | nein | UUID (Searchable Select) | Land — für Arbeitszeitgesetz-Kontext. | Aktiviert die LaborLawInfoBox mit landesspezifischen Hinweisen. | view:Country. |
autoDeductBreaks | nein | Boolean (Switch) | Pausen automatisch abziehen. | Wenn aktiv, werden Pausen-Minuten serverseitig von der Sollzeit subtrahiert. | — |
Sub-Felder pro WorkTimeModelDay
| Feldname | Datentyp | Wirkung |
|---|---|---|
weekday | Mo–So | Wochentag-Identifier. |
isWorkday | Boolean | Ist dieser Tag Arbeitstag? |
targetHours | HH:MM | Sollzeit. |
coreTimeStart / coreTimeEnd | HH:MM | Kernzeit (Anwesenheitspflicht). |
Workflows und Zustaende
Kein Status-Feld. Änderungen werden automatisch gespeichert.
Wiederverwendbare Konzepte
Verknuepfungen zu anderen Modulen
- Mitarbeiter-Verträge —
EmployeeContract.workTimeModelId. - Aufträge —
branchId/employeeOfficeIdwerden aus dem aktiven Vertrag abgeleitet (siehe Auftraege). - Zeiterfassung —
EmployeeTimeTrackingnutzt das Modell zur Soll-/Ist-Berechnung. - Setup-Wizard Schritt 9 — Standard-Set wird dort angelegt (Vollzeit 40h, Teilzeit 20h, 4-Tage-Woche 32h).
Häufige Fehler und Lösungen
| Fehler | Lösung |
|---|---|
LaborLawInfoBox zeigt nichts | countryId nicht gesetzt — Land wählen. |
| Stunden werden falsch berechnet | autoDeductBreaks falsch konfiguriert; Pausen prüfen. |
| Modell nicht in Vertrag wählbar | WorkTimeModel:view fehlt oder Modell ist soft-deleted. |
API/Schnittstellen
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/work-time-models | Liste | view WorkTimeModel |
GET | /api/work-time-models/:id | Detail | view WorkTimeModel |
POST | /api/work-time-models | Anlegen | create WorkTimeModel |
PUT | /api/work-time-models/:id | Ändern | update WorkTimeModel |
GET | /api/work-time-models/:id/days | Tage-Sub-Liste | view WorkTimeModelDay |
Versionshinweise
- 2026-04-29: Initiale Veroeffentlichung mit FE-Tiefen-Standard.