Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE] Envoi de l'email de creation de compte en asynchrone (PIX-15112) #10509

Merged

Conversation

bpetetot
Copy link
Contributor

@bpetetot bpetetot commented Nov 7, 2024

🍂 Problème

Quand un utilisateur créé un compte, si Brevo est down, l'envoi de l'email de "Création de compte" bloque l'appel HTTP de création de compte.

🌰 Proposition

La solution prise est de réaliser l'envoi de cet email via un Job afin que l'envoi de cet email soit asynchrone et ne bloque pas l'appel de création de compte. De plus, cela permet de bénéficier des stratégies de retry des jobs en cas d'indisponibilité de Brevo.

Nous profitons de cette modification pour mettre en place de nouvelles conventions autour de la création et l'envoi d'emails via l'API, afin d'étendre cette pratique aux autres emails transactionnels.

Voici les modifications apportées:

  1. Ajout d'une factory EmailFactory permettant l'instanciation d'un modèle d'Email.
  2. Le modèle Email est une représentation sérialisable des informations nécessaires à l'envoie d'un email.
  3. Le modèle Email porte la validation des informations nécessaires (template, from, to, subject...)
  4. Ce modèle est utilisé en entrée du emailRepository proposant 2 fonctions:
  • sendEmail(email: Email): Envoi un email de façon synchrone.
  • sendEmailAsync(email: Email): Envoi un email via un Job asynchrone.
  1. emailRepository pourra être utilisé dans tous les use-cases afin d'envoyer un email créé via l'EmailFactory
const emailFactory = new EmailFactory({ app: 'pix-app', locale });
const email = emailFactory.buildEmail({ to: ... });

await emailRepository.sendEmailAsync(email);

🎃 Remarques

Note

Ce type d'architecture permettra:

  1. Une migration progressive de tous les envois d'email existants en asynchrone.
  2. De faire évoluer facilement la factory (EmailFactory) afin de gérer les modèles de template dans la codebase au lieu de Brevo (et de le faire de manière progressive).

🪵 Pour tester

Important

Il faut désormais lancer les workers en local pour recevoir l'email de création de compte.
npm run start:worker (les logs seront à regarder dedans)

Création de compte utilisateur

Sur Pix.fr:

  1. Créer un compte
  2. Vérifier que l'email est bien reçu et correctement formaté

Sur Pix.org

  1. Créer un compte et changer la langue
  2. Vérifier que l'email est bien reçu et correctement formaté

Création de compte utilisateur avec réconciliation

Note

A faire en RA tant que le correctif correspondant n'est pas mergé #10537

  1. Rejoindre une campagne SCO sur la RA de Pix App https://app-pr10509.review.pix.fr/campagnes/SCOBADGE1/presentation
  2. Cliquer sur le bouton Je commence et remplir le formulaire avec un élève n'ayant pas de méthodes de connexion (ex: Harry Potter 12/12/2012)
  3. Sélection Je m'inscris avec mon adresse e-mail et remplir les champs concernées
  4. Soumettre le formulaire et vérifier que l'email et bien reçu et correctement formaté !

@pix-bot-github
Copy link

Une fois les applications déployées, elles seront accessibles via les liens suivants :

Les variables d'environnement seront accessibles via les liens suivants :

@bpetetot bpetetot changed the base branch from dev to pix-15112-isolate-i18n-module November 7, 2024 14:14
@bpetetot bpetetot force-pushed the pix-15112-make-account-creation-email-async branch 5 times, most recently from 6897674 to 4093c74 Compare November 7, 2024 16:11
@bpetetot bpetetot changed the title [BUGFIX] Envoie de l'email de creation de compte en asynchrone (PIX-15112) [FEATURE] Envoie de l'email de creation de compte en asynchrone (PIX-15112) Nov 7, 2024
@bpetetot bpetetot marked this pull request as ready for review November 7, 2024 16:23
@bpetetot bpetetot requested a review from a team as a code owner November 7, 2024 16:23
@bpetetot bpetetot force-pushed the pix-15112-isolate-i18n-module branch from 97c0470 to 03913a6 Compare November 8, 2024 09:23
@bpetetot bpetetot requested review from a team as code owners November 8, 2024 09:23
@bpetetot bpetetot force-pushed the pix-15112-isolate-i18n-module branch from 03913a6 to 819fa1e Compare November 8, 2024 13:40
@bpetetot bpetetot force-pushed the pix-15112-isolate-i18n-module branch from 819fa1e to 46de473 Compare November 12, 2024 13:47
@bpetetot bpetetot force-pushed the pix-15112-isolate-i18n-module branch 2 times, most recently from 923151c to 0e0cadc Compare November 12, 2024 14:44
@pix-service-auto-merge pix-service-auto-merge force-pushed the pix-15112-isolate-i18n-module branch from 0e0cadc to 2279f21 Compare November 12, 2024 14:58
Base automatically changed from pix-15112-isolate-i18n-module to dev November 12, 2024 15:21
@bpetetot bpetetot force-pushed the pix-15112-make-account-creation-email-async branch 2 times, most recently from bbfce4b to a51322c Compare November 12, 2024 16:01
@clemlatz clemlatz changed the title [FEATURE] Envoie de l'email de creation de compte en asynchrone (PIX-15112) [FEATURE] Envoi de l'email de creation de compte en asynchrone (PIX-15112) Nov 12, 2024
Copy link
Contributor

@EmmanuelleBonnemay EmmanuelleBonnemay left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lu et testé avec succès

Copy link
Contributor

@er-lim er-lim left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lu et testé en local pour la partie inscription et en RA sur firefox pour la partie création et réconciliation ✅

Aussi détaillé la procédure pour tester cette partie là 😄

@pix-service-auto-merge pix-service-auto-merge force-pushed the pix-15112-make-account-creation-email-async branch from a51322c to 295efe3 Compare November 14, 2024 13:03
@pix-service-auto-merge pix-service-auto-merge merged commit 1854e7f into dev Nov 14, 2024
9 checks passed
@pix-service-auto-merge pix-service-auto-merge deleted the pix-15112-make-account-creation-email-async branch November 14, 2024 13:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants