diff --git a/docs/compliance-implementation.md b/docs/compliance-implementation.md index bd6a813..482c5d1 100644 --- a/docs/compliance-implementation.md +++ b/docs/compliance-implementation.md @@ -3,12 +3,51 @@ **Erstellt:** 2026-05-09 **Zuletzt aktualisiert:** 2026-05-10 **Audit-Basis:** `docs/compliance-audit.md` -**App-Version nach Umsetzung:** 0.8.68 +**App-Version nach Umsetzung:** 0.8.69 --- ## 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` → `` +- `/datenschutz` → `` +- `/nutzungsbedingungen` → `` +- `/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 ✅ **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_media_assets_copyright_promotion.py 7 passed (gehärtet, P-04) tests/test_security_release.py 9 passed (inkl. 2 P-07-Tests) 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 → Pre-existing: benötigt laufenden PostgreSQL-Container (Hostname "postgres") → 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 -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 2. **P-04**: Manuell: PATCH privates Medium auf `official` ohne `copyright_notice` → muss 400 liefern diff --git a/docs/compliance-package-register.md b/docs/compliance-package-register.md index e67e29f..2be46c4 100644 --- a/docs/compliance-package-register.md +++ b/docs/compliance-package-register.md @@ -3,7 +3,7 @@ **Typ:** Kanonisches Referenzdokument **Erstellt:** 2026-05-10 **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) | | **Findings** | KRIT-01 | | **Etappe** | 1 | -| **Status** | ❌ open | -| **Letzter Stand** | Nicht umgesetzt. Technische Routen fehlen. Inhalt durch Rechtsanwalt erforderlich. | -| **Verweise** | `docs/compliance-audit.md` §14.2, §17, §19.1 | -| **Hinweise** | Keine Nummerierungsabweichung in nachgelagerten Dokumenten festgestellt. | +| **Status** | ⚠️ partially implemented | +| **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; `docs/compliance-implementation.md` §P-01; `frontend/src/pages/LegalPage.jsx` | +| **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 | |----|------------------|--------|----------|--------| -| 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-03 | Papierkorb-Retention-Job aktivieren | 1 | KRIT-07 | ✅ implemented | | P-03b | _Nacharbeit:_ Retention-Zeiten mit Löschkonzept abgleichen | — | — | ✅ implemented | @@ -423,9 +423,10 @@ ## 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) -**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 -**App-Version bei letzter Aktualisierung:** 0.8.68 +**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) +**Teilweise implementiert:** P-01 (technischer Teil; juristische Inhalte offen) — 1 Paket +**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 --- diff --git a/docs/compliance-roadmap.md b/docs/compliance-roadmap.md index fd9f0c8..06bbc96 100644 --- a/docs/compliance-roadmap.md +++ b/docs/compliance-roadmap.md @@ -2,7 +2,7 @@ **Typ:** Lebendes Steuerungsdokument **Erstellt:** 2026-05-10 -**App-Version:** 0.8.68 +**App-Version:** 0.8.69 **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) -### 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 | |----|-------|---------| @@ -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-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 @@ -74,8 +81,9 @@ Die folgenden Pakete sind vor der Freigabe für allgemeine öffentliche Registri ### Blocker 1 — P-01: Rechtstexte **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. -**Abhängigkeit:** Technische Seiten können sofort angelegt werden (Platzhalter). Inhalt erfordert Rechtsanwalt. +**Technischer Stand:** ⚠️ Routen und Platzhalterseiten vorhanden (Version 0.8.69). Juristische Inhalte fehlen noch. +**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 @@ -205,21 +213,20 @@ Erst wenn diese Fragen beantwortet und als Spec dokumentiert sind, wird P-02 in ## 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:** -- 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: 2–4 Stunden (Technik), danach Rechtsanwalt für Inhalte +> „Freigabe zur Umsetzung P-06: Upload-Einwilligungsdialog" -**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 | |-----------|-------|-----| -| 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 | | DSGVO-Löschprozess spezifiziert (Spec akzeptiert, auch wenn nicht vollständig implementiert) | P-02 | Spezifikation | | 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 | |----------|-------------|--------| | ~~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 | -| Etappe B (nach P-01) | „Freigabe zur Umsetzung Etappe B: P-06, P-11, P-13" | offen | +| ~~P-01 technisch~~ | ~~„Freigabe zur Umsetzung P-01: Rechtstexte technisch anlegen"~~ | ✅ historisch abgeschlossen (Version 0.8.69) | +| **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 | ---