From 06c2a34516c64786324815739a1bea15577dc013 Mon Sep 17 00:00:00 2001 From: patrick Date: Wed, 14 Oct 2026 14:56:20 +0200 Subject: [PATCH] COR-03: migration auf 0022 umnummeriert (Kollision mit COR-05s bereits gemergter 0021_legacy_audit_log_staging) Co-Authored-By: Claude Sonnet 5 --- docs/COR-03-PRUEFPROTOKOLL.md | 6 +++--- ...ration_map.down.sql => 0022_role_migration_map.down.sql} | 0 ..._migration_map.up.sql => 0022_role_migration_map.up.sql} | 0 3 files changed, 3 insertions(+), 3 deletions(-) rename migrations/{0021_role_migration_map.down.sql => 0022_role_migration_map.down.sql} (100%) rename migrations/{0021_role_migration_map.up.sql => 0022_role_migration_map.up.sql} (100%) diff --git a/docs/COR-03-PRUEFPROTOKOLL.md b/docs/COR-03-PRUEFPROTOKOLL.md index 11eb8cb3..95bbae59 100644 --- a/docs/COR-03-PRUEFPROTOKOLL.md +++ b/docs/COR-03-PRUEFPROTOKOLL.md @@ -16,7 +16,7 @@ COR-03 übernimmt laut Auftrag die bereits mit `user_migration_map` (COR-02) ver ## Umsetzung -- `migrations/0021_role_migration_map.up/down.sql`: Referenztabelle `role_migration_map` — `user_migration_map_id` (FK, UNIQUE: genau ein Rollen-Map-Eintrag je migriertem Benutzer), `source_system` (CHECK `archivmail`/`archivdms`), `source_role` (Freitext/Gruppenname aus dem Altsystem), `approved_by`/`approved_at` (Freigabe-Gate analog COR-01/COR-02). **Die Core-Rolle selbst wird nicht in der DB gespeichert** — sie wird bei der Migration aus `source_system`+`source_role` über eine feste Tabelle berechnet, damit keine Freitext-Rolle je 1:1 übernommen werden kann. +- `migrations/0022_role_migration_map.up/down.sql`: Referenztabelle `role_migration_map` — `user_migration_map_id` (FK, UNIQUE: genau ein Rollen-Map-Eintrag je migriertem Benutzer), `source_system` (CHECK `archivmail`/`archivdms`), `source_role` (Freitext/Gruppenname aus dem Altsystem), `approved_by`/`approved_at` (Freigabe-Gate analog COR-01/COR-02). **Die Core-Rolle selbst wird nicht in der DB gespeichert** — sie wird bei der Migration aus `source_system`+`source_role` über eine feste Tabelle berechnet, damit keine Freitext-Rolle je 1:1 übernommen werden kann. - Neues Paket `internal/migrationrole`: - `mapping.go`: `archivmailRoleMap`/`archivdmsGroupMap` — die dokumentierte, feste Mapping-Tabelle (siehe unten). `CoreRole(sourceSystem, sourceRole)` liefert `ErrUnmappedRole`, wenn keine Core-Rolle hinterlegt ist. - `map.go`: `MapStore.Approved` liest nur freigegebene `role_migration_map`-Zeilen, per JOIN direkt angereichert um `nexarch_tenant_id`/`nexarch_user_id` aus `user_migration_map`. @@ -68,8 +68,8 @@ go vet ./... -> keine Befunde TEST_ADMIN_DSN=... go test ./internal/migrationrole/... ./internal/migrationuser/... ./internal/rbac/... ./internal/user/... ./internal/tenant/... -v -> alle Tests PASS, keine Regression -Migrationen 0001..0021 in Reihenfolge gegen eine leere Wegwerf-DB (Port 5433) angewendet, -0021 zurueckgerollt -> APPLY_DONE, ROLLBACK_OK +Migrationen 0001..0022 in Reihenfolge gegen eine leere Wegwerf-DB (Port 5433) angewendet, +0022 zurueckgerollt -> APPLY_DONE, ROLLBACK_OK ``` ## Entscheidungen (dokumentiert, keine Rückfrage nötig) diff --git a/migrations/0021_role_migration_map.down.sql b/migrations/0022_role_migration_map.down.sql similarity index 100% rename from migrations/0021_role_migration_map.down.sql rename to migrations/0022_role_migration_map.down.sql diff --git a/migrations/0021_role_migration_map.up.sql b/migrations/0022_role_migration_map.up.sql similarity index 100% rename from migrations/0021_role_migration_map.up.sql rename to migrations/0022_role_migration_map.up.sql