Skip to main content

Troubleshooting & Reference · Article 7.17

« Mon client a reçu un e-mail de rappel mais il avait déjà payé »

Condition de concurrence rare — rappel envoyé quelques instants avant que la confirmation de paiement ne se propage. La tâche beat de rappel revérifie le statut de paiement au moment de l'envoi ; si payé, elle saute. Si vous constatez cela, l'écart était de l'ordre de quelques secondes.

Un e-mail de rappel envoyé à un client qui a déjà payé est embarrassant mais sans conséquence. Clozo s'en protège deux fois (la vérification d'idempotence des événements de chronologie + la revérification du statut de paiement par envoi), mais une étroite course entre le traitement du webhook et l'envoi peut passer à travers. Si cela arrive une fois, excusez-vous et passez à autre chose ; si cela arrive à plusieurs reprises, c'est un bug que nous voulons connaître.

Step by step

  1. Excusez-vous auprès du client.

    Message personnel : « Toutes nos excuses — ce rappel est parti quelques instants avant que notre système ne voit votre paiement. Vous êtes en règle. »

  2. Vérifiez que le statut de paiement

    est correctement Payé dans Clozo. Si ce n'est pas le cas, c'est un problème différent (section 10.14).

  3. Si reproductible (plusieurs devis payés recevant des rappels)

    , contactez le support.

Why this works this way

La tâche beat send_overdue_reminders (tasks.py L2107) s'exécute toutes les heures et met en file des envois par niveau. Le dispatcher send_overdue_reminder_email (L2165) revérifie proposal.status != Proposal.STATUS_OVERDUE au moment de l'envoi et saute si payé. La fenêtre de concurrence est les quelques centaines de millisecondes entre la revérification et l'appel API Resend réel.

Si l'e-mail de rappel s'est déclenché sur un devis payé, le paiement a dû arriver dans cette étroite fenêtre. Très inhabituel.

Troubleshooting

Keep reading