Aggiunge fascia oraria, prova manuale obbligatoria e cruscotto invii email.
CI / lint (push) Failing after 16m2s
CI / scan_ruby (push) Has been cancelled
CI / scan_js (push) Has been cancelled

Le campagne rispettano orario e giorni lavorativi, richiedono una mail di test con dati inseriti a mano prima dell'invio massivo e offrono una dashboard per monitorare l'avanzamento.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-18 00:04:33 +02:00
co-authored by Cursor
parent 4ddf534a0c
commit 98dcdbbf82
33 changed files with 882 additions and 56 deletions
+28
View File
@@ -0,0 +1,28 @@
class ResumeMailingsJob < ApplicationJob
queue_as :mailers
STALE_QUEUED_AFTER = 10.minutes
def perform
recover_stale_queued!
Mailing.sending.due_to_send.find_each do |mailing|
next unless Mailings::SendClock.new(mailing).open?
next if mailing.mailing_recipients.queued.exists?
recipient = mailing.mailing_recipients.pending.order(:id).first
next unless recipient
SendMailingRecipientJob.perform_later(recipient.id)
end
end
private
def recover_stale_queued!
MailingRecipient.queued.where("updated_at < ?", STALE_QUEUED_AFTER.ago).find_each do |recipient|
next unless recipient.mailing.sending?
recipient.update!(status: "pending", error_message: nil)
end
end
end