whisper-money/app/Enums
Víctor Falcón 934d834ab3
feat(email): follow up after post-onboarding AI consent (#596)
## What

Adds a lifecycle email sent **2 days after a user records AI consent**,
but only when that consent was given **outside of onboarding** — i.e.
more than 3 days after sign-up. This targets users who deliberately
opted into AI later (e.g. via the billing toggle / transactions banner
gated by the `AiConsentSettings` flag), not those who consented during
initial setup.

## How

- **`email:ai-consent-follow-up`** scheduled command (daily, 10:15
Europe/Madrid) selects active consents accepted exactly 2 days ago,
skips onboarding-era ones (`accepted_at <= created_at + 3 days`), and
queues a job per user.
- **`SendAiConsentFollowUpEmailJob`** sends the mailable and records a
`UserMailLog`. Dedup, locale and the queued-email plumbing all reuse the
existing drip system — **no migration**.
- Email is localised automatically via the user's `HasLocalePreference`,
like every other drip email.

## Design notes

- **Scheduled command, not a 2-day delayed job** — survives worker
restarts and respects consent revoked in the meantime.
- **Exact "2 days ago" window**, matching the existing paywall drip. If
the scheduler misses a day that cohort isn't retried; kept consistent
with the other drips on purpose.
- Copy is a first draft — open to wording tweaks.

## Tests

`tests/Feature/SendAiConsentFollowUpEmailsCommandTest.php` — 9 tests
covering the happy path, onboarding exclusion (incl. the exact-3-days
boundary), timing window, revoked consent, the disabled-drip gate,
single-send + mail log, no-resend, and locale rendering. All green, Pint
clean.
2026-06-26 17:56:06 +00:00
..
AccountType.php feat(connections): manage which accounts a bank connection syncs (#558) 2026-06-18 16:22:49 +02:00
AnalysisMode.php feat(analysis): project-aware transaction analysis (#513) 2026-06-09 15:32:07 +02:00
BankingConnectionStatus.php feat: Integrate EnableBanking as open banking provider (#106) 2026-02-12 09:09:28 +01:00
BankingProvider.php feat(banking): add Interactive Brokers sync via Flex Web Service (#581) 2026-06-23 11:39:24 +02:00
BankingSyncLogStatus.php fix(banking): retry failed sync connections and log every sync attempt (#251) 2026-03-31 11:34:35 +01:00
BudgetPeriodType.php Add yearly budget period (#384) 2026-05-12 13:35:25 +02:00
CategoryCashflowDirection.php feat(cashflow): track transfer categories in trends (#236) 2026-03-18 14:02:47 +00:00
CategoryColor.php Add category type field support (#2) 2025-12-01 20:19:47 +01:00
CategoryDeletionStrategy.php feat: parent/child category tree (#474) 2026-06-03 19:30:12 +02:00
CategorySource.php feat(ai): auto-categorize transactions with AI (behind flag) (#535) 2026-06-15 16:35:20 +02:00
CategoryType.php feat(cashflow): add savings and period views (#424) 2026-05-25 16:41:00 +02:00
ChartColorScheme.php Add chart color scheme setting (#101) 2026-02-28 12:58:21 +01:00
DripEmailType.php feat(email): follow up after post-onboarding AI consent (#596) 2026-06-26 17:56:06 +00:00
IntegrationRequestStatus.php feat(integration-requests): markdown comments and in-progress status (#553) 2026-06-18 08:36:43 +00:00
LabelColor.php feat: add transaction labels feature (#24) 2025-12-13 13:02:19 +01:00
LeadCohort.php feat(leads): cohort-based launch invitations with per-user Stripe coupons (#333) 2026-04-30 15:10:28 +01:00
Locale.php refactor: centralize duplicated provider & locale keys into enums (#543) 2026-06-16 13:43:14 +00:00
PlanFeature.php feat(ai): suggest automation rules during onboarding (#523) 2026-06-13 22:51:15 +02:00
PropertyType.php feat(accounts): add real estate asset tracking (#241) 2026-03-24 10:21:32 +00:00
RolloverType.php Add Budgeting Feature to Track and Manage Spending (#36) 2026-01-21 15:25:50 +01:00
RuleOrigin.php feat(ai): auto-categorize transactions with AI (behind flag) (#535) 2026-06-15 16:35:20 +02:00
RuleSuggestionStatus.php feat(ai): suggest automation rules during onboarding (#523) 2026-06-13 22:51:15 +02:00
SuggestionRunStatus.php feat(ai): suggest automation rules during onboarding (#523) 2026-06-13 22:51:15 +02:00
TransactionSource.php feat: add Wise open banking integration with balance sync (#525) 2026-06-16 13:23:25 +00:00