feat(node): configure system environment through the desktop workflow

This commit is contained in:
DCCONSTRUCTIONS
2026-09-05 19:46:52 +03:00
parent 15bb793e5e
commit 59e14c5bc0
29 changed files with 929 additions and 81 deletions
@@ -21,6 +21,8 @@ capabilities или готовностью к съёмке. Устройства
## Node: согласованное размещение
- Верхний раздел «Система» вместо «Состояние системы».
- Первый пункт слева — «Настройка окружения»: кнопка «Сконфигурировать»
запускает общий версионный профиль системных действий с проверяемыми этапами.
- «Обзор БК»: ОС, архитектура, CPU/RAM, имя, сводка фактических подключений.
Название редактируется в блоке «Название БК». Самоподтверждающий зелёный
статус «Node работает» удаляется. Сведения имеют время получения.
@@ -32,8 +34,9 @@ capabilities или готовностью к съёмке. Устройства
привязки к Core. Подключение Core отделено от настройки сетевого транспорта.
- «Диагностика»: существующий очищенный отчёт и замечания инвентаризации.
Это ограниченная диагностика, не полный support bundle всех будущих модулей.
- Отдельная «Конфигурация системы» удаляется. Состояния SSH/Tailscale и
оборудования входят в сводку; операции остаются в своих подразделах.
- Прежняя пассивная «Конфигурация системы» заменена рабочей «Настройкой
окружения» по последующему уточнению владельца. Состояния входят в обзор;
полный сценарий подготовки доступен в первом пункте «Системы».
- Верхние «Устройства» предназначены для драйверных K1, D455 и следующих
сенсоров. Системный USB-список там не дублируется. В этом приращении
вкладка недоступна до появления рабочего подключения через драйвер;
@@ -142,7 +145,7 @@ adapter и K1 Bridge в общей с БК локальной сети. Близ
## Порядок реализации и приёмка
1. Текущее приращение: перенос существующих страниц в «Систему», обзор БК,
переименование полей, устранение отдельной конфигурации и self-status.
переименование полей, устранение self-status и единая настройка окружения.
Сборка .deb и GUI-проверка на физическом Mini.
2. Закрыть оставшиеся системные проверки P1 по предыдущему отчёту:
чистая установка, GUI upgrade/repair, reboot и SSH lifecycle без консоли.
@@ -160,7 +163,7 @@ Select/TextField/TextAreaField, Window/ConfirmationModal, StatusBadge,
ActivityIndicator, ToastStack. Новых визуальных примитивов и копий DG нет.
Для текущей приёмки: USB доступен из «Системы»; прежних remote/setup маршрутов
нет; имя БК сохраняется; сводка не объявляет подключение камеры по USB готовым
нет (новая настройка — environment); имя БК сохраняется; сводка не объявляет подключение камеры по USB готовым
драйвером; Tailscale/SSH открываются из сводки; плюс SSH работает после переноса;
темы/узкое окно и recovery сеанса не нарушены. Для будущего сопряжения:
добавленный аппарат сохраняется после reload/restart и открывает именно
@@ -192,3 +195,66 @@ Go race tests проверяют ошибку чтения отдельно от
адресов без вымышленных данных. Через UI изолированной ноды подтверждены
«Нет сведений» в сводке, сообщение об ошибке на странице сети и появление
интерфейса после восстановления и нажатия «Обновить сведения».
## Уточнение владельца: единая настройка окружения (0.4.0)
Эта поправка заменяет раннее решение об удалении страницы конфигурации.
Оператор получает чистую поддерживаемую систему и .deb. Пакет устанавливает
минимум для открытия приложения и непривилегированной службы. После запуска
первым слева открывается «Настройка окружения». Кнопка «Сконфигурировать»
выполняет весь текущий системный профиль; ручные действия инженера по SSH
не считаются продуктовой реализацией или приёмкой.
Единый источник этапов — `internal/node/environment-profile.json`. Он входит
и в API/UI, и в установленный пакет. Текущие автоматические этапы:
1. Проверка совместимости системы и архитектуры.
2. Установка недостающих OpenSSH Server и системных зависимостей.
3. Настройка службы БК и автозапуска, включая разрешение чтения netlink.
4. Получение интерфейсов и адресов именно из непривилегированной службы БК.
5. Получение USB-инвентаризации из той же службы.
6. Подключение реестра доверенных ключей, проверка конфигурации и запуск SSH.
7. Установка Tailscale и проверка его системной службы.
В этом же разделе доступны реестр доверенных SSH-устройств с формой добавления
публичного ключа и блок фактического входа в Tailscale. Установленная служба
не означает зарегистрированный ключ, удалённый SSH-вход или авторизованную
частную сеть. Эти состояния показываются отдельно по наблюдаемому результату.
Ключ и вход требуют действия оператора через UI; помощник не подставляет
инженерные ключи и не использует общую учётную запись из пакета.
Каждая строка проходит ожидание → выполнение → готово/ошибка. Зависимые от
неуспешного этапа строки блокируются, независимые проверки продолжаются.
Повторный запуск заново проверяет результат, сохраняет существующие identity,
ключи и сетевые предпочтения; завершённая ранее строка не даёт автоматическую
галочку новому запуску. Закрытие окна не прерывает системное задание или dpkg.
Последний результат сохраняется атомарно; повторное открытие показывает его,
прерванное заданием/перезагрузкой выполнение не выдаётся за успех.
Фиксированный polkit-helper запускает отдельное root-owned systemd-задание.
Из UI не принимаются команды, пути, имена пакетов или произвольные аргументы.
Web API читает состояние, но не запускает привилегированные действия.
После изменения службы native launcher обновляет локальный сеанс. Повторная
установка/удаление пакета во время задания отклоняется с понятной причиной;
блокировки APT не удаляются и активная транзакция не завершается принудительно.
Исправление netlink из 0.3.2 теперь принадлежит этому сценарию: managed drop-in
устанавливается кнопкой настройки. Проверяется фактический доступ службы к
сети без CAP_NET_ADMIN. На этом этапе пустые/недоступные сведения различаются.
Чужие конфигурации в управляемых путях сохраняются и дают конфликт, который
нельзя скрывать зелёной галочкой или ручным исправлением только на Mini.
Любое следующее необходимое изменение ОС должно расширять версионный профиль,
его скрипт, проверку результата и сценарий GUI-приёмки на чистой системе.
Во всех текстах операторского интерфейса используется «система». Название и
версия ОС выводятся один раз в «Обзор БК» из фактической инвентаризации.
Название дистрибутива не является частью навигации, форм SSH, системных
подтверждений или ошибок. Это не расширяет совместимость: профиль пакета
по-прежнему допускает только Ubuntu 24.04 LTS Desktop amd64.
Приёмка этого приращения требует запуска именно штатной кнопкой на Mini,
наблюдения этапов, повторной настройки без потери доступа/identity, проверки
SSH-формы и состояния Tailscale. Чистая установка, перезагрузка и полный
GUI upgrade/remove остаются отдельными проверками P1; отладочный вызов
helper по SSH не заменяет ни одну из них.