- K-01: publish-scheduled filtert manual_review_required_at; publish() prüft für ki/scheduler unter der Sperre (ManualReviewRequiredException) - K-02: Kontingent- und Bildsperre sind fachliche Ausgänge (Exit 0, einmaliger Verlaufseintrag); KI-Job ohne Retry bei Bildsperre - O06: Kandidaten per Cursor (scheduled_at, id), Limit zählt bearbeitete Meldungen, Blockaden nur ein Scan-Budget - K-05: KI-Job lädt vor dem Routing neu, überholter Status ohne Retry; backoff - K-06: Admin-Aktionen mit Permission-Prüfung und Fehlermeldung statt 500 - K-09: withoutOverlapping() mit kurzer Sperrdauer, purge-events 03:50, neuer Wochenlauf press-release-images:sweep-orphan-originals (So 04:45) - E9: NEWSLETTER_SENDING_ENABLED (Standard aus) sperrt Start, Resume und Job - OPT-9: ExpireGrandfathering prüft die Queue-Voraussetzung aus E18 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
30 lines
1.2 KiB
PHP
30 lines
1.2 KiB
PHP
<?php
|
||
|
||
return [
|
||
/*
|
||
* Kampagnen-Versand (E9, Umsetzungsaudit 29.09.2026): Standard aus, bis
|
||
* U05–U07 umgesetzt sind. Solange aus, verweigern CampaignSender::start(),
|
||
* die Admin-UI, `newsletter:resume` und bereits eingereihte Versand-Jobs
|
||
* den Versand. Abmeldung, Sperrliste und Test-Mails sind nicht betroffen.
|
||
*/
|
||
'sending_enabled' => (bool) env('NEWSLETTER_SENDING_ENABLED', false),
|
||
|
||
'sync' => [
|
||
'enabled' => env('NEWSLETTER_SYNC_ENABLED', false),
|
||
'provider' => env('NEWSLETTER_SYNC_PROVIDER', 'placeholder'),
|
||
'endpoint' => env('NEWSLETTER_SYNC_ENDPOINT'),
|
||
'api_key' => env('NEWSLETTER_SYNC_API_KEY'),
|
||
'timeout' => (int) env('NEWSLETTER_SYNC_TIMEOUT', 10),
|
||
],
|
||
|
||
/*
|
||
* Drosselung des Kampagnen-Versands: Mails gehen in Wellen von
|
||
* `batch_size` Stück im Abstand von `batch_interval_minutes` raus,
|
||
* damit der SMTP-Provider (All-Inkl) nicht limitiert und die Domain
|
||
* nicht auf Spam-/Blocklisten landet.
|
||
*/
|
||
'campaign' => [
|
||
'batch_size' => (int) env('NEWSLETTER_CAMPAIGN_BATCH_SIZE', 50),
|
||
'batch_interval_minutes' => (int) env('NEWSLETTER_CAMPAIGN_BATCH_INTERVAL_MINUTES', 15),
|
||
],
|
||
];
|