Les parents sans compte peuvent annoncer leur venue à une réunion - #48
Merged
Conversation
Les réunions sont ouvertes aux familles depuis qu'elles paraissent sur le site, mais seuls les membres connectés pouvaient dire s'ils venaient : sur la page publique d'une réunion, un parent ne trouvait qu'un lien « poser une question ». Il peut maintenant répondre depuis cette page. Une seule table pour les deux populations. `meeting_attendance.user_id` devient facultatif et la ligne porte alors le nom, l'e-mail et le téléphone saisis ; une contrainte garantit qu'une réponse dit toujours qui vient. Deux tables auraient obligé chaque comptage à faire une union, et un oubli quelque part aurait fait disparaître des présents de la liste. Le formulaire public ne propose que « je serai là » et « peut-être » : un parent qui ne compte pas venir ferme la page, il ne remplit pas un formulaire pour le dire. Se décommander passe par le lien de l'e-mail de confirmation, qui rejoint la page d'annulation existante — le parent n'a qu'un lien au bas d'un message et ne sait pas de quelle table il relève. Revenir sur sa réponse marche aussi bien que la donner : un même e-mail met sa ligne à jour au lieu de buter sur « déjà répondu », car celui qui recoche n'a le plus souvent pas gardé l'e-mail de confirmation. Un membre connecté qui répond depuis la page publique est reconnu : sa réponse est rattachée à son compte plutôt qu'ajoutée en double sous son nom saisi. Rien ne change côté confidentialité : la liste des présents reste derrière une session, et la page publique enregistre une réponse sans en montrer aucune autre. Dans le tableau de bord, les parents venus par le lien public sont marqués « invité » pour qu'on ne les cherche pas dans l'annuaire. Au passage, les fonds des réponses sélectionnées passent deux crans plus foncés dans la palette : du blanc sur sea-500 tombait à 2,89:1 et sur sand-500 à 3,31:1, sous le seuil AA pour du texte de cette taille. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014SfQYBU4xXTeSEHKhHQXdD
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Les réunions paraissent sur le site depuis #46, mais seuls les membres connectés pouvaient dire s'ils venaient : sur la page publique d'une réunion, un parent ne trouvait qu'un lien « poser une question ». Il peut maintenant répondre depuis cette page.
Ce qui change
Page publique d'une réunion — un formulaire « Vous venez ? » remplace les deux boutons d'aiguillage. Deux réponses seulement, « Je serai là » (présélectionné) et « Peut-être » : un parent qui ne compte pas venir ferme la page, il ne remplit pas un formulaire pour le dire. Nom, e-mail, téléphone, consentement — les mêmes champs qu'une inscription bénévole, avec pot de miel et reCAPTCHA. Les liens « Poser une question » et « Rejoindre l'association » restent en dessous.
Une seule table —
meeting_attendance.user_iddevient facultatif et la ligne porte alors les coordonnées saisies ; une contrainteCHECKgarantit qu'une réponse dit toujours qui vient. Deux tables auraient obligé chaque comptage à faire une union, et un oubli quelque part aurait fait disparaître des présents de la liste.Revenir sur sa réponse marche aussi bien que la donner : un même e-mail met sa ligne à jour (index unique partiel sur
lower(email)) au lieu de buter sur « déjà répondu », car celui qui recoche n'a le plus souvent pas gardé l'e-mail de confirmation. Un membre connecté qui répond depuis la page publique est reconnu : sa réponse est rattachée à son compte plutôt qu'ajoutée en double sous son nom saisi.Se décommander passe par le lien de l'e-mail de confirmation, qui rejoint la page
/annulation/[token]existante — le parent n'a qu'un lien au bas d'un message et ne sait pas de quelle table il relève, donc le même point d'entrée traite les deux.Tableau de bord — les parents venus par le lien public apparaissent dans les trois colonnes de l'onglet Présences, marqués « invité » pour qu'on ne les cherche pas dans l'annuaire des membres.
Au passage — les fonds des réponses sélectionnées passent deux crans plus foncés dans la palette : du blanc sur
sea-500tombait à 2,89:1 et sursand-500à 3,31:1, sous le seuil AA pour du texte de cette taille. Mesuré après correction : 6,17:1 et 6,63:1.Confidentialité
Inchangée. La liste des présents reste derrière une session ; la page publique enregistre une réponse sans en montrer aucune autre. Vérifié : les noms et e-mails des répondants n'apparaissent dans le HTML ni de
/, ni de la page de partage de la réunion, ni de/rejoindre.Vérifications
Sur une instance réelle (PostgreSQL 16,
next build+next start, navigateur réel) :🤖 Generated with Claude Code
https://claude.ai/code/session_014SfQYBU4xXTeSEHKhHQXdD
Generated by Claude Code