fix: manual_campaign EXISTS check — no manual_required without SMS sent
Scenario 3 (link_ready + next_check expired) now requires EXISTS in sms_campaign_log. Prevents groups from being moved to manual_required before first SMS is ever sent.
This commit is contained in:
parent
db57624626
commit
e55a4cafcc
|
|
@ -123,9 +123,16 @@ def get_groups_to_manual(conn):
|
||||||
AND (og.next_notification_check_at IS NULL OR og.next_notification_check_at <= NOW())
|
AND (og.next_notification_check_at IS NULL OR og.next_notification_check_at <= NOW())
|
||||||
AND og.first_sms_sent_at < NOW() - INTERVAL '3 hours'
|
AND og.first_sms_sent_at < NOW() - INTERVAL '3 hours'
|
||||||
AND og.second_sms_sent_at IS NOT NULL)
|
AND og.second_sms_sent_at IS NOT NULL)
|
||||||
-- 3. link_ready + next_check в прошлом + нет активных SMS в логе
|
-- 3. link_ready + next_check в прошлом + SMS уже отправлялась хотя бы раз
|
||||||
|
-- ВАЖНО: если SMS никогда не отправлялась (нет записи в логе), не переводить в manual --
|
||||||
|
-- возможно first campaign ещё не успел отправить (БД была недоступна и т.п.)
|
||||||
OR (COALESCE(og.notification_status, '') = 'link_ready'
|
OR (COALESCE(og.notification_status, '') = 'link_ready'
|
||||||
AND (og.next_notification_check_at IS NULL OR og.next_notification_check_at <= NOW())
|
AND (og.next_notification_check_at IS NULL OR og.next_notification_check_at <= NOW())
|
||||||
|
AND EXISTS (
|
||||||
|
SELECT 1 FROM sms_campaign_log scl
|
||||||
|
WHERE scl.order_group_id = og.id
|
||||||
|
AND scl.status IN ('sent', 'checking', 'delivered')
|
||||||
|
)
|
||||||
AND NOT EXISTS (
|
AND NOT EXISTS (
|
||||||
SELECT 1 FROM sms_campaign_log scl
|
SELECT 1 FROM sms_campaign_log scl
|
||||||
WHERE scl.order_group_id = og.id
|
WHERE scl.order_group_id = og.id
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue