- getCampaignRecipients: EXISTS-Subquery statt Cross-Join verhindert Mehrfachversand - updateCampaign: SELECT vor UPDATE unterscheidet 'nicht gefunden' (404) von 'nicht im Draft' (400) - campaigns-api.test.ts: describe.skip entfernt, Mocks für DB-Abhängigkeiten ergänzt Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>