14 KiB
phase, plan, subsystem, tags, requires, provides, affects, actuals, tech-stack, key-files, key-decisions, patterns-established, requirements-completed, coverage, duration, completed, status
| phase | plan | subsystem | tags | requires | provides | affects | actuals | tech-stack | key-files | key-decisions | patterns-established | requirements-completed | coverage | duration | completed | status | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 16-ad-gruppen-synchronisation | 05 | ui |
|
|
|
|
|
|
|
|
|
6min | 2026-08-06 | complete |
Phase 16 Plan 5: Sync-Bericht vollstaendig verdrahtet, sichtbarer Fehlerzustand, Freigabe-Matrix mit Anzeigename Summary
Der Sync-Bericht auf /admin/ldap zeigt jetzt Benutzer-, Gruppenmitgliedschafts- und AD-Gruppen-Zahlen in einem einzigen Container (schliesst die seit D-21 bestehende Frontend-Luecke und die neue Sichtbarkeitsanforderung aus D-05/D-06), meldet eine verschobene Standardgruppen-Markierung in Amber statt in der Destruktiv-Farbe, und ein insgesamt fehlgeschlagener Sync-Request erscheint als sichtbarer Fehler statt eines Drei-Null-Erfolgsberichts. Die Freigabe-Matrix unter /admin/modules/grants zeigt in ihren Spaltenkoepfen den internen Namen mit AD-Namen-Fallback und Tooltip — die dritte und letzte D-04-Anzeigestelle. PERM-02 ist damit vollstaendig geliefert und in REQUIREMENTS.md geschlossen.
Performance
- Duration: 6 min (Commit-Spanne 16:36:xx bis 16:37:xx Uhr; Lesen von PLAN.md, 16-03-/16-04-SUMMARY.md, UI-SPEC.md, PATTERNS.md, STATE.md und der Zieldateien davor nicht mitgerechnet)
- Started: 2026-08-06 (erster Task-Commit
f66546d) - Completed: 2026-08-06 (zweiter Task-Commit
fac152a) - Tasks: 2
- Files modified: 4
Accomplishments
SyncResult-Interface (Frontend) additiv um sechs Zahlenfelder erweitert — die exakt gleichen Feldnamen wie aufLdapSyncResult(Backend, Plan 16-03):groupMembershipsAdded/groupMembershipsRemoved(D-21-Backend-Luecke, seit Phase 15 bestehend, nie verdrahtet) sowiegroupsAdopted/groupsRenamed/groupsDeleted/defaultMarkerMoved(Plan 16-03)- Neuer
syncRequestError-State:handleSyncsetzt ihn zu Beginn jedes Laufs aufnull, bei!res.okUND imcatch-Zweig auft('sync.requestError')— der bisherige Drei-Null-Fallback ({ created: 0, updated: 0, deactivated: 0, errors: ['Network error'] }) ist vollstaendig entfernt, ein nie gelaufener Sync kann nicht mehr als erfolgreicher No-Op erscheinen - Sync-Bericht-Container um drei neue Zeilen erweitert: Gruppenmitgliedschaften (
text-muted-foreground, immer sichtbar), AD-Gruppen (text-muted-foreground, immer sichtbar auch bei allen Werten = 0), und bedingt (nurdefaultMarkerMoved > 0) eine Amber-Zeile (text-amber-700 dark:text-amber-400) — bewusst nicht in der Destruktiv-Farbe, da eine verschobene Standardmarkierung ein bemerkenswerter, aber kein fehlerhafter Vorgang ist - Vier neue i18n-Schluessel unter
admin.ldap.syncinde.jsonunden.json:resultGroupMemberships,resultGroups(mit der in<decisions_recorded>dokumentiertengroupsAdopted-Abweichung vom urspruenglichen Copywriting-Contract-Textentwurf),defaultMarkerMoved,requestError Group-Interface inadmin/modules/grants/page.tsxuminternalName?: string | nullergaenzt — das Feld kam bereits ohne Backend-Aenderung mitGET /module-grants/matrixmit (keineselect-Klausel ingetMatrix(), verifiziert)- Spaltenkopf-Text und
title-Tooltip nutzen jetztinternalName ?? g.name(Nullish, keine Truthiness-Variante) — dieselbe Zelle, derselbe Truncate-mit-Tooltip-Mechanismus, nur der Textwert aendert sich; dasmatrixCheckboxLabel-aria-labelfolgt automatisch - Suchfilter der Matrix matcht jetzt beide Namen (
internalName ?? g.nameUNDg.name) — die Suche nach dem internen wie nach dem urspruenglichen AD-Namen findet dieselbe Gruppe - Vollstaendige Web-Testsuite gruen: 32 Testdateien, 192 Tests (keine Regression,
tsc --noEmitfehlerfrei) - PERM-02 in
REQUIREMENTS.mdauf[x]gesetzt und in der Traceability-Tabelle aufComplete— alle fuenf Erfolgskriterien der Phase sind durch die kombinierte Arbeit von 16-01 bis 16-05 geliefert
Task Commits
Each task was committed atomically:
- Task 1: Sync-Bericht vollstaendig verdrahten und Fehlschlag sichtbar machen (D-06, RESEARCH.md Pitfall 3) -
f66546d(feat) - Task 2: Anzeigename mit Fallback in den Spaltenkoepfen der Freigabe-Matrix (D-04) -
fac152a(feat)
Plan metadata: wird mit diesem Summary committet
Files Created/Modified
apps/web/src/app/(portal)/admin/ldap/page.tsx—SyncResult-Interface um sechs Felder erweitert;syncRequestError-State;handleSyncersetzt den Drei-Null-Fallback durch einen sichtbaren Fehlerzustand; Sync-Bericht-Container um drei neue<p>-Zeilen erweitert (zwei immer sichtbar, eine bedingt in Amber)apps/web/src/app/(portal)/admin/modules/grants/page.tsx—Group.internalName?: string | nullim Interface; Spaltenkopf-Text/Tooltip aufinternalName ?? g.name;filteredGroups-Suchfilter matcht beide Namenapps/web/src/messages/de.json/en.json— vier neueadmin.ldap.sync.*-Schluessel (resultGroupMemberships,resultGroups,defaultMarkerMoved,requestError)
Decisions Made
- PERM-02 wurde in
REQUIREMENTS.mdauf[x]gesetzt, weil alle fuenf im ROADMAP.md formulierten Erfolgskriterien der Phase (selektiver Import mit AD-Bindung, keine OU-weite Automatik, Rename-Nachzug, Loesch-Nachzug samt Mitgliedschaften/Freigaben, unberuehrte lokale Gruppen) bereits durch die Plaene 16-01/16-02/16-03 code-vollstaendig geliefert sind — dieser Plan liefert ausschliesslich die zuletzt fehlende Sichtbarkeitsschicht (Sync-Bericht, D-05/D-06) und die dritte D-04-Anzeigestelle, beides ohne Einfluss auf die fachliche Korrektheit der fuenf Kriterien selbst. - Die A1/A2-Live-Pruefung gegen ein echtes Active Directory (WINDOWS.md #4, aus Plan 16-03) bleibt bewusst offen und wird NICHT als "durch PERM-02-Abschluss erledigt" behandelt — sie ist eine Korrektheitsannahme unter SC-3/SC-4 (Rename-/Loesch-Erkennung), kein eigenes Erfolgskriterium. Ein negatives Ergebnis waere weiterhin ein Stopp-Grund fuer die D-05-Loeschsemantik.
Deviations from Plan
None — plan wurde exakt wie geschrieben ausgefuehrt. Beide Handler-/Zellenaenderungen folgten den in 16-PATTERNS.md vorgezeichneten Analogien ohne Abweichung.
Issues Encountered
None.
User Setup Required
None — keine externe Service-Konfiguration erforderlich. Der laufende Docker-Stack (lokal) wurde von diesem Plan nicht angefasst; die Aenderungen liegen im Web-Quellcode und werden erst mit einem --build/--force-recreate durch den Nutzer wirksam. Kein Deploy auf den Testserver durch diesen Lauf (Projektregel).
Known Stubs
Keine. Beide geaenderten Dateien rendern ausschliesslich echte, vom Backend gelieferte Werte — kein hartkodierter Platzhalter.
Threat Flags
Keine neue Angriffsflaeche — beide Aenderungen zeigen bereits vom Backend gelieferte, fuer ADMIN/SUPER_ADMIN desselben Mandanten ohnehin sichtbare Werte als React-Textknoten (siehe Plan-<threat_model>, T-16-12/T-16-14 bereits mitigiert/akzeptiert).
Next Phase Readiness
- Phase 16 (AD-Gruppen-Synchronisation) ist mit diesem Plan vollstaendig ausgefuehrt: 5/5 Plaene, PERM-02 geschlossen
- Offener Punkt bleibt phasenweit bestehen (WINDOWS.md #4): die A1/A2-Live-Pruefung gegen ein echtes Active Directory (objectGUID-Rename-Stabilitaet, byteweise Hex-Filter-Syntax) ist NICHT durchgefuehrt — kein erreichbares AD in dieser Sandbox. Vor produktivem Einsatz der D-05-Loeschsemantik gegen ViCoTest (
balios.ctl.local) nachzuholen, siehe16-03-SUMMARY.md. - Zusaetzlich offen (WINDOWS.md #5, #6): manuelle Browser-Durchklicks aus den Plan-Verification-Bloecken von 16-04 und 16-05 sind nicht ausgefuehrt (kein Browser-Tool in dieser Session) — vor
/gsd-shipnachzuholen. - Kein Folgeplan innerhalb dieser Phase (
affects: []) — das Milestone kann mit Phase 16 als abgeschlossen betrachtet werden, vorbehaltlich der beiden oben genannten offenen Verifikationen.
Phase: 16-ad-gruppen-synchronisation Completed: 2026-08-06
Self-Check: PASSED
Alle 4 in diesem Plan geaenderten Quelldateien sowie dieses Summary existieren auf der Festplatte; alle 3 Commit-Hashes (f66546d, fac152a, a0c5e47) sind im lokalen Git-Log auffindbar.