betagouv / rdv-service-public

Prise de RDV pour les services publics
https://rdv.anct.gouv.fr
GNU Affero General Public License v3.0
19 stars 3 forks source link

ActiveRecord::RecordNotFound: Couldn't find Rdv with 'id'=3508010 [WHERE ("rdvs"."id" IN (SELECT "rdvs"."id" FROM "rdvs" INNER ... #4636

Open sentry-sentry-incubateur-net[bot] opened 2 months ago

sentry-sentry-incubateur-net[bot] commented 2 months ago

Il y a un nombre non négligeable de 404 sur les pages users/rdvs#show (+ de 100 par mois)

Une bonne partie de ces erreurs provient de la page de vérification des initiales (visible via le referer dans Sentry Discover)

Il s’agit probablement de rendez-vous qui ont été supprimés par un agent entre le moment où ils ont été pris depuis RDVI avec le SMS envoyé et le moment où l’usager accède au lien.

C’est une mauvaise expérience utilisateur, l’usager voit "Page introuvable" sans plus d’infos.

On pourrait par exemple toujours afficher un message plus spécifique sur cette 404 : « le RDV auquel vous essayez d’accéder n’existe pas ou n’existe plus. Un agent l’a probablement annulé » ou qqch comme ça

On pourrait aussi probablement ignorer ces 404 et ne pas les lever à Sentry du tout, c’est un cas normal.

Sentry Issue: LAPINS-1D4

ActiveRecord::RecordNotFound: Couldn't find Rdv with 'id'=3508010 [WHERE ("rdvs"."id" IN (SELECT "rdvs"."id" FROM "rdvs" INNER JOIN "participations" ON "participations"."rdv_id" = "rdvs"."id" INNER JOIN "users" ON "users"."id" = "participations"."user_id" INNER JOIN "motifs" ON "motifs"."id" = "rdvs"."motif_id" WHERE ("users"."id" = $1 OR "users"."deleted_at" IS NULL AND "users"."responsible_id" = $2) AND "motifs"."visibility_type" IN ($3, $4)) OR "rdvs"."id" IN (SELECT "rdvs"."id" FROM "rdvs" INNER JOIN "motifs" ON "motifs"."id" = "rdvs"."motif_id" WHERE "motifs"."collectif" = $5 AND "motifs"."bookable_by" IN ($6, $7)))] (ActiveRecord::RecordNotFound)
  app/controllers/users/rdvs_controller.rb:112:in `set_rdv'
    @rdv = policy_scope(Rdv).find(params[:id])
  config/initializers/cookie_overflow_notify.rb:10:in `call'
    @app.call(env)
  config/initializers/fallback_error_middleware.rb:8:in `call'
    response = @app.call(env)
...
(245 additional frame(s) were not displayed)
francois-ferrandis commented 2 months ago

Il s’agit probablement de rendez-vous qui ont été supprimés par un agent entre le moment où ils ont été pris depuis RDVI avec le SMS envoyé et le moment où l’usager accède au lien.

@adipasquale Je suis retombé sur une issue qui date d'avirl 2023 où j'identifie une autre cause pour ces 404 : les RDVs invisibles. https://github.com/betagouv/rdv-service-public/issues/3473