## Summary - Adds `leads:retry-failed-jobs` artisan command to selectively retry failed `emails`-queue jobs after a Resend rate-limit incident - Retries jobs for verified leads and `VerifyUserLeadEmailNotification` for unverified leads; forgets jobs for deleted leads (DDoS cleanup) or unverified leads receiving waitlist emails - Adds `deleteWhenMissingModels = true` to all lead mail/notification classes so future jobs for deleted leads are silently discarded instead of failing ## Usage ```bash # Preview (no changes) php artisan leads:retry-failed-jobs --dry-run # Execute php artisan leads:retry-failed-jobs ``` ## Test plan - [x] `leads:retry-failed-jobs` forgets jobs for deleted leads - [x] `leads:retry-failed-jobs` retries jobs for verified leads - [x] `leads:retry-failed-jobs` forgets waitlist jobs for unverified leads - [x] `leads:retry-failed-jobs` retries `VerifyUserLeadEmailNotification` for unverified leads - [x] `leads:retry-failed-jobs` handles mixed job types correctly - [x] `--dry-run` does not modify `failed_jobs` |
||
|---|---|---|
| .. | ||
| VerifyEmailNotification.php | ||
| VerifyUserLeadEmailNotification.php | ||