Dedulikacja webhooków, naprawa order_number i indeksy bazy danych
Filip Borkowski, Backend/Frontend/Fullstack Engineer
Co zostało naprawione
Dedulikacja webhooków Resend
Resend może dostarczyć ten sam webhook dwukrotnie (retry po timeout). Wcześniej powodowało to zapisanie duplikatów załączników w Storage i bazie danych — np. zlecenie 12602734 miało 8 plików zamiast 4.
Teraz webhook sprawdza email_id w tabeli inbound_emails przed przetworzeniem. Jeśli email był już obsłużony, zwraca skipped: duplicate_email_id bez żadnych zapisów.
Naprawa order_number dla oryginalnych PDF po splicie
Przy emailach wielozleceniowych z jednym załącznikiem PDF (np. BOOKING NOTE.9333662...pdf) kod wykonuje split PDF na osobne pliki dla każdego numeru zlecenia. Oryginalny plik był zapisywany bez order_number = null.
Teraz po splicie oryginalny plik otrzymuje order_number wyekstrahowany z jego nazwy pliku (regex \d{7,8}).
Migracja bazy danych
- Dodano kolumnę
profiles.full_name TEXT(eliminuje ~35 błędów w logach) - 5 indeksów wydajnościowych:
idx_inbound_emails_order_ididx_inbound_emails_from_emailidx_inbound_emails_created_atidx_inbound_email_attachments_order_numberidx_inbound_email_attachments_ct_created
Aktualizacja timestamp email_received_at
Przy zduplikowanych zleceniach webhook aktualizuje email_received_at do czasu nowego emaila — PDF generowany z zamówienia pokazuje teraz poprawną godzinę ostatniego otrzymanego emaila.