R0.3: Newsletter-Sync-Binding config-aware + ehrliche Test-Sync-Meldung

Bisher wurde der NullNewsletterSyncClient unbedingt gebunden -
NEWSLETTER_SYNC_ENABLED=true mit echtem Provider haette stumm nichts
getan. Jetzt: Platzhalter-Provider -> No-Op-Client, aktivierter aber
nicht implementierter Provider -> RuntimeException (fail fast). Das
Admin-UI weist beim Test-Sync auf den Platzhalter hin.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-03 07:55:35 +00:00
parent f02adf1e0c
commit c678e3a21f
3 changed files with 44 additions and 1 deletions

View file

@ -44,7 +44,20 @@ class AppServiceProvider extends ServiceProvider
*/
public function register(): void
{
$this->app->bind(NewsletterSyncClient::class, NullNewsletterSyncClient::class);
$this->app->bind(NewsletterSyncClient::class, function (): NewsletterSyncClient {
$provider = (string) config('newsletter.sync.provider', 'placeholder');
// Es existiert bislang nur der No-Op-Client. Ein aktivierter, aber
// nicht implementierter Provider soll laut schlagen statt stumm
// ins Leere zu synchronisieren.
if (config('newsletter.sync.enabled') && $provider !== 'placeholder') {
throw new \RuntimeException(
"Newsletter-Sync-Provider [{$provider}] ist nicht implementiert – es existiert nur der Platzhalter-Client."
);
}
return new NullNewsletterSyncClient;
});
$this->app->singleton(PressReleaseService::class);
$this->app->singleton(AdminRequestPerformanceMetrics::class);
}