feat(control): add Link management and real-time Event Journal to Web Console #63
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: ochenstarik/server-monitor-manager#63
Loading…
Reference in a new issue
No description provided.
Delete branch "antigravity/console-links"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Antigravity: управление Links и журнал событий в веб-консоли
Реализовано создание и аварийное отключение сетевых связей (Links), раздельное отображение желаемого и фактического состояний, явное подтверждение направления сетевого доступа, обязательное обоснование (
Reason), клиентская генерацияIdempotencyKey, отображение сроков действия, а также раздел «Журнал событий» на базе потокаGET /api/v1/control/eventsв соответствии сsmm-antigravity-task-console-links-2026-08-18.md.База
main@7c43977antigravity/console-linksЧто сделано
Раздельное отображение желаемого (
DesiredState) и фактического (ActualState) состояний:state-mismatch-badge: «⚠️ Не синхронизировано»), когдаdesiredState !== actualState.LastErrorпри его наличии в виде выделенного предупреждающего блока в ячейке состояния.Создание Link с явным подтверждением направления:
#create-link-modalс формой ввода:Source Node ID(выбор из списка зарегистрированных узлов или ручной ввод);Target Node ID(выбор из списка зарегистрированных узлов или ручной ввод);Protocol(TCP/UDP);Port(1–65535);TTL(срок действия в минутах);Reason(обязательное поле причины).#link-direction-summary, наглядно показывающий оператору одной строкой:Открытие доступа: с узла «<source>» к узлу «<target>», протокол <protocol>, порт <port>, на <ttl> мин..source !== target).Обязательное осмысленное поле
Reason:Аварийное быстрое отключение Link:
.btn-danger), доступная без перехода на другие страницы.POST /api/v1/control/links/{id}/disable.Клиентская генерация
IdempotencyKey:crypto.randomUUID()при открытии формы создания или нажатии на отключение.Отображение срока жизни (Expiration):
через 45 мин. (14:30)) либо отметка «Истёк» при завершении срока действия.Журнал событий (Event Journal):
#events-section) с таблицей#events-tableи счётчиком событий.GET /api/v1/control/events(NDJSON-поток) и выводит поступающие события (время, тип события, субъект/узел, подробности payload).link.*,agent.*) автоматически инициируется фоновое обновление данных дашборда.Текстовое отображение ошибок сервера:
detail,title,errors) и выводятся понятным текстом в модальном окне или глобальном баннере.Сохранение существующих эндпоинтов и архитектуры:
GET/POST /api/v1/control/links,POST /api/v1/control/links/{id}/disable,GET /api/v1/control/events).Отчёт о тестировании
1. Локальные тесты (PASS)
dotnet build— 0 ошибок.dotnet test— 158 пройденных тестов (включая обновленныйWebConsoleHtmlContainsRequiredUiElementsAndWarningи новыйWebConsoleProvidesLinkManagementAndEventsJournal):WebConsoleHtmlContainsRequiredUiElementsAndWarning— проверка наличия всех элементов управления Link (кнопка создания, модальное окно, поля формы, подсказка направления, таблицы и счётчики);WebConsoleProvidesLinkManagementAndEventsJournal— проверка раздельных колонок Desired/Actual/LastError, карточки подтверждения направления и раздела журнала событий;EmbeddedAssetsAreServedWhenDiskWebRootIsMissing— проверка отдачи обновленных встроенных HTML/CSS/JS ресурсов сборки;AnonymousAccessToWebConsoleRoutesIsRejectedWithUnauthorized— анонимный доступ отклонён;AgentRoleIsForbiddenFromWebConsoleиAutomationRoleIsForbiddenFromWebConsole— роли Agent и Automation запрещены.2. CI Workflows (PASS, 100% зелёные)
build-and-test: https://github.com/ochenstarik-ui/server-monitor-manager/actions/runs/32102077084/job/95604415288 — PASS (5m 54s)build: https://github.com/ochenstarik-ui/server-monitor-manager/actions/runs/32102077075/job/95604415017 — PASS (4m 18s)3. Границы изменений
git diff --name-only origin/main:src/ServerMonitorManager.Control/wwwroot/app.jssrc/ServerMonitorManager.Control/wwwroot/index.htmlsrc/ServerMonitorManager.Control/wwwroot/style.csstests/ServerMonitorManager.Control.Tests/WebConsoleTests.csdeploy/**, релизные workflow и bootstrap-тесты не затрагивались.