5356bf3ed6
Этап 5, Task 3. Появилась команда client-sms:poll-delivery — каждые десять минут спрашивает у канала, что стало с отправленными сообщениями, и проставляет судьбу в журнал. Устройство: - умение рассказать судьбу — способность КАНАЛА: канал без разъёма просто пропускается. Когда у Т2/Мегафона/Билайна появятся кабинеты, команда не изменится ни строчкой; - отчёт ПРАВИТ существующую строку, новых не пишет (В-204): сторож зависших меряет движение рассылки по последней записи журнала, и новые строки делали бы зависшую рассылку «живой» — деньги остались бы замороженными; - спрашиваем только реально отправленные этим каналом, с номером сообщения, не старше трёх суток и с неокончательной судьбой. Оператор помнит судьбу трое суток — спрашивать про старое бессмысленно; - незнакомое слово оператора судьбу НЕ меняет: пишем слово в журнал и оставляем графу как была. Угадать значило бы соврать про деньги. ЖИВОЙ ПРОГОН ПОД БОЕВОЙ РОЛЬЮ, тройкой (политика srv_bypass воспроизведена тем же текстом, что в db/03, — на стенде их нет ни одной): А) право UPDATE есть + политика есть -> «уточнено: 1», судьба delivered; Б) права UPDATE нет -> команда ПАДАЕТ «нет доступа к таблице» (видно); В) права есть, политики нет -> «успех», «уточнено: 0», судьба пустая (НЕ видно). Подтверждает В-181: у двух опор разная цена отказа, и опаснее вторая. Стенд вернулся в исходное, политик srv_bypass не осталось. ПРО ПРИБОРЫ — два теста оказались НЕ приборами, починены, а не подогнаны: - «незнакомое слово не меняет судьбу» не отличал «графу не тронули» от «записали пусто» — теперь у сообщения есть стартовая судьба, и проверяется, что она цела; - «пробное не спрашиваем» краснел бы не от того: пробное отсекает фильтр по КАНАЛУ, а не по статусу. Переименован по тому, что реально охраняет, и под две оставшиеся защиты заведены свои тесты. После починки каждый из четырёх вырезов добавляет ровно один красный тест. Прогоны: модуль 336/336 (13 пачек, все с первой попытки), phpstan ровно 2 чужие давние, pint чисто. Команда в расписании — проверено schedule:list.