b29bfe2ac6
Джоб создания/правки проекта запускается из очереди, где SetTenantContext не отрабатывает (нет app.current_tenant_id GUC). Под боевой ролью crm_app_user первый же Project::find() падал SQLSTATE 42704 (unrecognized configuration parameter app.current_tenant_id) за ~2мс — до контакта с поставщиком: проект у поставщика не создавался, в UI вечный «Sync pending». На dev не всплывало (postgres superuser обходит RLS). Единственный supplier-flow джоб, который был на дефолтном подключении. Фикс: const DB_CONNECTION = 'pgsql_supplier' + все DB-операции через ::on()/ DB::connection() — как у SyncSupplierProjectsJob/DeleteSupplierProjectJob/CsvReconcileJob. Тесты: SupplierConnectionTest +constant-assert; SyncSupplierProjectJobTest +поведенческий connection-assert (DB::listen → projects-запросы на pgsql_supplier); Plan5/SyncSupplierProjectJobTest +SharesSupplierPdo (джоб теперь пишет через pgsql_supplier → нужен shared PDO под DatabaseTransactions). Проверено вживую на тест-сервере: проекты 14/15 синхронизированы, 6 доноров у crm.bp-gr.ru (12742042-44 / 12766120-22), aggregateSyncStatus=ok. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>