privacy: Löschfristen für Aktivitätsverlauf (395 Tage) und API-Zugriffsprotokoll (90 Tage)

Beide Tabellen hatten keine Frist; activity_events trägt Namen und Adressen
im Klartext, api_usage_logs IP und User-Agent. MassPrunable, täglich 04:05
über model:prune, Fristen in config/monitoring.php (Roadmap 4.2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-10-09 13:35:54 +00:00
parent d1b9ffdcf1
commit 002dc08b5c
5 changed files with 127 additions and 4 deletions

View file

@ -21,6 +21,8 @@ use App\Console\Commands\PurgeRedactionSnapshots;
use App\Console\Commands\RefreshMarketData;
use App\Console\Commands\ResetMonthlyPressReleaseQuota;
use App\Console\Commands\SweepOrphanPressReleaseOriginals;
use App\Models\ActivityEvent;
use App\Models\ApiUsageLog;
use App\Models\ContactMessage;
use App\Models\FailedLoginTally;
use App\Support\OperationalAlert;
@ -259,13 +261,15 @@ Schedule::command(MonitoringHeartbeat::class)
->onFailure($alertOnFailure('monitoring:heartbeat'));
// Tageszähler fehlgeschlagener Anmeldungen nach der Löschfrist entfernen
// (täglich 04:05, config monitoring.failed_logins.retention_days) und
// Spam-Quarantäne des Kontaktformulars nach 30 Tagen (Spamschutz B3).
Schedule::command('model:prune', ['--model' => [FailedLoginTally::class, ContactMessage::class]])
// (täglich 04:05, config monitoring.failed_logins.retention_days),
// Spam-Quarantäne des Kontaktformulars nach 30 Tagen (Spamschutz B3),
// Aktivitäts-Verlauf nach 395 und API-Zugriffsprotokoll nach 90 Tagen
// (config monitoring.retention, Roadmap 4.2).
Schedule::command('model:prune', ['--model' => [FailedLoginTally::class, ContactMessage::class, ActivityEvent::class, ApiUsageLog::class]])
->dailyAt('04:05')
->withoutOverlapping(30)
->runInBackground()
->onFailure($alertOnFailure('model:prune failed_login_tallies, contact_messages'));
->onFailure($alertOnFailure('model:prune failed_login_tallies, contact_messages, activity_events, api_usage_logs'));
// Fehlgeschlagene Jobs nach 30 Tagen entfernen (täglich 03:55). Bis dahin
// sind sie im Systemstatus sichtbar und per `queue:retry` wiederholbar.