diff --git a/docs/ARCHIVE-PORTIERUNG-PRUEFPROTOKOLL.md b/docs/ARCHIVE-PORTIERUNG-PRUEFPROTOKOLL.md new file mode 100644 index 00000000..c07d411c --- /dev/null +++ b/docs/ARCHIVE-PORTIERUNG-PRUEFPROTOKOLL.md @@ -0,0 +1,43 @@ +# Archive: Portierung der Alt-Linien in den Neu-Strang + +Basis: `integration/gesamtprojekt` plus PR #103 (RET-03, `0012_legal_hold_destruction`). Branch `feature/archive-alt-linien-portierung-neu-strang`. + +## Ausgangslage + +| Alt-Zweig | Neu-Strang | Inhalt | +|---|---|---| +| `cmp-01`, `cmp-03`, `cmp-04` | bereits enthalten | GoBD-Verfahrensdokumentation, eDiscovery, Audit-Kopplung | +| `cmp-02` | fehlte (2 Commits, davon RET-03 in #103) | DSGVO-Datenschutzberichte (`dpreport`), Spalte `retention_objects.data_subject_ref` | +| `cmp-06` | fehlte (+1 Commit) | Vier-Augen-Freigabe für Löschungen (`deletionapproval`) | +| `cmp-07` | fehlte (+1 Commit) | DSGVO-Löschantrag (`dsgvorequest`, `dsgvo_decision_log`) | + +Kette: `cmp-02` ⊂ `cmp-06` ⊂ `cmp-07`, alle auf RET-03. Fehlend waren insgesamt drei Ticket-Commits. + +## Vorgehen + +Cherry-pick der drei Commits in Kettenreihenfolge (CMP-02, CMP-06, CMP-07), ohne Konflikte. Ein Einzel-Pick von CMP-07 ohne CMP-02 konfligiert in `dpreport.go` und ist deshalb nicht möglich. + +Migrationen neu nummeriert, Inhalt unverändert. Ältere Nummern mit anderem Inhalt des Neu-Strangs blieben unberührt. + +| Alt | Neu | +|---|---| +| `0009_data_subject_ref` | `0013_data_subject_ref` | +| `0010_deletion_requests` | `0014_deletion_requests` | +| `0011_dsgvo_decision_log` | `0015_dsgvo_decision_log` | + +Die drei Migrationen hängen nur von `retention_objects` (`0002`) ab. Es gibt keinen Bezug auf Alt-Nummern. Die Prüfprotokolle CMP-02/06/07 tragen einen Portierungshinweis mit den neuen Nummern. + +## Prüfungen (Entwicklungshost 204, frischer Klon des gepushten Branches) + +| Prüfung | Ergebnis | +|---|---| +| `gofmt -l archive` | leer | +| `go vet ./...` (Modul `archive`) | sauber | +| `go test -p 1 -count=1 ./...` gegen Wegwerf-Cluster `17/coredev` (`tenantdb`, `tenantdb_b`) | 27 Pakete `ok`, 0 FAIL; `dpreport`, `dsgvorequest`, `deletionapproval` und `deletionworkflow` laufen inklusive Mandantentrennungstests mit zweiter Datenbank | +| Migrationen von null (`mig_check`): 15 `up`, 15 `down` | up: 14 Tabellen, down: 0 Tabellen, zweiter up-Lauf: 14 Tabellen, ohne Fehler | + +## Grenzen + +- Die Tests der drei portierten Pakete legen ihre Tabellen selbst an (Handschema) und laufen nicht gegen die Migrationsdateien. Der Migrationsnachweis oben deckt die Dateien deshalb getrennt ab. +- Archive-Tests teilen sich die Datenbank, sie laufen mit `-p 1`. +- Kein fachlicher Widerspruch zwischen Alt- und Neu-Code gefunden: Die drei Commits ändern `retention.go` nur additiv (neue Funktion `RegisterObjectForSubject`, `RegisterObject` unverändert), alles Übrige liegt in neuen Paketen. Die `TenantIsolation`-Tests laufen mit zwei physisch getrennten Datenbanken (nicht übersprungen).