filter_var(env('TG_SANDBOX', true), FILTER_VALIDATE_BOOL), /* |-------------------------------------------------------------------------- | Наценка на клиентскую цену Telegram-рекламы |-------------------------------------------------------------------------- | Клиент платит цену С наценкой: клиентская смета = базовая смета тарифа | (себестоимость-оценка) × markup. 1.40 = +40%. Строка для bcmath (scale 2). | Меняется без правки кода через env TG_MARKUP. */ 'markup' => (string) env('TG_MARKUP', '1.40'), /* |-------------------------------------------------------------------------- | Порог авто-пачки |-------------------------------------------------------------------------- | Авто-режим копит новых лидов и запускает кампанию, когда наберётся столько | кандидатов (МТС показывает рекламу базе, а не по одному номеру). Минимальная | осмысленная пачка у МТС Маркетолог — 367 (спека §5). */ 'auto_batch_threshold' => (int) env('TG_AUTO_BATCH', 367), /* |-------------------------------------------------------------------------- | Окно «зависшей модерации» |-------------------------------------------------------------------------- | Кампания в статусе `moderating` дольше стольких ЧАСОВ считается зависшей | (робот не смог прочитать вердикт: сломались селекторы кабинета / id протух). | Уборщик уводит её в `needs_review` для ручного разбора, БЕЗ возврата брони | (могла реально показываться). МТС проверяет ~4ч; окно с большим запасом. */ 'moderation_stuck_hours' => (int) env('TG_MODERATION_STUCK_HOURS', 48), /* |-------------------------------------------------------------------------- | Node-робот кабинета МТС (bots/mts-telegram-ads) |-------------------------------------------------------------------------- | У МТС нет API — кампанию доводит браузер-робот. TelegramRobotRunner | запускает `node