docs(compliance): P-01 Dokumentation nach technischer Umsetzung
All checks were successful
Deploy Development / deploy (push) Successful in 35s
Test Suite / pytest-backend (push) Successful in 32s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 7s
Test Suite / playwright-tests (push) Successful in 32s

- compliance-implementation.md: P-01-Abschnitt hinzugefügt (technisch
  teilweise umgesetzt), Testergebnisse, Version 0.8.69
- compliance-package-register.md: P-01  open → ⚠️ partially
  implemented; Fortschrittsblock aktualisiert; App-Version 0.8.69
- compliance-roadmap.md: P-01 in teilweise umgesetzte Pakete; Blocker 1
  aktualisiert; §6 nächste Freigabe auf P-06 / Etappe B; Anhang

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lars 2026-05-10 09:47:40 +02:00
parent d7ed0c0e9b
commit 75d6a40817
3 changed files with 87 additions and 35 deletions

View File

@ -3,12 +3,51 @@
**Erstellt:** 2026-05-09 **Erstellt:** 2026-05-09
**Zuletzt aktualisiert:** 2026-05-10 **Zuletzt aktualisiert:** 2026-05-10
**Audit-Basis:** `docs/compliance-audit.md` **Audit-Basis:** `docs/compliance-audit.md`
**App-Version nach Umsetzung:** 0.8.68 **App-Version nach Umsetzung:** 0.8.69
--- ---
## Freigegebene Pakete und Umsetzungsstatus ## Freigegebene Pakete und Umsetzungsstatus
### P-01 Rechtstexte ⚠️ (technischer Teil umgesetzt; juristische Inhalte offen)
**Status:** Technisch teilweise umgesetzt (2026-05-10, Version 0.8.69)
**Betroffene Dateien:**
- `frontend/src/pages/LegalPage.jsx` (neu) — Platzhalter-Komponente für alle vier Seiten
- `frontend/src/App.jsx` — 4 neue öffentliche Routen
- `frontend/src/pages/LoginPage.jsx` — Rechtstext-Links im Card-Footer
- `frontend/src/components/DesktopSidebar.jsx` — Rechtstext-Links im Sidebar-Footer
**Technische Änderung:**
Vier öffentliche Routen angelegt, kein Auth erforderlich, kein Redirect für nicht eingeloggte Nutzer:
- `/impressum``<LegalPage type="impressum" />`
- `/datenschutz``<LegalPage type="datenschutz" />`
- `/nutzungsbedingungen``<LegalPage type="nutzungsbedingungen" />`
- `/medienrichtlinie``<LegalPage type="medienrichtlinie" />`
Jede Seite enthält:
- Deutlich sichtbaren Platzhalterhinweis: „MUSTER / PLATZHALTER Inhalt wird vor Produktivbetrieb juristisch geprüft und durch den Betreiber ergänzt."
- Strukturierte Pflichtfelder je Rechtstext (Betreiber, Rechtsgrundlagen, Betroffenenrechte etc.)
- Querlinks zu den anderen drei Rechtstextseiten
Links zu allen vier Seiten sind in der Login-/Registrierungsseite (Card-Footer) und im Desktop-Sidebar-Footer sichtbar ohne Anmeldung erreichbar.
**Nicht umgesetzt (außerhalb Freigabe):**
Juristische Texte, inhaltliche Überprüfung, Admin-konfigurierbare Inhalte, Einwilligungs-Checkboxen.
**KRIT-01 Blocking-Status:**
Der Blocker KRIT-01 bleibt **offen** bis juristisch geprüfte Texte durch den Betreiber eingepflegt sind. Die technische Voraussetzung (Routen und Seitenstruktur) ist erfüllt.
**Tests:** 5 Playwright-Tests, alle grün:
- Impressum ohne Auth erreichbar + Platzhalterhinweis sichtbar + Reload OK
- Datenschutz ohne Auth erreichbar + Platzhalterhinweis sichtbar + Reload OK
- Nutzungsbedingungen ohne Auth erreichbar + Platzhalterhinweis sichtbar + Reload OK
- Medienrichtlinie ohne Auth erreichbar + Platzhalterhinweis sichtbar + Reload OK
- Login-Seite enthält alle vier Rechtstext-Links
---
### P-03 Papierkorb-Retention-Job aktivieren ✅ ### P-03 Papierkorb-Retention-Job aktivieren ✅
**Status:** Umgesetzt **Status:** Umgesetzt
@ -202,18 +241,22 @@ allow_headers=["Content-Type", "X-Auth-Token", "X-Active-Club-Id"],
--- ---
## Test-Zusammenfassung (Stand 0.8.68) ## Test-Zusammenfassung (Stand 0.8.69)
``` ```
tests/test_auth_password_reset_minlength.py 7 passed (neu, P-05b) tests/test_auth_password_reset_minlength.py 7 passed (neu, P-05b)
tests/test_media_assets_copyright_promotion.py 7 passed (gehärtet, P-04) tests/test_media_assets_copyright_promotion.py 7 passed (gehärtet, P-04)
tests/test_security_release.py 9 passed (inkl. 2 P-07-Tests) tests/test_security_release.py 9 passed (inkl. 2 P-07-Tests)
Weitere bestehende Tests: 81 passed, 6 skipped Weitere bestehende Tests: 81 passed, 6 skipped
Gesamt: 104 passed, 6 skipped, 1 failed Gesamt (Backend): 104 passed, 6 skipped, 1 failed
Fehlgeschlagener Test: test_list_media_assets_invalid_lifecycle_400 Fehlgeschlagener Test: test_list_media_assets_invalid_lifecycle_400
→ Pre-existing: benötigt laufenden PostgreSQL-Container (Hostname "postgres") → Pre-existing: benötigt laufenden PostgreSQL-Container (Hostname "postgres")
→ Bestand bereits vor allen Compliance-Änderungen (verifiziert per git stash) → Bestand bereits vor allen Compliance-Änderungen (verifiziert per git stash)
Playwright E2E (dev-smoke-test.spec.js): 14 passed (inkl. 5 neue P-01-Tests)
→ P-01: 4× Route ohne Auth + Platzhalterhinweis + Reload, 1× Login-Links
→ P-12: sessionStorage-Bereinigung (grün)
``` ```
--- ---
@ -248,7 +291,7 @@ Fehlgeschlagener Test: test_list_media_assets_invalid_lifecycle_400
## Re-Audit-Empfehlung ## Re-Audit-Empfehlung
Operativ nach Deployment 0.8.68 prüfen: Operativ nach Deployment 0.8.69 prüfen:
1. **P-03/P-03b**: `docker logs shinkan-retention-cron` — Job läuft täglich 03:00 Uhr; Retention-Zeiten: 30 → 30 Tage 1. **P-03/P-03b**: `docker logs shinkan-retention-cron` — Job läuft täglich 03:00 Uhr; Retention-Zeiten: 30 → 30 Tage
2. **P-04**: Manuell: PATCH privates Medium auf `official` ohne `copyright_notice` → muss 400 liefern 2. **P-04**: Manuell: PATCH privates Medium auf `official` ohne `copyright_notice` → muss 400 liefern

View File

@ -3,7 +3,7 @@
**Typ:** Kanonisches Referenzdokument **Typ:** Kanonisches Referenzdokument
**Erstellt:** 2026-05-10 **Erstellt:** 2026-05-10
**Basisdokument:** `docs/compliance-audit.md` (Initial-Audit 2026-05-09, App-Version 0.8.65) **Basisdokument:** `docs/compliance-audit.md` (Initial-Audit 2026-05-09, App-Version 0.8.65)
**Letzte Aktualisierung:** 2026-05-10 (App-Version 0.8.68) **Letzte Aktualisierung:** 2026-05-10 (App-Version 0.8.69)
--- ---
@ -31,10 +31,10 @@
| **Kanonischer Titel** | Rechtstexte (Impressum, Datenschutzerklärung, AGB, Medienrichtlinie) | | **Kanonischer Titel** | Rechtstexte (Impressum, Datenschutzerklärung, AGB, Medienrichtlinie) |
| **Findings** | KRIT-01 | | **Findings** | KRIT-01 |
| **Etappe** | 1 | | **Etappe** | 1 |
| **Status** | ❌ open | | **Status** | ⚠️ partially implemented |
| **Letzter Stand** | Nicht umgesetzt. Technische Routen fehlen. Inhalt durch Rechtsanwalt erforderlich. | | **Letzter Stand** | Technischer Teil umgesetzt (2026-05-10, Version 0.8.69): Routen `/impressum`, `/datenschutz`, `/nutzungsbedingungen`, `/medienrichtlinie` öffentlich erreichbar ohne Auth. Platzhalterseiten mit strukturierten Pflichtfeldern und sichtbarem Muster-Hinweis. Links in LoginPage und DesktopSidebar. **Juristisch geprüfte Inhalte fehlen noch — Betreiber + Rechtsanwalt erforderlich. KRIT-01 bleibt offen.** |
| **Verweise** | `docs/compliance-audit.md` §14.2, §17, §19.1 | | **Verweise** | `docs/compliance-audit.md` §14.2, §17, §19.1; `docs/compliance-implementation.md` §P-01; `frontend/src/pages/LegalPage.jsx` |
| **Hinweise** | Keine Nummerierungsabweichung in nachgelagerten Dokumenten festgestellt. | | **Hinweise** | Keine Nummerierungsabweichung festgestellt. Scope Drift ausgeschlossen: Keine juristischen Texte, keine Einwilligungs-Checkboxen, keine Admin-Konfiguration. |
--- ---
@ -392,7 +392,7 @@
| ID | Kanonischer Titel | Etappe | Findings | Status | | ID | Kanonischer Titel | Etappe | Findings | Status |
|----|------------------|--------|----------|--------| |----|------------------|--------|----------|--------|
| P-01 | Rechtstexte | 1 | KRIT-01 | ❌ open | | P-01 | Rechtstexte | 1 | KRIT-01 | ⚠️ partially implemented |
| P-02 | Self-Service-Kontolöschung + Datenexport | 1 | KRIT-02, KRIT-05 | ❌ open | | P-02 | Self-Service-Kontolöschung + Datenexport | 1 | KRIT-02, KRIT-05 | ❌ open |
| P-03 | Papierkorb-Retention-Job aktivieren | 1 | KRIT-07 | ✅ implemented | | P-03 | Papierkorb-Retention-Job aktivieren | 1 | KRIT-07 | ✅ implemented |
| P-03b | _Nacharbeit:_ Retention-Zeiten mit Löschkonzept abgleichen | — | — | ✅ implemented | | P-03b | _Nacharbeit:_ Retention-Zeiten mit Löschkonzept abgleichen | — | — | ✅ implemented |
@ -423,9 +423,10 @@
## Fortschritt ## Fortschritt
**Implementiert:** P-03, P-03b, P-04, P-05, P-05b, P-07, P-12, P-23, P-24 — 9 Pakete (inkl. 2 Nacharbeiten) **Implementiert (vollständig):** P-03, P-03b, P-04, P-05, P-05b, P-07, P-12, P-23, P-24 — 9 Pakete (inkl. 2 Nacharbeiten)
**Offen:** P-01, P-02, P-06, P-08, P-09, P-10, P-11, P-13, P-14, P-15, P-16, P-17, P-18, P-19, P-20, P-21, P-22 — 17 Pakete **Teilweise implementiert:** P-01 (technischer Teil; juristische Inhalte offen) — 1 Paket
**App-Version bei letzter Aktualisierung:** 0.8.68 **Offen:** P-02, P-06, P-08, P-09, P-10, P-11, P-13, P-14, P-15, P-16, P-17, P-18, P-19, P-20, P-21, P-22 — 16 Pakete
**App-Version bei letzter Aktualisierung:** 0.8.69
**Letztes Umsetzungsdatum:** 2026-05-10 **Letztes Umsetzungsdatum:** 2026-05-10
--- ---

View File

@ -2,7 +2,7 @@
**Typ:** Lebendes Steuerungsdokument **Typ:** Lebendes Steuerungsdokument
**Erstellt:** 2026-05-10 **Erstellt:** 2026-05-10
**App-Version:** 0.8.68 **App-Version:** 0.8.69
**Zuletzt aktualisiert:** 2026-05-10 **Zuletzt aktualisiert:** 2026-05-10
--- ---
@ -29,9 +29,15 @@ Diese Roadmap ist nach jedem Re-Audit zu aktualisieren. Abweichungen von der bis
## 2. Aktueller Stand (2026-05-10) ## 2. Aktueller Stand (2026-05-10)
### App-Version: 0.8.68 ### App-Version: 0.8.69
### Geschlossene Pakete ### Teilweise umgesetzte Pakete
| ID | Titel | Version | Offen |
|----|-------|---------|-------|
| P-01 | Rechtstexte | 0.8.69 | Juristische Inhalte — Betreiber + Rechtsanwalt |
### Vollständig geschlossene Pakete
| ID | Titel | Version | | ID | Titel | Version |
|----|-------|---------| |----|-------|---------|
@ -45,11 +51,12 @@ Diese Roadmap ist nach jedem Re-Audit zu aktualisieren. Abweichungen von der bis
| P-23 | LoginPage: minLength angleichen + Versionsstring entfernen | 0.8.66 | | P-23 | LoginPage: minLength angleichen + Versionsstring entfernen | 0.8.66 |
| P-24 | CORS einschränken (Methoden + Header) | 0.8.66 | | P-24 | CORS einschränken (Methoden + Header) | 0.8.66 |
**Abgeschlossene Pakete:** 7 Hauptpakete + 2 Nacharbeiten = 9 Umsetzungseinheiten **Vollständig abgeschlossen:** 7 Hauptpakete + 2 Nacharbeiten = 9 Umsetzungseinheiten
**Teilweise umgesetzt (technisch):** P-01
### Offene Pakete (17) ### Offene Pakete (16)
P-01, P-02, P-06, P-08, P-09, P-10, P-11, P-13, P-14, P-15, P-16, P-17, P-18, P-19, P-20, P-21, P-22 P-02, P-06, P-08, P-09, P-10, P-11, P-13, P-14, P-15, P-16, P-17, P-18, P-19, P-20, P-21, P-22
### Gesamtstatus ### Gesamtstatus
@ -74,8 +81,9 @@ Die folgenden Pakete sind vor der Freigabe für allgemeine öffentliche Registri
### Blocker 1 — P-01: Rechtstexte ### Blocker 1 — P-01: Rechtstexte
**Finding:** KRIT-01 (Ordnungswidrigkeit, § 5 DDG) **Finding:** KRIT-01 (Ordnungswidrigkeit, § 5 DDG)
**Warum zwingend:** Eine öffentlich erreichbare App ohne Impressum ist seit dem ersten Tag der öffentlichen Zugänglichkeit bußgeldbewehrt. Auch eine Beta-/Invite-Only-Phase ohne Impressum trägt dieses Risiko, sobald die URL öffentlich bekannt ist. **Technischer Stand:** ⚠️ Routen und Platzhalterseiten vorhanden (Version 0.8.69). Juristische Inhalte fehlen noch.
**Abhängigkeit:** Technische Seiten können sofort angelegt werden (Platzhalter). Inhalt erfordert Rechtsanwalt. **Warum noch offen:** Impressum, Datenschutzerklärung und AGB ohne geprüfte Inhalte genügen der gesetzlichen Pflicht nicht. Die Platzhalterseiten machen die Lücke sichtbar, schließen sie aber nicht.
**Nächster Schritt:** Rechtsanwalt beauftragt werden → Inhalte durch Betreiber ergänzen → Platzhaltermarkierung entfernen.
### Blocker 2 — P-06: Upload-Einwilligungsdialog ### Blocker 2 — P-06: Upload-Einwilligungsdialog
@ -205,21 +213,20 @@ Erst wenn diese Fragen beantwortet und als Spec dokumentiert sind, wird P-02 in
## 6. Nächste empfohlene Freigabe ## 6. Nächste empfohlene Freigabe
**Empfehlung: P-01 allein (technischer Teil).** **P-01 technisch umgesetzt (Version 0.8.69).** Juristische Inhalte bleiben offen.
> „Freigabe zur Umsetzung P-01: Rechtstexte technisch anlegen" Die nächste technische Freigabe sollte **Etappe B** umfassen — beginnend mit dem kleinsten Paket:
**Begründung:** > „Freigabe zur Umsetzung P-06: Upload-Einwilligungsdialog"
- P-12 (Etappe A) ist abgeschlossen — kein weiteres Sofortpaket offen
- P-01 ist das kleinste verbleibende Pflichtpaket mit technischem Umsetzungsanteil
- Technische Seiten (Routen `/impressum`, `/datenschutz`, `/nutzungsbedingungen`, Platzhalter-Inhalte) sind von der juristischen Ausarbeitung unabhängig
- Schließt die technische Grundvoraussetzung für Rechtstexte; der juristische Inhalt folgt separat
- Keine Abhängigkeiten zu anderen offenen Paketen
- Aufwand: 24 Stunden (Technik), danach Rechtsanwalt für Inhalte
**Nicht enthalten in dieser Freigabe:** Juristisch geprüfte Texte für Impressum, Datenschutzerklärung, AGB. Diese bleiben als separate Betreiber-Aufgabe. oder als Paket:
**Nach dieser Freigabe:** Mini-Re-Audit P-01, dann Freigabe für Etappe B (P-06, P-11, P-13) als Paket oder einzeln. > „Freigabe zur Umsetzung Etappe B: P-06, P-11, P-13"
**Parallel dazu Betreiber-Aufgabe:**
Rechtsanwalt für die Ausarbeitung der Inhalte von P-01 beauftragen — dies ist eine Betreiber-Aufgabe, keine weitere technische Freigabe.
**Nach P-01 vollständig (Inhalte eingepflegt):** Gate 1 rückt näher — verbleibende Blocker: P-06, P-02 (Spez.), P-11, P-13, P-08 (Betreiber).
--- ---
@ -231,7 +238,7 @@ Folgende Bedingungen müssen **alle** erfüllt sein:
| Bedingung | Paket | Typ | | Bedingung | Paket | Typ |
|-----------|-------|-----| |-----------|-------|-----|
| Impressum und Datenschutzerklärung mit juristisch geprüftem Inhalt | P-01 | Code + Rechtsanwalt | | Impressum und Datenschutzerklärung mit juristisch geprüftem Inhalt | P-01 | ⚠️ Routen vorhanden — Inhalte durch Rechtsanwalt erforderlich |
| Upload-Einwilligungsdialog aktiv | P-06 | Code | | Upload-Einwilligungsdialog aktiv | P-06 | Code |
| DSGVO-Löschprozess spezifiziert (Spec akzeptiert, auch wenn nicht vollständig implementiert) | P-02 | Spezifikation | | DSGVO-Löschprozess spezifiziert (Spec akzeptiert, auch wenn nicht vollständig implementiert) | P-02 | Spezifikation |
| Legal-Hold-Status vorhanden | P-11 | Code | | Legal-Hold-Status vorhanden | P-11 | Code |
@ -333,8 +340,9 @@ Diese Punkte liegen außerhalb des Code-Scopes und erfordern organisatorische Ma
| Freigabe | Formulierung | Status | | Freigabe | Formulierung | Status |
|----------|-------------|--------| |----------|-------------|--------|
| ~~P-12 allein~~ | ~~„Freigabe zur Umsetzung P-12: sessionStorage bei Logout bereinigen"~~ | ✅ historisch abgeschlossen (Version 0.8.68) | | ~~P-12 allein~~ | ~~„Freigabe zur Umsetzung P-12: sessionStorage bei Logout bereinigen"~~ | ✅ historisch abgeschlossen (Version 0.8.68) |
| **P-01 allein (empfohlen)** | **„Freigabe zur Umsetzung P-01: Rechtstexte technisch anlegen"** | ⬅ nächste empfohlene Freigabe | | ~~P-01 technisch~~ | ~~„Freigabe zur Umsetzung P-01: Rechtstexte technisch anlegen"~~ | ✅ historisch abgeschlossen (Version 0.8.69) |
| Etappe B (nach P-01) | „Freigabe zur Umsetzung Etappe B: P-06, P-11, P-13" | offen | | **P-06 (empfohlen)** | **„Freigabe zur Umsetzung P-06: Upload-Einwilligungsdialog"** | ⬅ nächste empfohlene Freigabe |
| Etappe B komplett | „Freigabe zur Umsetzung Etappe B: P-06, P-11, P-13" | offen |
| P-02 Spezifikation | „Freigabe zur Spezifikation P-02: DSGVO-Self-Service-Prozess" | offen | | P-02 Spezifikation | „Freigabe zur Spezifikation P-02: DSGVO-Self-Service-Prozess" | offen |
--- ---