Skip to content

E-mails et notifications ​

L'API prévient les gens de deux façons : la cloche du site et de l'application (les notifications), et les e-mails. Une notification est toujours envoyée aussi par e-mail, et les deux disent la même chose.

Les notifications ​

Une notification dit à quelqu'un ce qu'une autre personne a fait sur ses heures.

Type (kind)QuandLien
hours_changedun manager a créé, modifié ou supprimé une de ses journées« My Changes »
correction_reviewedsa demande de correction a été acceptée ou refuséeClocking
absence_recordedune absence a été enregistrée pour luises heures

Jamais sa propre action

Personne n'est prévenu de ce qu'il a fait lui-même : la clause notify(%User{id: id}, %User{id: id}, …) (même personne des deux côtés) ne fait rien. Et une correction acceptée ne déclenche qu'un avis (« demande acceptée »), pas un second « tes heures ont changé ».

Enregistrée, puis envoyée ​

Notifications.notify/5 :

  1. enregistre la notification dans notifications, une fois l'action sauvegardée ;
  2. l'envoie par e-mail, dans la langue de la personne.

Si l'e-mail échoue (service indisponible), l'échec est noté dans le journal du serveur, mais rien n'est annulé : la modification des heures et la notification restent. Un e-mail perdu ne doit pas faire échouer le travail d'un manager.

Lire la cloche ​

RouteEffet
GET /api/notificationsles 30 plus récentes, de la personne connectée seulement
PUT /api/notifications/readles marque toutes lues (read_at)

Il n'y a pas d'identifiant de personne dans ces routes : on ne voit et ne lit jamais que les siennes.

Les e-mails ​

E-mailQuandÀ qui
Invitationle GM crée un comptela personne invitée (lien de 7 jours)
Mot de passe oubliéPOST /api/auth/forgot-passwordle compte (lien d'1 heure)
Mot de passe changéaprès un changementle compte : s'il n'en est pas l'auteur, il le sait tout de suite
Confirmer une nouvelle adressele GM demande à changer d'e-mailla nouvelle adresse (lien d'1 heure)
Adresse changéele lien a été ouvertl'ancienne adresse
Notificationvoir plus hautla personne concernée

Une seule mise en page ​

Tous les e-mails passent par EmailLayout : un titre, une salutation, des paragraphes, un bouton facultatif, une note, et le même pied de page. Chaque e-mail existe en deux versions : HTML, et texte brut pour les messageries et les lecteurs d'écran qui n'affichent pas le HTML. Ajouter un e-mail revient donc à écrire son contenu, jamais sa mise en forme (UserNotifier).

Où partent-ils ? ​

EnvironnementEnvoi
Productionpar Brevo (BREVO_API_KEY, voir les variables)
Développementnulle part : ils s'affichent sur http://localhost:4000/dev/mailbox
Testsnulle part : les tests vérifient qu'ils ont été « envoyés » (assert_email_sent)

Les fichiers ​

FichierRôle
lib/timemanager/notifications.exce qui déclenche une notification, enregistrement et envoi
lib/timemanager/notifications/text.exla phrase de chaque notification
lib/timemanager/accounts/user_notifier.exle contenu de chaque e-mail
lib/timemanager/accounts/email_layout.exla mise en page commune, HTML et texte
lib/timemanager/mailer.exl'envoi (Swoosh)