The reminder previously always targeted everyone not yet registered as one
fixed group. Staff can now pick which engagement segments to include:
- reminderCandidates()/reminderSend() (events.js) accept an optional
`segments` filter (subset of sent/opened/clicked, matching the original
invitation's per-recipient status). `breakdown` always reports the FULL
unfiltered counts so the UI can show each checkbox's true count
regardless of what's checked; `candidates`/`count` reflect the filter —
what actually gets sent.
- New routes accept it: GET reminder-preview?segments=a,b and POST
reminder-send {segments:[...]}.
- EventsPage.vue Rappel tab: the flat breakdown chips became checkboxes
(all checked by default = prior behavior), with a live target count and
a client-side-filtered recipient preview.
- CampaignDetailPage.vue: new "Relancer les non-inscrits" button for any
event-type send — same checkbox/count/confirm flow in a compact dialog,
without leaving the campaign page. Targets that campaign directly (no
source picker needed, unlike the Events-page flow which can target any
past send for the event).
Verified live: segment-filtered preview against the real production
campaign (2,295 total non-registered -> 708 when limited to opened+clicked,
correctly excluding the 1,587 who never opened).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>