Repository navigation
feat: vollständiges Manager-Cockpit mit auditierten Teamaktionen (#44) - #50
Open
patrickschiller wants to merge 10 commits into
Open
patrickschiller wants to merge 10 commits into
patrickschiller wants to merge 10 commits into
Conversation
Reopen returned drafts with their values and revision reason. Add owner-only versioned editing/resubmission, shared validation, balance/overlap self-exclusion, transactional concurrency guards, employee names, synchronized API contracts and regression/manual acceptance coverage. Co-authored-by: patrickschiller <39913537+patrickschiller@users.noreply.github.com> Signed-off-by: Patrick Schiller <39913537+patrickschiller@users.noreply.github.com>
Keep persisted timestamps unchanged until their time field is edited. Resolve wall-clock validation and payloads to identical instants, require explicit ambiguous-time choices, reject clock-change gaps, and cover seconds, both fold occurrences and reason-only save/resubmit cycles. Co-authored-by: patrickschiller <39913537+patrickschiller@users.noreply.github.com> Signed-off-by: Patrick Schiller <39913537+patrickschiller@users.noreply.github.com>
Keep the English DST selection regression independent of jsdom persisted locale on Node 20. Verify all 208 web tests with Node 20.20.2 and document the CI follow-up. Co-authored-by: patrickschiller <39913537+patrickschiller@users.noreply.github.com> Signed-off-by: Patrick Schiller <39913537+patrickschiller@users.noreply.github.com>
Add scoped, versioned TimeEntry review with distinct current-manager and HR stages, durable decision audit, legacy pending support and conservative edit invalidation. Surface employee guidance, reviewer actions and history in German/English, synchronize API contracts, and verify additive database upgrades and security/concurrency regressions. Based on accepted #42; no release or merge. Co-authored-by: patrickschiller <39913537+patrickschiller@users.noreply.github.com> Signed-off-by: Patrick Schiller <39913537+patrickschiller@users.noreply.github.com>
Bind correction requests to an owned eligible entry ID and original revision with immutable server snapshots. Revalidate targets, overlaps and required manager/HR stages, then update the same entry and linked audit atomically at final approval. Retain draft precision, metadata and break policies; add target selection/diffs, upgrade safety and focused rollback/concurrency regressions. Cumulative on accepted #42 and #41; no release or merge. Co-authored-by: patrickschiller <39913537+patrickschiller@users.noreply.github.com> Signed-off-by: Patrick Schiller <39913537+patrickschiller@users.noreply.github.com>
Distinguish forbidden foreign targets from ignored body employee identities; eligible own targets remain valid under the authenticated identity. Co-authored-by: patrickschiller <39913537+patrickschiller@users.noreply.github.com> Signed-off-by: Patrick Schiller <39913537+patrickschiller@users.noreply.github.com>
…#45) Add HR-confirmed immutable contract snapshots, scoped period calculations, accessible DE/EN reports and complete regression/upgrade evidence. Co-authored-by: patrickschiller <39913537+patrickschiller@users.noreply.github.com> Signed-off-by: Patrick Schiller <39913537+patrickschiller@users.noreply.github.com>
Co-authored-by: patrickschiller <39913537+patrickschiller@users.noreply.github.com> Signed-off-by: Patrick Schiller <39913537+patrickschiller@users.noreply.github.com>
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Co-authored-by: patrickschiller <39913537+patrickschiller@users.noreply.github.com> Signed-off-by: Patrick Schiller <39913537+patrickschiller@users.noreply.github.com>
Co-authored-by: patrickschiller <39913537+patrickschiller@users.noreply.github.com> Signed-off-by: Patrick Schiller <39913537+patrickschiller@users.noreply.github.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Umfang und Abhängigkeiten
Closes #44.
Vollständiges Chef-/Manager-Cockpit, kein MVP. Dieser PR ist der letzte
kumulative Branch des autorisierten Pakets #42 → #41 → #43 → #45 → #44.
Er hängt zwingend von #46 → #47 → #48 → #49 in dieser Reihenfolge ab.
Basis ist der unabhängig akzeptierte #45-Head
3a2361d0d2d25f23ce030ce751cf67873aedbf8f. PR-Ziel bleibt main, weil diebestehenden vollständigen CI-Gates nur dort für Pull Requests laufen.
Nicht vor den Vorgängern isoliert mergen. Kein Merge/Auto-Merge, Release,
Tag, Versionsbump, Deployment oder Release-Workflow wurde ausgeführt.
Finaler PR-/Dokumentations-Head:
efaa18eaf55a018edc4a18f4f6df1b91511e8d59.Der vollständige Produktionscode wurde unabhängig auf
1972c52db027b38bcfba3bb9b29a41e5f6e61433akzeptiert. Der anschließende Doku-Commit ändert ausschließlich
docs/ISSUE_FIXES_MANUAL_TEST.de.md(+189/−76), keinen Code, API-Vertragoder Konfiguration. Die neuen GitHub-Gates werden auf dem neuen Head abgewartet.
main9cfbc989cce97bde362821d1e2922951b2abb498:104 Dateien, +31.337 / −3.077.
Modulregistrierung geänderte Reihenfolge; Spec und Client wurden reproduzierbar
gemeinsam generiert, keine manuell auseinanderlaufenden Verträge.
Implementierung
Zentrales Cockpit und wahrheitsgemäße Anwesenheit
ihre aktuellen direkten Teammitglieder; HR die ausdrücklich bezeichnete
Organisationssicht. Server prüft aktive Rolle, Session und Zuordnung erneut.
Anwesenheitspflicht entsteht nur aus bekannter Vertrags-/Kalenderabdeckung und
einer tatsächlich passenden, eindeutigen Kernzeit. Rahmenzeit/Wochenstunden
allein erzeugen keine falsche Fehlwarnung.
Kernzeit und fehlende/mehrdeutige Fakten sind getrennt erklärt. Halbtag ohne
zeitliche Lage bleibt unbekannt statt erfundener Vormittags-/Nachmittagsgrenze.
Ladefehler behandeln alten Status nicht als sichere aktuelle Anwesenheit.
Beide echten Genehmigungswege
bestehende Manager- und nachfolgende HR-Services/Regeln werden wiederverwendet.
doppelte oder veraltete Entscheidung werden nicht legitimiert.
Bearbeitung/Neueinreichung kann keine alte Entscheidung wieder gültig machen.
Legacy-Clients ohne optionalen Antragstimestamp bleiben API-kompatibel;
bestehende State-/CAS-/Zielrevision-Prüfungen bleiben unabhängig wirksam.
Kommentare/erforderliche Ablehnungsgründe und bestehende Audits bleiben lesbar.
Vollständige stellvertretende Aktionen
vergangene Zeit erfassen. Kein Aufweichen der Owner-only-Direktkorrektur.
Pausenprüfung unter derselben global → Person → Zeilen-Sperrdisziplin.
Serverzeit/gesetzliche und vertragliche Pausen statt manipulierbarer Overrides.
Außerhalb Rahmen bleibt Manager → HR erforderlich; Proxy ist keine Genehmigung.
aufgezeichnet; Urlaub/Homeoffice/Sonderurlaub als normale Anträge einschließlich
Vertretung, Urlaubssaldo, Halbtag und Genehmigungsweg. Keine Diagnosen/
Bescheinigungen in dieser UI oder aus alten Krankheitsnotizen in der Historie.
20261107060000_team_proxy_audit: tatsächlicher Actor,begünstigte Person, Werte, Zeitpunkt, Ressource und betriebliche Begründung
atomar auditiert. Keine erfundenen historischen Stellvertreter.
Vollständige Mitarbeiterhistorie und Kalender
verstecktes 200-/500-Limit, auch vollständiges Schaltjahr und bis fünf Jahre.
Draft/Pending/Approved/Rejected/Cancelled/Voided, Teil-/Mehrtag und Monatsgrenzen.
Offene Anträge sind keine behauptete genehmigte Verfügbarkeit.
Stellvertreter-Audit; heutige Teamzuordnung statt dauerhaften Rechts früherer
Autoren. [feature] Arbeitszeiten #45-Vergleich wird innerhalb seines eigenen 366-Tage-Limits genutzt.
Browserzone (auch die Verlaufs-Datumsüberschrift über Mitternacht); bestehender
[bug] Bearbeiten von Anträgen #42-Sekunden-/DST-Roundtrip bleibt grün.
Tatsächlich lokal ausgeführte Gates
Node 20.20.2, pnpm 9.15.9,
TZ=Europe/Berlin; isolierte synthetische DBs.Diese lokalen Code-Gates stammen vom unveränderten, akzeptierten Codestand
1972c52db027b38bcfba3bb9b29a41e5f6e61433. Für den reinen Doku-Nachtrag wurden keineunveränderten lokalen Volltests erneut ausgeführt; die reguläre CI läuft neu.
pnpm nx run api-e2e:e2e --runInBand --skip-nx-cachepnpm nx run-many -t test -p web,shared --run --skip-nx-cachepnpm nx run api-e2e:test-opspnpm nx run-many -t build -p api,web,shared --skip-nx-cachepnpm verify:apiCOCKPIT_RUNTIME_TEST=1 BASE_URL=http://127.0.0.1:18050 pnpm nx run web-e2e:cockpit-runtime --skip-nx-cachegit diff --checkDer echte Docker-Start deckte ein
umask 077-Problem auf. Das Runtime-Image machtroot-eigenen Code für den unprivilegierten App-Benutzer lesbar, ohne Host- oder
Datenrechte zu ändern; korrigierter Stack und finaler Browserlauf sind grün.
Zwischenzeitliche Testtyp-/Feldlisten-/Lintprobleme sind behoben; keine schwächeren
Berechtigungsassertionen oder Erfolgs-Retries.
Die vorangegangene Code-Nachkorrektur betrifft die Zeitzone der Verlaufsüberschrift,
die zugehörige zusätzliche Mitternachtsregression und dokumentierte Testzahlen.
Web-Volltest 366, anschließende Types/Lint, Produktionsbuild und erneuter
echter Docker-/Chromium-Lauf sind grün; Backend/Migration/Generierung unverändert.
Der semantische OpenAPI-Vergleich entfernt keine bestehenden Pfade/Schemas und
ändert keine bestehenden Operationsverträge; hinzu kommen acht Cockpit-Routen
und die optionalen Versionsfelder der drei bestehenden Transition-Schemas.
Gemeinsamer Heimnachtest aller fünf Pakete
Deutsche Nachtestanleitung beginnt jetzt mit
„Gesamtnachtest aller fünf Pakete“: ein Branch, ein neuer isolierter
Compose-Stack, Port 18050, synthetische Rollen, einmaliger Seed und geordnete
#42/#41/#43/#45/#44-Checkliste. Danach volle konkrete #44-Positiv-/Negativfälle,
Kernzeitgrenzen, echte Proxy-Aktionen, Audit sowie großer Jahresfilter.
Die ausführliche manuelle Anleitung wird nicht als menschlich durchlaufen
behauptet; der zusätzlich ausgeführte automatisierte echte Browserlauf ist
getrennt ausgewiesen. Ein früherer #45-Dokusatz ordnete irrtümlich PDF-Ausbau dem
Folgepaket zu; hier korrigiert: #44 ist das Cockpit, kein erfundener PDF-Scope.
Abschließende reine Doku-Reparatur: richtige Stack-Auswahl
Die bisher aus #41/#43 referenzierten Fixture-Blöcke waren noch auf deren
Einzeltest-Projekte/Overrides festgelegt. Jetzt gilt durchgehend:
dc42/dc41/dc43/dc45/dc44→all5.Sämtliche Paket-Fixtures und Steuerbefehle verwenden diese Wrapper; dadurch
bleiben ein Projekt
openclockwork-all-five, Port 18050 und dieselben Images.ausdrücklich getrennt; im Gesamtnachtest keine fremden Override-Dateien oder
zusätzlichen Branches/Stacks und keine paketweisen Zwischenstopps verwenden.
der opt-in Cockpit-Runtime-Test bleibt ausschließlich für den kombinierten
Stack vorgesehen. Historische E2E-Automationsbefehle sind kein Heimtest-Schritt.
kein selbstreferenzieller neuer Commit-Hash wird in die Anleitung geschrieben.
Tatsächlich verifiziert, ohne reale Stacks zu verändern:
bash -ndocker compose … config --format json-Auflösunggit diff --checkgrün; kein Code/API/Config-DiffMutierende Docker-Befehle wurden nur aufgezeichnet, nicht weitergeleitet.
Für die echten lesenden Config-Aufrufe wurden die kopierten Override-Inhalte in
neue temporäre Dateien gelegt; keine bestehende
/tmp-Override-Datei, keinStack und kein Volume angelegt/gestartet/verändert/gestoppt.
CI / Übergabe
5/5 erfolgreich auf dem neuen Doku-Head
efaa18eaf55a018edc4a18f4f6df1b91511e8d59, direktam aktuellen PR-Head geprüft. CI-Run, DCO-Run.
Die neuen Job-Protokolle bestätigen 653 API-Tests / 45 Suites,
366 Web-Tests / 49 Dateien, den befüllten kumulativen Upgrade von
main,3 echte Terminal-PIN-Browsertests und die erfolgreiche Runtime-Probe mit
3 OS-Prozessen, 5 abgewiesenen PINs, einem echten Neustart, 3 identischen
Belegen und genau einer Buchung. Keine älteren Checks werden als neue Evidenz
ausgegeben; keine unveränderten lokalen Code-Volltests erneut ausgeführt.
Worktree sauber, lokaler und Remote-Head identisch. Der Nachtrag enthält nur
die eine Markdown-Datei mit DCO und exaktem Co-Author; Code/API/Konfiguration
bleiben identisch zum unabhängig akzeptierten Codestand. Kein realer lokaler
Stack oder dessen Daten wurde für die Doku-Prüfung verändert. Kein Auto-Merge,
Merge, Release, Git-Tag, Versionsbump oder Deployment.
Stop für das abschließende Readback der Dokumentation und die finale Antwort;
dieses letzte Readback wird nicht vorweggenommen.