Commit Graph

1 Commits

Author SHA1 Message Date
Дмитрий 5356bf3ed6 feat(смс-клиент): опрос судьбы отправленных сообщений у операторов
Этап 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.
2026-07-31 06:23:24 +03:00