-- ============================================================ -- SuperSam: Автодозвон — исключения в view реестра (Фаза 8b) -- 08.09.2026. Аддитивная. Дополняет order_group_comms_flags полями -- autocall_excluded / autocall_exclusion_reason, чтобы фронт показывал -- бейдж «не звоним (исключение)» без отдельного запроса. -- ============================================================ drop view if exists public.order_group_comms_flags; create view public.order_group_comms_flags as select og.id, og.autocall_opt_out, og.delivery_date_source, og.notification_status, og.delivery_status, og.customer_phone_normalized, (select l.outcome from public.autocall_log l where l.order_group_id = og.id order by l.created_at desc limit 1) as last_call_outcome, (select l.changed from public.autocall_log l where l.order_group_id = og.id order by l.created_at desc limit 1) as last_call_changed, (select l.created_at from public.autocall_log l where l.order_group_id = og.id order by l.created_at desc limit 1) as last_call_at, (select count(*) from public.autocall_log l where l.order_group_id = og.id) as call_attempts, (select count(*) from public.autocall_log l where l.order_group_id = og.id and l.outcome in ('no_input_day','no_input_half')) as no_input_count, -- Исключение автодозвона (префикс/номер) (select e.reason from public.autocall_exclusions e where e.active and ( (e.rule_type = 'phone' and coalesce(og.customer_phone_normalized, regexp_replace(coalesce(og.customer_phone,''),'\D','','g')) = e.value) or (e.rule_type = 'prefix' and coalesce(og.customer_phone_normalized, regexp_replace(coalesce(og.customer_phone,''),'\D','','g')) like e.value || '%') ) limit 1) as autocall_exclusion_reason, (select e.value from public.autocall_exclusions e where e.active and ( (e.rule_type = 'phone' and coalesce(og.customer_phone_normalized, regexp_replace(coalesce(og.customer_phone,''),'\D','','g')) = e.value) or (e.rule_type = 'prefix' and coalesce(og.customer_phone_normalized, regexp_replace(coalesce(og.customer_phone,''),'\D','','g')) like e.value || '%') ) limit 1) as autocall_exclusion_value from public.order_groups og; grant select on public.order_group_comms_flags to authenticated;