Persist notification email batches with leased idempotent delivery

This commit is contained in:
2026-09-06 13:03:47 +03:00
parent cbfdd072d1
commit d956de3014
7 changed files with 122 additions and 17 deletions
+7
View File
@@ -814,3 +814,10 @@ Taslak türü seçicisine erişilebilir ad eklendi. Üretim derlemesi geçti. Ö
- Resend belgelerine göre idempotency anahtarları 24 saat tutulur: https://resend.com/docs/dashboard/emails/idempotency-keys . Bu nedenle kalıcı kuyruğun süresi dolan belirsiz işi sessizce yeniden göndermemesi gerekir.
- 183 otomatik test geçti. Gövdenin 25 kaydı kapsaması, HTML kaçırma, gönderici/anahtar aktarımı ve eksik gönderim kimliği hatası kontrollü testlerle doğrulandı. Gerçek e-posta gönderilmedi.
- Anahtar desteği henüz notifier'ın kalıcı gönderim kaydına bağlanmadı; kalıcı outbox işi açık. Bu değişiklik tekrar gönderimin bütünüyle önlendiği anlamına gelmez.
### Kalıcı abonelik e-postası kuyruğu — 6 Eylül 2026
- notification_outbox notify.sqlite'a eklendi. İçerik, gönderen, alıcı, ihale grubu ve UUID kalıcıdır; retry güncel şablonu/ilanı kullanarak metni değiştirmez. Resend Idempotency-Key aynı UUID'den üretilir.
- Abonelik başına tek aktif grup unique index ve transaction ile korunur. 120sn işçi sahipliğiyle ikinci işçi aynı grubu üstlenemez; geç eski işçinin başarı/hata kaydı reddedilir. Sağlayıcı kabulü ve görülen ihale listesi aynı transaction'da tamamlanır. Eski abonelik listesiyle çalışan işçi daha önce işaretlenmiş grubu yeniden oluşturamaz.
- İlk çağrıdan 23 saat geçmiş belirsiz grup otomatik yeniden gönderilmez; abonelik listesinde inceleme gereksinimi gösterilir. Abonelik silinince bekleyen grup iptal edilir; hâlihazırda sağlayıcıya ulaşmış isteği geri çekme garantisi yoktur.
- 186 test ve üretim derlemesi geçti. Gerçek depo/notifier + kontrollü sağlayıcıyla hata→kaynak değişikliği→aynı gövde/anahtar retry→kabul test edildi. Kaynak sabitleme, işçi yarışması, eski işçi reddi, atomik görülme, süre aşımı ve abonelik silme test edildi.
- Gerçek Resend teslimi, gerçek SIGKILL/outbox kabulü ve belirsiz gönderimin yönetici çözüm ekranı henüz yok. Telegram ayrı kalıcı kuyrukta değil; e-posta kabulünden sonra süreç kesilirse Telegram bildirimi eksik kalabilir. Sağlayıcı hesap değişimi/geri yükleme işlemleri için runbook kısıtları eklendi. Planın tümü açık.