## 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` |
||
|---|---|---|
| .. | ||
| Actions | ||
| Console/Commands | ||
| Contracts | ||
| Enums | ||
| Events | ||
| Http | ||
| Jobs | ||
| Listeners | ||
| Models | ||
| Notifications | ||
| Policies | ||
| Providers | ||
| Services | ||