FEAT-760: Différenciation entre inscriptions validées, validées ayant besoin d’être mises à jour, et non complètes + FEAT-127: Email de confirmation d’inscription

📃 TICKET NOTION 📃

Summary

  • First-validation latch: Registration now persists firstValidatedAt (set once, cleared on unregister, backfilled by migration) as the single source of truth for validity, replacing recomputed everythingIsOk checks across the stack.
  • Three-way registration status: cockpit stats and participant lists now distinguish complete / stale / incomplete — new cockpit breakdown, warning-highlighted rows, ✔️ in the Inscrit·e column, "Première validation" CSV export column; volunteering stats count complete + stale.
  • Confirmation email: participants receive an email the first time their registration becomes valid (fire-and-forget on save), with an improved template; re-registering after unregistering re-sends it.
  • Unified validity rules across stacks: validity predicates extracted and mirrored between API and both frontends (same checkFirstSlot/checkForm/checkTicketing shape, moved to shared/utils), slot utilities homogenized, and slot validation made stricter (start must be strictly before end).
Edited by JulesLecuir

Merge request reports

Loading
Loading