gip-inclusion / rdv-insertion

Application permettant de fluidifier le parcours d’accompagnement social et professionnel sur les territoires
https://www.rdv-insertion.fr
13 stars 4 forks source link

feat(webhooks): Retrieve user organisations when creating it from rdvsp #2369

Open aminedhobb opened 5 days ago

aminedhobb commented 5 days ago

⚠️ Cette PR est liée et doit être mergée après la PR associée sur rdv-sp : https://github.com/betagouv/rdv-service-public/pull/4674

closes #2244

Contexte

Dans certains cas, lorsqu'un usager créé depuis rdvsp a un rdv placé sur une organisation présente dans rdv-insertion, pour une catégorie de motif gérée par l'organisation dans rdv-insertion, nous importons le rdv ainsi que l'usager sur rdv-insertion. Cependant, lorsque l'on crée l'usager sur rdv-i, on le lie uniquement à l'organisation du rdv en question. Or cet usager peut potentiellement déjà appartenir à plusieurs organisations déjà présentes sur rdv-i. Ainsi il en résulte un problème de synchronisation:

Implémentation

Première tentative

Une première implémentation consistait à envoyer un webhook depuis rdvsp contenant les ids des organisations, mais cela a finalement été abandonné au profit d'un endpoint spécifique à rdv-i où l'on récupère l'usager avec toutes ses organisations rdv-insertion. Les détails de peuvent être retrouvées sur la PR associée sur rdv-service-public

Nouvelle tentative

Du coup nous appelons ce nouvel endpoint lorsque nous devrons créer un usager lors du process d'un webhook de rdv. Pour cela j'introduis un nouveau service RdvSolidaritesApi::RetrieveUser chargé d'appeler et traiter la réponse de ce nouvel endpoint côté rdvsp.

Développement annexe

Pour appeler rdvsp depuis le job, il faut définir un Current.agent pour que Current.rdv_solidarites soit défini. J'encapsule cette logique dans une méthode d'instance agent#with_rdv_solidarites_client et l'appelle dans les endroits du code où on settait manuellement un Current.agent.