gigafibre-fsm/apps
louispaulb d961c57f9e Events: reminder ("Petit rappel") for non-registered invitees
- New reminder engine (events.js): reminderCandidates(eventId, sourceCampaignId)
  targets recipients from a past invitation send who haven't submitted an RSVP
  yet — covering both "never clicked" and "clicked but didn't register" — while
  excluding pending/failed/excluded rows. Returns a status breakdown (not
  opened / opened not clicked / clicked not registered) for preview before
  sending. reminderSend() creates+starts a new tracked campaign (reminder_of
  linking back to the source), reusing the same send worker with an
  isReminder flag.
- isReminder threads through inviteSubject (prefixes "Petit rappel — "/
  "Reminder — ") and inviteEmailFestive (adds a 🔔 badge above the title);
  exposed on invite-preview and test-send too so the look can be checked
  before a real reminder blast.
- New routes: GET /events/:id/campaigns (past sends for the picker),
  GET /events/:id/reminder-preview (count + breakdown + sample, no side
  effects), POST /events/:id/reminder-send.
- campaigns.js: listCampaigns() summary gains event_id/type/reminder_of
  (same read, no extra cost) and is now exported, so events.js can list an
  event's past campaigns without loading each one in full.
- EventsPage.vue: new "Rappel" tab in the send dialog — pick a source send,
  see the live count/breakdown/recipient list, confirm-to-send. Test tab
  gains a toggle to preview the reminder look via a real test-send.
- CampaignDetailPage.vue: "Ouvert le"/"Cliqué le" columns on the recipient
  table (shared by gift and event campaigns).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-24 09:56:15 -04:00
..
client security: harden payments/hub auth + remove leaked ERPNext token from source 2026-06-16 06:17:17 -04:00
field-tech feat(field-tech): app Capacitor native (geofence Transistorsoft + scan MLKit) + CI 2026-06-08 19:47:27 -04:00
ops Events: reminder ("Petit rappel") for non-registered invitees 2026-07-24 09:56:15 -04:00
portal fix(portal): deploy Vue SPA to portal.gigafibre.ca, retire client.gigafibre.ca 2026-04-22 15:02:31 -04:00
website Site: texte Actualités révisé + template courriel gift natif (FR) 2026-06-03 16:42:52 -04:00
website-vue portal(vue): fix stray space in prices ($39 .95 -> $39.95) 2026-07-07 06:48:18 -04:00