recht: Meldeverfahren v2 Phasen 1-4 — Re-Sync-Sperre, Anonymisierung, Magic-Link-Intake, Self-Service-Korrektur

Phase 1: sync_locked_at auf press_releases (Importer überspringt gesperrte
PMs auch bei --force), LegalRequest um Verifikation/Ausführung erweitert,
verschlüsselte Vorher-Snapshots mit Löschfrist (snapshots:purge, täglich).

Phase 2: AnonymizationService (Unicode-Wortgrenzen-Schwärzung, Pflicht-Diff,
transaktionale Ausführung mit Snapshot, Kontakt-Detach, Bild-Löschung,
Sitemap-Invalidierung, Verlauf ohne Klartext-Altwerte); Admin-Queue kann
DSGVO-Anfragen anonymisieren oder depublizieren, inkl. Snapshot-Restore.

Phase 3: Deflektions-Trichter „PM melden/ändern" (melden/pm) mit Kosten-
Tabelle vorab; Magic-Link geht nur an die hinterlegte Pressekontaktadresse
(neuer purpose press_release_report), atomare Verifikation, Anliegen-Auswahl
erzeugt verifizierte Queue-Anfragen; toter-Kanal-Fallback; Owner-Einstieg.

Phase 4: Panel-Abschnitt „Änderung & Korrektur" — Levenshtein-Gate (5 %,
Mini-Edit-Ausnahme ≤ 2 Zeichen) stuft klein/groß ein; kleine Korrektur
kostenlos sofort live (Snapshot, Sperre, Verlauf, Re-Score), größere als
Change-Anfrage (Interim bis 10-€-Checkout, Phase 7).

Entwicklungsplan mit Entscheidungen E1-E8 und offenen Punkten in
docs/Decision-Update; 41 Pest-Tests (tests/Feature/Legal) grün.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-22 15:56:34 +00:00
parent 021ee2d23c
commit 04b49c567d
42 changed files with 3868 additions and 1 deletions

View file

@ -31,4 +31,57 @@ return [
'contact_email' => env('LEGAL_CONTACT_EMAIL', 'info@pressekonto.com'),
/*
|--------------------------------------------------------------------------
| Meldeverfahren v2 (Entscheidungen E3–E5, 22.07.2026)
|--------------------------------------------------------------------------
|
| reversal_window_days: Zeitfenster, in dem eine Depublizierung/
| Anonymisierung über den Admin rückgängig gemacht werden kann.
|
| snapshot_retention_days: Löschfrist der verschlüsselten Vorher-
| Snapshots (press_release_redaction_snapshots, snapshots:purge).
|
| correction_max_distance_percent: maximale relative Levenshtein-
| Distanz pro Feld, bis zu der eine Selbstbedienungs-Korrektur als
| „klein/kostenlos" (Spur A) gilt; darüber → Spur D (kostenpflichtig).
|
*/
'reversal_window_days' => (int) env('LEGAL_REVERSAL_WINDOW_DAYS', 14),
'snapshot_retention_days' => (int) env('LEGAL_SNAPSHOT_RETENTION_DAYS', 30),
'correction_max_distance_percent' => (int) env('LEGAL_CORRECTION_MAX_DISTANCE_PERCENT', 5),
/*
|--------------------------------------------------------------------------
| Meldeverfahren: Magic-Link-Verifikation (Phase 3, E7)
|--------------------------------------------------------------------------
|
| report_link_ttl_hours: Gültigkeit des Verifikations-Links an die
| hinterlegte Pressekontaktadresse.
|
| report_session_minutes: Wie lange der verifizierte Bereich (Anliegen-
| Auswahl) nach Klick auf den Link nutzbar bleibt.
|
| report_links_per_day: Rate-Limit pro PM — mehr Link-Mails pro Tag
| gehen nicht raus (Schutz vor Fluten fremder Kontakt-Postfächer).
|
*/
'report_link_ttl_hours' => (int) env('LEGAL_REPORT_LINK_TTL_HOURS', 72),
'report_session_minutes' => (int) env('LEGAL_REPORT_SESSION_MINUTES', 60),
'report_links_per_day' => (int) env('LEGAL_REPORT_LINKS_PER_DAY', 3),
/*
|--------------------------------------------------------------------------
| Meldeverfahren: Spur A — Kleine Korrektur (Phase 4)
|--------------------------------------------------------------------------
|
| corrections_per_week: maximale Selbstbedienungs-Korrekturen pro PM in
| 7 Tagen — verhindert den kostenlosen Voll-Editor per Salami-Taktik.
|
*/
'corrections_per_week' => (int) env('LEGAL_CORRECTIONS_PER_WEEK', 1),
];