01287d0804
SendNewLeadsDigestJob брал перечень тенантов через дефолтное соединение (crm_app_user, RLS). У очереди нет app.current_tenant_id → policy tenants_self_isolation отдавала 0 строк, и рассылка молча превращалась в no-op: ни одного письма о новых сделках с 19.06.2026 (проверено на бою — 0 из 58 сделок за сутки помечены отправленными). Лечение зеркалит уже принятый фикс BalancePreflightSweepJob: перечень id берём через pgsql_supplier (BYPASSRLS), затем per-tenant SET LOCAL внутри digestForTenant восстанавливает контекст под RLS-ролью. Тест: +регрессия «рассылает нескольким тенантам за прогон при системном контексте 0»; +SharesSupplierPdo (иначе pgsql_supplier не видит незакоммиченного тенанта). Проверено сломом выборки → 4 теста краснеют. На бою сухим прогоном (Mail::fake): старый код 0 фирм → 0 писем, новый 9 фирм → 1 дайджест сформирован. Escape: владелец дал явное «коммить пуш и кати». Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>