Skip to main content

Troubleshooting & Reference · Article 7.17

„Mój klient dostał e-mail z przypomnieniem, ale już zapłacił"

Rzadki wyścig stanów — przypomnienie zostało wysłane chwilę przed tym, jak potwierdzenie płatności się upowszechniło. Zadanie beat ponownie sprawdza status płatności w momencie wysyłki; jeśli zapłacono, pomija. Jeśli to widzisz, luka trwała ułamki sekund.

E-mail z przypomnieniem wysłany do klienta, który już zapłacił, jest kłopotliwy, ale nieszkodliwy. Clozo chroni przed tym dwukrotnie (sprawdzenie idempotentności zdarzenia na osi czasu + ponowne sprawdzenie statusu płatności przy każdej wysyłce), ale ścisły wyścig między przetwarzaniem webhooków a wysyłką może się prześlizgnąć. Jeśli zdarzy się raz, przeproś i idź dalej; jeśli zdarza się wielokrotnie, to błąd, o którym chcemy wiedzieć.

Step by step

  1. Przeproś klienta.

    Osobista wiadomość: „Przepraszam — to przypomnienie wyszło chwilę przed tym, jak nasz system zobaczył Twoją płatność. Wszystko jest uregulowane."

  2. Sprawdź status płatności

    — powinien być poprawnie Opłacony w Clozo. Jeśli nie jest, to inny problem (Sekcja 10.14).

  3. Jeśli powtarzalne (wiele opłaconych ofert dostaje przypomnienia)

    skontaktuj się z pomocą techniczną.

Why this works this way

Zadanie beat send_overdue_reminders (tasks.py L2107) uruchamia się co godzinę i kolejkuje wysyłki per-poziom. Dyspozytor send_overdue_reminder_email (L2165) ponownie sprawdza proposal.status != Proposal.STATUS_OVERDUE w momencie wysyłki i pomija jeśli zapłacono. Okno wyścigu to kilkaset milisekund między ponownym sprawdzeniem a rzeczywistym wywołaniem API Resend.

Jeśli e-mail z przypomnieniem faktycznie wysłał się dla opłaconej oferty, płatność musiała dotrzeć w tym wąskim oknie. Wysoce niezwykłe.

Troubleshooting

Keep reading