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,
|
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 ────────────────────────────────────────────────────────────────────
|
# ─── Main ────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
@ -701,7 +727,11 @@ def main():
|
||||||
f"max_attempts={settings.get('max_attempts')}")
|
f"max_attempts={settings.get('max_attempts')}")
|
||||||
|
|
||||||
if not settings.get("enabled", True):
|
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
|
return
|
||||||
|
|
||||||
# State machine — каждый шаг быстрый, без blocking
|
# State machine — каждый шаг быстрый, без blocking
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue