Skip to content

[feature] Arbeitszeiten #45

Open

Description

@pittiplatschpitti-a11y

Feature Request: Soll-/Ist-Stundenvergleich nach Arbeitsvertrag in der Arbeitszeiten-Übersicht

Is your feature request related to a problem? Please describe.

In der aktuellen Arbeitszeiten-Auflistung werden lediglich die erfassten Ist-Zeiten der Mitarbeiter angezeigt. Um festzustellen, ob ein Mitarbeiter im ausgewählten Zeitraum Überstunden aufgebaut hat oder im Minusstunden-Bereich liegt, muss die vertraglich vereinbarte Sollarbeitszeit bisher manuell nachgeschlagen und gegengerechnet werden. Das erschwert die Monats- und Periodenprüfung erheblich.

Describe the solution you'd like

Die Tabelle/Auflistung unter dem Menüpunkt „Arbeitszeiten“ soll direkt mit den Vertragsdaten verknüpft werden und einen automatischen Soll-/Ist-Vergleich für den gewählten Filterzeitraum darstellen:

1. Einbindung der Vertragsstunden (Soll)

  • Automatische Berechnung der vertraglichen Sollstunden für den gewählten Betrachtungszeitraum (z. B. Woche, Monat oder benutzerdefinierte Zeitspanne) basierend auf dem hinterlegten Arbeitsvertrag bzw. Arbeitszeitmodell des Mitarbeiters.
  • Berücksichtigung von Feiertagen und genehmigten Abwesenheiten (z. B. Urlaub, Krankheit) bei der Soll-Berechnung.

2. Visuelle Gegenüberstellung (Soll vs. Ist)

  • Direkte Gegenüberstellung der tatsächlich erfassten Netto-Arbeitszeit (Ist) und der vertraglich geforderten Zeit (Soll) pro Mitarbeiter.
  • Eine separate Differenzspalte (z. B. +/- Differenz oder Saldo), die auf einen Blick zeigt, ob zu viel (+Überstunden) oder zu wenig (-Minusstunden) gearbeitet wurde.

3. Visuelles Feedback / Indikatoren

  • Farbliche Hervorhebung der Differenz zur schnellen Erfassung (z. B. grün bei positivem Saldo/im Rahmen, rot/orange bei Minusstunden bzw. deutlicher Überstundenüberschreitung).

Feature Request: Target vs. Actual Hours Comparison based on Employment Contract in "Arbeitszeiten" (Working Hours)

Is your feature request related to a problem? Please describe.

The current working hours overview only displays the logged actual hours for each employee. To determine whether an employee has accrued overtime or has a deficit in a given period, managers/HR have to manually look up contractual target hours and calculate the balance by hand. This makes monthly and periodic reviews inefficient.

Describe the solution you'd like

The table/list under the "Arbeitszeiten" (Working Hours) menu should directly integrate contractual hours to provide an automated Target vs. Actual comparison for the selected timeframe:

1. Integration of Contractual Target Hours

  • Automatically calculate target hours for the selected timeframe (e.g., current week, month, or custom date range) based on the employee's assigned contract / work schedule model.
  • Factor in public holidays and approved absences (vacation, sick leave) when calculating expected target hours.

2. Target vs. Actual Display

  • Show the logged actual hours side-by-side with the expected contractual target hours per employee.
  • Add a dedicated variance column (e.g., +/- Balance / Difference) clearly indicating overtime (+) or deficit (-).

3. Visual Indicators

  • Provide clear visual cues/color coding for the balance (e.g., green for positive/balanced, red/amber for deficits or excessive overtime thresholds) for quick visual scanning.

Activity

  1. patrickschiller commented on Nov 7, 2026

    @patrickschiller
    Owner

    Umgesetzt in PR #49: #49

    Head 3a2361d0d2d25f23ce030ce751cf67873aedbf8f · Branch feat/45-contract-period-comparison.

    Kumulativ / abhängig: #42 (PR #46) → #41 (PR #47) → #43 (PR #48) → #45 (PR #49). PR-Ziel ist main für alle bestehenden CI-Gates. Keine der PRs wurde gemergt; kein Release, Tag, Versionsbump oder Deployment.

    Ergebnis

    • Arbeitszeiten zeigt vertragliches Soll, Netto-Ist und signierte Periodendifferenz für denselben Wochen-/Monats-/freien Zeitraum, auch bei 0 Buchungen. DE/EN, lokalisierte Stunden, zugängliche Text-/Farbindikatoren und erklärte +10-h-Prüfschwelle; kein fortgeschriebenes Zeitkonto und keine gesetzliche Grenze.
    • Neue additive, HR-bestätigte datierte Vertragssnapshots mit eigenständiger Arbeitsmaske/Feiertags-/Beschäftigungshistorie und Audit. Pflege im Mitarbeitereditor, ausdrücklich bestätigte Fakten, revisionsgeprüfte Ablösung/Überlappungsschutz. Spätere Profil-/Planänderungen überschreiben historische Werte nicht.
    • Kein erfundener Altbestand: fehlende Bestätigung liefert Soll/Differenz null mit konkreten unbekannten Tagen. Der Demo-Seed etabliert nur explizit synthetische Fakten, nicht rückwirkende Produktionshistorie.
    • Feiertage, genehmigter Urlaub/Sonderurlaub und erfasste Krankheit/Fortbildung reduzieren ausschließlich Soll; Halbtage und überlappende Abwesenheiten erzeugen keine doppelte Gutschrift. Ist: geschlossene Pending/Approved-Buchungen nach gespeicherten Pausen, vorläufig gekennzeichnet, keine offenen/abgelehnten/entwerteten Zeiten; Mitternacht/Zeitraum-Clipping, Capture-Gruppen und DST/Sekunden abgesichert. Darstellung/CSV in erklärter Berichtszeitzone.
    • HR organisationsweit, Manager nur selbst/unmittelbares Team; fremde Filter-IDs und veraltete Rollen/Sessions/Team→Solo-Zustände gesperrt. Solo bleibt unverändert, PDF HR-only; [feature] Chef-Cockpit #44 ist nicht Teil dieses Pakets.

    Belegte automatisierte Gates

    Gate Ergebnis
    Vollständige API-E2E 415/415, 41 Suites (49 neue Vertrags-/Vergleichsfälle inkl. Race/Stale/Audit-Rollback/Scope/DST)
    Web / Shared 267/267 (37 Dateien) / 88/88 (7 Dateien)
    Operator-/DB-Zielsicherheit 27/27
    API/Web/Shared/API-E2E Typechecks alle grün
    API/Web/Shared Produktions-Builds alle grün, einschließlich PWA
    Lint 0 Fehler, nur 13 bestehende Warnungen
    pnpm verify:api, Diff-Checks grün
    Reales befülltes DB-Upgrade #43→#45 grün, keine erfundenen Altverträge/HR-Audits, vorhandene Daten unverändert
    Wiederholter synthetischer Seed / Nachtest-SQL grün, 9 unveränderte Snapshots/Audits; Fixture ausführbar

    Alle fünf GitHub-Checks auf 3a2361d0d2d25f23ce030ce751cf67873aedbf8f erfolgreich:

    Check Ergebnis
    terminal-pin-browser grün
    build-test-lint grün
    dco-check grün
    database-upgrade grün
    api-e2e grün

    Deutsche Nachtestanleitung: docs/ISSUE_FIXES_MANUAL_TEST.de.md – separater lokaler Stack/Port, HR-Vertragspflege, unbekannte Historie, nachrechenbare Soll/Ist-Zahlen, Rollen-/Negativfälle und tatsächliche Prüfevidenz. Manueller Docker-/Browserdurchlauf nicht als durchgeführt behauptet.

    Paket #45 ist zur unabhängigen Abnahme bereit. #44 wurde nicht begonnen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions