diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index cef139d..ef920ef 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -562,12 +562,12 @@ Plans: **Offen für die Planung**: ob ein Admin eine automatisch angelegte Gruppe in Tessera umbenennen darf (würde beim nächsten Sync überschrieben), und wie sich die Auswahl-Oberfläche zur bestehenden AD-Gruppenauswahl in `/admin/groups` verhält. -**Plans**: 5 plans +**Plans**: 1/5 plans executed Plans: **Wave 1** -- [ ] 16-01-PLAN.md — Tracer: Schema-Erweiterung (internalName, ldapObjectGuid) + AD-Gruppen-Import end-to-end (D-01, D-02, D-04) +- [x] 16-01-PLAN.md — Tracer: Schema-Erweiterung (internalName, ldapObjectGuid) + AD-Gruppen-Import end-to-end (D-01, D-02, D-04) **Wave 2** *(blocked on Wave 1 completion)* diff --git a/.planning/STATE.md b/.planning/STATE.md index a6c2262..317e3ee 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -2,18 +2,18 @@ gsd_state_version: 1.0 milestone: v1.1 milestone_name: Ausschreibungs-Radar -current_phase: 15 -current_phase_name: modul-berechtigungen-gruppen-user-grants +current_phase: 16 +current_phase_name: AD-Gruppen-Synchronisation status: executing -stopped_at: Phase 16 UI-SPEC approved -last_updated: "2026-08-06T12:42:37.667Z" -last_activity: 2026-08-04 -last_activity_desc: Phase 15 execution started +stopped_at: Completed 16-01-PLAN.md +last_updated: "2026-08-06T13:48:07.306Z" +last_activity: 2026-08-06 +last_activity_desc: Phase 16 execution started progress: total_phases: 16 completed_phases: 13 total_plans: 80 - completed_plans: 73 + completed_plans: 74 --- # Project State @@ -23,16 +23,16 @@ progress: See: .planning/PROJECT.md (updated 2026-07-17) **Core value:** Eine zentrale Plattform, in der beliebige Workflow-Tools als Module lizenziert, aktiviert und genutzt werden koennen -- ohne zwischen verschiedenen Anwendungen wechseln zu muessen. -**Current focus:** Phase 15 — modul-berechtigungen-gruppen-user-grants +**Current focus:** Phase 16 — AD-Gruppen-Synchronisation ## Current Position -Phase: 15 (modul-berechtigungen-gruppen-user-grants) — EXECUTING -Plan: 8 of 8 +Phase: 16 (AD-Gruppen-Synchronisation) — EXECUTING +Plan: 2 of 5 Status: Ready to execute -Last activity: 2026-08-04 — Phase 15 execution started +Last activity: 2026-08-06 — Phase 16 execution started -Progress: [██████████] 97% +Progress: [█████████░] 93% ## Performance Metrics @@ -107,6 +107,7 @@ Progress: [██████████] 97% | Phase 15 P06 | 35min | 3 tasks | 8 files | | Phase 15 P07 | 30min | 3 tasks | 7 files | | Phase 15 P08 | 30min | 2 tasks | 12 files | +| Phase 16 P01 | 34min | 3 tasks | 10 files | ## Accumulated Context @@ -255,6 +256,8 @@ Recent decisions affecting current work: - [Phase ?]: [15-08]: isAdmin-Gate auf /marketplace und /marketplace/[slug] entfernt (D-08: Katalog bleibt Schaufenster fuer jeden authentifizierten Benutzer) — isAdmin gated jetzt nur noch die Aktivieren/Deaktivieren-Aktion (canManage-Prop) - [Phase ?]: [15-08]: MarketplaceCard-Klick delegiert an getrennte onOpenDetail/onLockedClick-Callback-Props statt eigener Router-Logik in der Karte — bleibt praesentational und ueber vi.fn() testbar - [Phase ?]: [quick-260805-fok]: ensureDefaultGroup-Waechter prueft ausschliesslich group.count === 0, nie die fehlende isDefault-Markierung (D-13); Reparatur laeuft als zweiter sequenzieller await-Schritt in AdminSeedService.onApplicationBootstrap statt als eigener Hook in GroupsModule (Ordering-Falle wie in tender-scheduler.service.ts) +- [Phase ?]: Checkpoint 1 (16-01 Task 1): approve-both — Group.internalName + ldapObjectGuid + Unique-Index in einer Migration, freigegeben 2026-08-06 +- [Phase ?]: Migrationsverfahren angepasst: prisma migrate dev verweigert nicht-interaktive Shell — Ersatz via migrate diff + Handdatei + migrate deploy, inkl. Baseline der 24 Altmigrationen per migrate resolve --applied ### Pending Todos @@ -299,7 +302,7 @@ Items acknowledged and carried forward from previous milestone close: ## Session Continuity -Last session: 2026-08-06T11:52:33.849Z -Stopped at: Phase 16 UI-SPEC approved -Resume file: .planning/phases/16-ad-gruppen-synchronisation/16-UI-SPEC.md +Last session: 2026-08-06T13:48:07.273Z +Stopped at: Completed 16-01-PLAN.md +Resume file: None Last activity: 2026-07-14 - Built LDAP per-user exclude/denylist filter (9d1323f), migration applied on live DB, verified via Playwright: sync deactivated 4 excluded service accounts (administrator/krbtgt/guest/dns-ldap), 2 real LDAP users stay active, 0 wrongly created diff --git a/.planning/phases/16-ad-gruppen-synchronisation/16-01-SUMMARY.md b/.planning/phases/16-ad-gruppen-synchronisation/16-01-SUMMARY.md index b34d5ee..d956474 100644 --- a/.planning/phases/16-ad-gruppen-synchronisation/16-01-SUMMARY.md +++ b/.planning/phases/16-ad-gruppen-synchronisation/16-01-SUMMARY.md @@ -175,9 +175,17 @@ Each task was committed atomically: - **Verification:** `grep -ci 'row level security' migration.sql` = 0; `npx vitest run src/groups/migration-sql.spec.ts` grün (14 Tests) - **Committed in:** 626e296 +**4. [Rule 1 - Bug] `requirements mark-complete PERM-02` hätte den Requirement-Status verfälscht — Checkbox zurückgesetzt** +- **Found during:** State-Update-Schritt nach Task 3 +- **Issue:** Die Plan-Frontmatter listet `requirements: [PERM-02]`, und der Standard-State-Update-Schritt hakt daraufhin PERM-02 in REQUIREMENTS.md als erledigt ab. PERM-02 beschreibt aber die vollständige AD-Sync-Kette (Umbenennung folgt nach, Verschwinden löscht kaskadierend, `memberOf` pflegt Mitgliedschaften) — dieser Plan liefert nur den selektiven Import (den Anfang der Kette). Die verbleibenden vier Pläne der Phase 16 liefern Rekonziliation, Anzeige-Fallback und Dialog-Umbau erst noch. Ein Abhaken jetzt hätte Requirements-Tracking und spätere Audit-/Ship-Gates fälschlich glauben lassen, PERM-02 sei vollständig erfüllt. +- **Fix:** Checkbox in REQUIREMENTS.md Zeile 67 manuell auf `[ ]` zurückgesetzt, nachdem der Standard-Befehl sie automatisch gesetzt hatte. `requirements-completed` im Frontmatter dieses Summarys bleibt trotzdem `[PERM-02]` (Plan-Frontmatter-Vertrag), aber die eigentliche Traceability-Tabelle bleibt korrekt „Pending", bis der letzte Plan der Phase liefert. +- **Files modified:** .planning/REQUIREMENTS.md +- **Verification:** `grep -n 'PERM-02' .planning/REQUIREMENTS.md` zeigt weiterhin `[ ]` und Traceability-Zeile „Pending" +- **Committed in:** wird mit dem abschließenden Metadaten-Commit dieses Plans committet + --- -**Total deviations:** 3 auto-fixed (2 blocking / Migrationsverfahren, 1 Bug in eigenem Kommentartext) +**Total deviations:** 4 auto-fixed (2 blocking / Migrationsverfahren, 1 Bug in eigenem Kommentartext, 1 Bug in Requirements-Tracking) **Impact on plan:** Alle drei Anpassungen waren notwendig, um Task 3 überhaupt abzuschließen bzw. um die eigenen Acceptance-Kriterien zu erfüllen. Kein Scope Creep — die Migration selbst entspricht exakt dem im Plan vorgesehenen Inhalt (zwei nullable Spalten, ein Unique-Index, keine RLS-Anweisung). ## Issues Encountered