fix(alerts): различать отказ и неизвестный результат Telegram

This commit is contained in:
Denozordec committed 2026-10-03 18:48:22 +07:00
1 parent 382e318b97
commit 46be201d10
9 files changed
+63 -33

No files matched your search

+9 -1
View File
@@ -28,7 +28,7 @@
| 9 | VPN, Firewall и Filters | Завершён в границах локальной приёмки 2026-09-30; блоки 9.1–9.64, ограничения в 9.64 |
| 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 |
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | В работе: 11Б.1–11Б.4.4.2; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | В работе: 11Б.1–11Б.4.4.3.1; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Не начат |
@@ -36,6 +36,14 @@
## Блок 11Б.4.4.3.1 — классификация Telegram delivery (2026-10-03)
- Telegram send helper отличает rejected (валидный negative Bot API receipt с ok:false/error_code/description) от unknown (network/timeout/malformed/HTTP failure без согласованного negative receipt). HTTP success+literal ok:true остаётся API acceptance; не доказательство доставки. Один bounded POST, без retry; секреты redacted.
- Engine delivery теперь разрешает token/chat/thread из одного stored snapshot вместо трёх независимых reads. Missing/invalid stored data и read failure отклоняются до POST; POST exception — unknown. Invalid thread не округляется. Legacy null/undefined thread fallback сохранён; cooldown/recovery/evaluation policy не менялась.
- 3 delivery DI + 4 send DI, общий Alerts backend/HTTP/JWT профиль, backend build/lint прошли. Реальные PG/Telegram не использовались. Outbox dispatcher пока старый: он ещё повторяет unknown и не делает atomic claim; очередью этот блок не считается принятой.
- Аудит SQL нашёл status CHECK (pending/sent/failed), несмотря на TypeScript text enum. Для processing/unknown нужна новая migration; не изменять исторические SQL.
- Следующий точный шаг 11Б.4.4.3.2: миграция статусов outbox, atomic claim перед POST и unknown hold без автоматического resend; затем согласованный receipt/history и UI очереди, общий dashboard permission reader, адаптивность/pickers, Releases/probe scheduling и приёмка 11Б/12.
## Блок 11Б.4.4.2 — ревизия конфигурации правил (2026-10-03)
- GET/strict receipt содержит обязательную SHA-256 revision правил/групп. Canonical hash сохраняет порядок targets/conditions и policy, сортирует строки по ID, исключает history/lastFired и Telegram. Это версия конфигурации в body, не ETag полного overview с динамической историей.