fix(alerts): показать подтверждённое состояние очереди сообщений

This commit is contained in:
Denozordec committed 2026-10-03 19:09:42 +07:00
1 parent b1ad9515fa
commit 89c31289bd
24 files changed
+166 -22

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.3.2; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | В работе: 11Б.1–11Б.4.4.3.3; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Не начат |
@@ -36,6 +36,14 @@
## Блок 11Б.4.4.3.3 — подтверждённый снимок очереди Telegram (2026-10-03)
- Отдельный GET /api/alerts/outbox под mm:alerts:read, no-store и строгим DTO. Counts и последние 20 processing/unknown читаются в одной repeatable read/read only transaction; сумма, безопасные числа, количество/статусы/уникальность элементов проверяются. Неизвестные legacy статусы учитываются отдельно. Ответ не содержит payload, token или lastError.
- Независимая панель на существующем OpsPanel/Frame показывает known pending/sent/failed, held состояния и время последнего успешного ответа. Initial error остаётся unknown; background error сохраняет последний снимок; queue не блокирует основной reader. Source lifetime/revision/abort отбрасывают поздние ответы A→B→A.
- Backend DI, HTTP/no-store/malformed и реальные JWT gates прошли; API strict/abort/no retry прошли. 32 профильных браузерных сценария и 12 context/ABA прошли; дополнительный мобильный прогон очереди 2/2, скриншот 320px просмотрен. Backend build, frontend typecheck без incremental, профильный lint прошли; ReUI Frame checklist применён к новой панели.
- Реальный PG snapshot/0008 migration и Telegram не проверены локально. Ручное разрешение held пока отсутствует; панель явно сообщает это. Общая приёмка Alerts не завершена.
- Следующий точный шаг 11Б.4.4.3.4: контролируемый повтор только unknown после явной проверки оператором и защиты от конкуренции; processing удерживать до отдельной проверки остановки отправителя. Затем общий dashboard permission reader, адаптивность/pickers, Releases/probe scheduling и приёмка 11Б/12.
## Блок 11Б.4.4.3.2 — atomic outbox claim и unknown hold (2026-10-03)
- Перед POST dispatcher выполняет conditional UPDATE pending+due→processing RETURNING и проверяет ownership/id/status. Второй worker и stale selected row не могут отправить ту же запись через новый dispatcher. Claim exception не запускает POST. Payload/history/counters проверяются до отправки.