fix(ui): изолировать источники данных Filters

This commit is contained in:
Denozordec committed 2026-09-30 12:05:28 +07:00
1 parent 24cc66d8d2
commit 365ab2173c
7 files changed
+146 -9

No files matched your search

+9 -1
View File
@@ -25,12 +25,20 @@
| 6 | Навигация и дашборд | Завершён 2026-09-20 в границах локальной приёмки; ограничения ниже |
| 7 | Серверы и мониторинг: детали, формы, URL-контекст, права | Завершён в границах локальной приёмки 2026-09-23; внешние ограничения ниже |
| 8 | Трафик и статистика | Завершён 2026-09-28 в границах локальной приёмки; ограничения в блоке 8.13 |
| 9 | VPN, Firewall и Filters | В работе: блоки 9.1–9.41 — IPsec/GRE/VXLAN, Firewall и операции Filters |
| 9 | VPN, Firewall и Filters | В работе: блоки 9.1–9.42 — IPsec/GRE/VXLAN, Firewall и операции Filters |
| 10 | Маршрутизация, диагностика, карта и терминал | Не начат |
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Не начат |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Не начат |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Не начат |
## Блок 9.42 — изоляция источника Filters (2026-09-30)
- FiltersSource пересоздаёт состояние по ключу backend/режима. mounted-guard отменяет уведомления и продолжение старых мутаций; восстановление старого источника не запускает чтение правил/истории после ответа. Старые чтения уже отклоняются readEpoch/cleanup; загрузчики GRE/recursive также проверяют размонтирование перед применением результата.
- Контекстные проверки выполняются отдельно через playwright.filters-context.config.ts (порт 3101, NEXT_PUBLIC_BACKEND_URL=local); обычная конфигурация исключает filters-context.spec.ts. Это позволяет менять URL через настройки и проверять CORS HTTP-моки без реального backend.
- Прошли 26 E2E в двух финальных прогонах: шесть контекстных (поздний успех/ошибка чтения старого backend, поздний успех/403 применения после смены backend либо live/mock) и все 20 обычных Filters. Первый контекстный прогон остановлен после обнаружения неверного точного селектора ссылки с динамическим счётчиком; исправлен только селектор. Остановлено дерево только собственного Playwright-процесса, идентифицированного по точной командной строке. TypeScript прошёл, тесты/конфигурация lint-чистые; исходные 2 ошибки/13 предупреждений страницы сохранены. Diff-check прошёл. Последний frontend build — 9.40, backend — 9.32.
- Следующий шаг — актуальное чтение цели копирования перед append/replace; не использовать начальный кэш для объединения. Затем схемы/ошибки шлюзов и свежесть. Реальные RouterOS/JWT/БД не проверены; этап 9 открыт.
- Квота: 76% пятичасовой/12% недельной на старте, 79%/12% после проверок. Пользователь разрешил работу до конца лимитов, прежний резерв 25% для продолжения снят. Локальный коммит без push; чужие изменения сохранены.
## Блок 9.41 — актуальное чтение выбранного устройства Filters (2026-09-30)
- Запись выбранного устройства доступна после успешного чтения его ruleset с live=true и без stale. readyServerId должен совпадать с выбранным ID, до ответа действия readonly; статус объясняет ожидание. Исходный GET без serverId отдаёт кэш и сам не разрешает запись. Восстановление с подтверждёнными rules либо успешным повторным чтением устанавливает готовность устройства.