fix(alerts): подтвердить риск ручного повтора сообщения

This commit is contained in:
Denozordec committed 2026-10-03 19:21:19 +07:00
1 parent 7d0608bbce
commit b109532f33
11 files changed
+103 -16

No files matched your search

+1 -1
View File
@@ -4,7 +4,7 @@
## Актуальная точка продолжения — 2026-10-03
Этап 11Б в работе; последний проверенный блок 11Б.4.4.3.4; System DB принят локально с внешними ограничениями. Следующий блок 11Б.4.4.3.5: подключить UI ручного повтора unknown с подтверждением риска дубликата, общим checkpoint при неизвестном POST и сохранением формы/источника; затем общий dashboard permission reader, адаптивность/pickers, Releases/probe scheduling и приёмка 11Б/12.
Этап 11Б в работе; последний проверенный блок 11Б.4.4.3.5; System DB принят локально с внешними ограничениями. Следующий блок 11Б.4.4.3.6: исправить права общих sidebar/dashboard readers (источник фонового GRE оказался AppSidebar), затем адаптивность/pickers, Releases/probe scheduling и приёмка 11Б/12. Processing остаётся без повтора до отдельного сценария подтверждённой остановки отправителя.
Реальные pg_dump/pg_restore, PG rollback и остановка UDP worker требуют внешней приёмки. Датированные продолжения ниже — история; точный следующий шаг также указан в начале [журнала](ux-ui-progress.md).
+10 -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.4; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | В работе: 11Б.1–11Б.4.4.3.5; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Не начат |
@@ -36,6 +36,15 @@
## Блок 11Б.4.4.3.5 — явный повтор очереди в UI (2026-10-03)
- Unknown item получает доступный по правам/health action и существующий AlertDialog: явное подтверждение проверки чата и риска дубликата. Processing не имеет action. POST передаёт только id/version/risk; строгий helper проверяет pending receipt и version+1 без retry. UI сообщает постановку в очередь, а не доставку.
- Синхронный lock и общий Alerts operation lock исключают concurrent config/test/refresh; dialog не закрывается во время POST. До запроса ставится source-scoped memory/session checkpoint без payload/secret; malformed/network/5xx сохраняет его через refresh/reload/ABA. Подтверждённый 4xx снимает checkpoint и сохраняет форму; ручная проверка результата отдельная и не отправляет POST.
- API 2/2, queue browser 6/6 плюс mobile dialog 1/1 (320px screenshot просмотрен, Escape/focus/cancel без POST), context 14/14 прошли. Typecheck без incremental, профильный lint прошли; ReUI Frame checklist применён, installed primitives не менялись.
- Реальный PG/Telegram не проверен. Полная Alerts приёмка не завершена: processing recovery требует отдельного сценария остановки отправителя, остались pickers/адаптивность и неподдерживаемое BGP-prefix условие. Backend manual retry не подтверждает внешнюю доставку.
- Уточнение расследования прав: глобальный GRE GET создаёт AppSidebar, а useDashboardLive вызывается только dashboard page. Ранее запись о «глобальном dashboard reader» была неточной; оба reader требуют проверки прав.
- Следующий точный шаг 11Б.4.4.3.6: исправить права общих sidebar/dashboard readers (источник фонового GRE оказался AppSidebar), затем адаптивность/pickers, Releases/probe scheduling и приёмка 11Б/12. Processing остаётся без повтора до отдельного сценария подтверждённой остановки отправителя.
## Блок 11Б.4.4.3.4 — атомарный ручной повтор unknown (2026-10-03)
- POST /api/alerts/outbox/:id/retry под mm:alerts:write/admin требует literal acknowledgedDuplicateRisk:true и expectedVersion. Conditional UPDATE только telegram+unknown+resolution_version переводит запись в pending и увеличивает version. Processing/sent/failed/pending, устаревший снимок и повторный запрос получают 409; endpoint не отправляет Telegram и не пишет ложный успешный history.
+4
View File
@@ -296,3 +296,7 @@ GET/UI очереди принят локально: независимый stri
### Продолжение 2026-10-03 — 11Б.4.4.3.4
Backend manual unknown retry принят локально: acknowledged risk + atomic version CAS, transaction receipt, no send/history; DI/HTTP/JWT/build/typecheck/lint/queue browser прошли. Реальный PG/0009 и UI действия не приняты. Следующий блок 11Б.4.4.3.5: подключить UI ручного повтора unknown с подтверждением риска дубликата, общим checkpoint при неизвестном POST и сохранением формы/источника; затем общий dashboard permission reader, адаптивность/pickers, Releases/probe scheduling и приёмка 11Б/12.
### Продолжение 2026-10-03 — 11Б.4.4.3.5
UI manual unknown retry принят локально: explicit duplicate risk, common lock, strict pending receipt, unknown checkpoint across reload/ABA. API 2, browser 6 + mobile 1, context14, typecheck/lint прошли. Processing recovery и внешняя доставка не приняты. Источник global GRE — AppSidebar, dashboard hook только на dashboard page. Следующий блок 11Б.4.4.3.6: исправить права общих sidebar/dashboard readers (источник фонового GRE оказался AppSidebar), затем адаптивность/pickers, Releases/probe scheduling и приёмка 11Б/12. Processing остаётся без повтора до отдельного сценария подтверждённой остановки отправителя.