fix(ui): проверять права и сохранять достоверность общей сводки

This commit is contained in:
Denozordec committed 2026-10-03 19:33:10 +07:00
1 parent b109532f33
commit 1999e8160e
9 files changed
+124 -117

No files matched your search

+1 -1
View File
@@ -4,7 +4,7 @@
## Актуальная точка продолжения — 2026-10-03
Этап 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 остаётся без повтора до отдельного сценария подтверждённой остановки отправителя.
Этап 11Б в работе; последний проверенный блок 11Б.4.4.3.6; System DB принят локально с внешними ограничениями. Следующий блок 11Б.4.4.3.7: применить права backend к каждому запросу dashboard reader и проверить ограниченный JWT; затем адаптивность/pickers, Releases/probe scheduling и приёмка 11Б/12. Processing recovery требует отдельного сценария остановки отправителя.
Реальные pg_dump/pg_restore, PG rollback и остановка UDP worker требуют внешней приёмки. Датированные продолжения ниже — история; точный следующий шаг также указан в начале [журнала](ux-ui-progress.md).
+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.5; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | В работе: 11Б.1–11Б.4.4.3.6; scheduler и GeoIP приняты локально; NetFlow принят локально; Evolution принят локально; далее общие Settings |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Не начат |
@@ -36,6 +36,14 @@
## Блок 11Б.4.4.3.6 — права и достоверность общей сводки (2026-10-03)
- AppSidebar ждёт ensureAuthConfig, проверяет dashboard:read для counts и filters:read для GRE перед запросом и публикацией. Читатели независимы, bounded/abort/revision/source tag не дают старому ответу заменить новый. Badge скрывается при отсутствии права раздела, неизвестное optional поле не превращается в 0, partial GRE сохраняет последний complete count.
- Второй источник фонового sidebar-counts оказался SystemMonitorPopover: также ждёт auth и проверяет dashboard:read, отделяет health от counts. Ошибка summary не выставляет API offline, unknown count отображается как «—»; последний успешный снимок/время сохраняются. Система не заявляет «Норма» по отсутствующим данным, arbitrary count percentage bars удалены; размеры popup ограничены viewport.
- Strict counts/GRE API unit, 9 browser scenarios (включая alerts-only JWT без counts/GRE/BGP GET, partial refresh, delayed summary, independent health) и typecheck/lint прошли. Дополнительная регрессия dashboard/links 107 сценариев запущена; на момент коммита ещё выполняется, результат будет записан следующим блоком. Не считать её завершённой заранее.
- Backend sidebar-counts всё ещё может возвращать 0 после ошибки своих сетевых count helpers; это отдельное ограничение источника. Текущая UI правка не доказывает достоверность этих upstream counts. Dashboard hook только на dashboard page и ещё требует per-request permission gates. Внешние PG/RouterOS не проверялись.
- Следующий точный шаг 11Б.4.4.3.7: применить права backend к каждому запросу dashboard reader и проверить ограниченный JWT; затем адаптивность/pickers, Releases/probe scheduling и приёмка 11Б/12. Processing recovery требует отдельного сценария остановки отправителя.
## Блок 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 сообщает постановку в очередь, а не доставку.
+4
View File
@@ -300,3 +300,7 @@ Backend manual unknown retry принят локально: acknowledged risk +
### Продолжение 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 остаётся без повтора до отдельного сценария подтверждённой остановки отправителя.
### Продолжение 2026-10-03 — 11Б.4.4.3.6
Общие Sidebar/SystemMonitor readers проверяют auth/права, unknown counts не становятся нулями, health независим от summary; API unit/browser9/typecheck/lint прошли. Дополнительная links/dashboard регрессия107 ещё выполняется. Backend count helpers с catch→0 требуют отдельного исправления. Следующий блок 11Б.4.4.3.7: применить права backend к каждому запросу dashboard reader и проверить ограниченный JWT; затем адаптивность/pickers, Releases/probe scheduling и приёмка 11Б/12. Processing recovery требует отдельного сценария остановки отправителя.