feat(control): add operator web console for nodes, links, and enrollment code generation #59
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#59
Loading…
Reference in a new issue
No description provided.
Delete branch "antigravity/web-console"
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: веб-консоль оператора — Этап 2
Реализована веб-консоль оператора для управления узлами, сетевыми связями (Links) и выдачи кодов регистрации (
smm-antigravity-task-web-console-2026-08-17.md).База
main@f7b10acantigravity/web-consoleЧто сделано
GET /api/v1/control/agents(имя узла, статус, версия агента, последний heartbeat, состояние сертификата).GET /api/v1/control/links(ID связи, источник, назначение, протокол/порт, требуемое и фактическое состояние, срок действия).1-63символа, строчные буквы, цифры, дефисы).POST /api/v1/control/agents/{nodeId}/enrollment-code.SMMNODE2...и отпечатка CA (SHA-256) с копированием в буфер обмена в один клик.src/ServerMonitorManager.Control/wwwroot/(index.html,style.css,app.js) и встроены какEmbeddedResourceв сборку Control, сохраняя единую разворачиваемую единицу (ochenstarik-smm-control) приPublishSingleFile=true./,/index.html,/style.css,/app.js,/console) защищены авторизацией ролиOperator(.RequireAuthorization("Operator")).GetWebConsoleAssetпроверяет наличие файлов на диске и автоматически переключается на извлечение изEmbeddedResourceпри отсутствии каталогаwwwrootна диске.Operator.401 Unauthorized.AgentиAutomationполучают отказ с403 Forbidden.Отчёт о тестировании
1. Локальные тесты (PASS)
dotnet build— 0 ошибок.dotnet test— 150 пройденных тестов (включая 16 интеграционных проверок вWebConsoleTests.cs):AnonymousAccessToWebConsoleRoutesIsRejectedWithUnauthorized— 401 Unauthorized на маршрутах/,/index.html,/style.css,/app.js,/console;AgentRoleIsForbiddenFromWebConsole— 403 Forbidden для ролиAgent;AutomationRoleIsForbiddenFromWebConsole— 403 Forbidden для ролиAutomation;OperatorCanAccessWebConsoleHtmlAndAssets— 200 OK с корректными MIME-типами (text/html,text/css,application/javascript);WebConsoleHtmlContainsRequiredUiElementsAndWarning— проверка наличия элементов интерфейса (таблицы, форма добавления узла, поля вывода кода, отпечатка CA, кнопки копирования и текста предупреждения о сверке отпечатка);EmbeddedAssetsAreServedWhenDiskWebRootIsMissing— тест ветки встроенных ресурсов: поднятие тестового хоста с пустым/отсутствующимWebRootPathподтверждает, что маршруты/,/index.html,/style.css,/app.jsи/consoleуспешно возвращают 200 OK, ожидаемые MIME-типы и непустое содержимое из ресурсов сборкиEmbeddedResource.2. CI Workflows (PASS, все зелёные)
build-and-test: https://github.com/ochenstarik-ui/server-monitor-manager/actions/runs/32061203480/job/95482658110 — PASS (4m 34s)build: https://github.com/ochenstarik-ui/server-monitor-manager/actions/runs/32061203452/job/95482657920 — PASS (3m 21s)3. Границы изменений
git diff --name-only origin/main:src/ServerMonitorManager.Control/Program.cssrc/ServerMonitorManager.Control/ServerMonitorManager.Control.csprojsrc/ServerMonitorManager.Control/wwwroot/app.jssrc/ServerMonitorManager.Control/wwwroot/index.htmlsrc/ServerMonitorManager.Control/wwwroot/style.csstests/ServerMonitorManager.Control.Tests/WebConsoleTests.csdeploy/**, релизные workflow и защищённые каталоги не затрагивались.4. Что не проверялось и почему
main.