1c2195ebee
Решение владельца Р90 (docs/grilling/2026-08-03-metodika-lena-pod-klienta.md): цена звонка — два поля, за соединение и за минуту. Оба нуля разом означали молча бесплатный обзвон: клиент не платит, а оператору за звонки платим мы. Одна цифра в нуле — осмысленный случай, например не брать отдельно за соединение. AdminObzvonTariffController::update() теперь сравнивает обе цены ПОСЛЕ перевода в копейки и отказывает с объяснением, если обе — ноль. Ловит «0», «0.00» и «0.0» одинаково, а не по виду строки. Прежние отказы (пустая, отрицательная, нечисловая цена) не тронуты. ObzvonTariffTest.php: +6 проверок «З-1.8». Сторож доказан красным дважды — до фикса (естественный RED) и после снятия запрета (искусственный RED), восстановление сверено побайтово через git hash-object. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>