sms-second: не ждать вторую СМС при выключенной кампании — снятие очереди в second_sms_skipped
This commit is contained in:
parent
d9327f320c
commit
5170c4fc93
|
|
@ -687,6 +687,32 @@ def step_handle_expired(conn, settings):
|
|||
tg_chat,
|
||||
)
|
||||
|
||||
def skip_pending_reminders(conn):
|
||||
"""Кампания выключена -> снять ожидающие группы с очереди второй СМС.
|
||||
|
||||
Терминальный статус 'second_sms_skipped' = напоминание не отправлено и
|
||||
отправлено не будет. next_notification_check_at очищается: группа ничего
|
||||
не ждёт, а при включении кампании накопленная очередь не рассылается.
|
||||
"""
|
||||
with conn.cursor() as cur:
|
||||
cur.execute(
|
||||
"""
|
||||
UPDATE order_groups
|
||||
SET notification_status = 'second_sms_skipped',
|
||||
next_notification_check_at = NULL
|
||||
WHERE notification_status = 'first_sms_sent'
|
||||
AND second_sms_sent_at IS NULL
|
||||
AND delivery_status = 'pending_confirmation'
|
||||
RETURNING id
|
||||
"""
|
||||
)
|
||||
ids = [row[0] for row in cur.fetchall()]
|
||||
conn.commit()
|
||||
if ids:
|
||||
log.info(f"Reminders skipped (campaign disabled): {len(ids)} group(s)")
|
||||
return len(ids)
|
||||
|
||||
|
||||
# ─── Main ────────────────────────────────────────────────────────────────────
|
||||
|
||||
def main():
|
||||
|
|
@ -701,7 +727,11 @@ def main():
|
|||
f"max_attempts={settings.get('max_attempts')}")
|
||||
|
||||
if not settings.get("enabled", True):
|
||||
log.info("Campaign disabled, exiting")
|
||||
# Напоминания не ждут: если в момент отправки кампания выключена,
|
||||
# ожидающие группы снимаются с очереди второй СМС в терминальный статус.
|
||||
# Накопления нет — при включении кампании старые ожидания не рассылаются.
|
||||
skipped = skip_pending_reminders(conn)
|
||||
log.info(f"Campaign disabled, exiting (reminders skipped: {skipped})")
|
||||
return
|
||||
|
||||
# State machine — каждый шаг быстрый, без blocking
|
||||
|
|
|
|||
Loading…
Reference in New Issue