e6beff6aeb
Портал поставщика НЕ делит лимит по площадкам сам (Plan 3 R6 «verified 15→5» оказался ложным — проверено вживую 2026-05-21 через listProjects): каждый B-проект честно набирает до своего лимита, поэтому одинаковый лимит на B1/B2/B3 = заказ ×N (звонки/сайт ×3, sms+keyword ×2) → переплата поставщику. Восстановлен per-platform split (был удалён в R6): - SupplierQuotaAllocator::distributeForPlatform(order, platforms) — largest-remainder, Σ долей == заказу (18→6/6/6, 10→4/3/3, 5→3/2). - SyncSupplierProjectJob (online) + SyncSupplierProjectsJob (ночной): create / dead-donor / missing / update — по одной save на площадку с её долей. Online делит daily_limit_target; ночной делит групповой computeOrder. Сторона выдачи клиенту не затронута (RouteSupplierLeadJob по-прежнему режет по лимиту клиента). Утечка была только на стороне заказа у поставщика. Tests: allocator 27/27, online job 9/9, nightly job 12/12, broad supplier suite green. 2 SupplierPortalClient PlaywrightBridge-теста падают только в worktree-окружении (нет node-модуля playwright) — pre-existing, доказано stash. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>