Мастер: одинаковые отметки шагов, «Обновление» после «Лицензии», переходы

- ключ, подключённый мастером ключа, засчитывается сразу и в мастере, и на главной
  (сверка справочника шлюза отстаёт)
- точка в заголовке шага — то же «выполнено», что в колонке (с «Настроить позже»)
- выход из мастера — «Выйти из мастера», не «Настроить позже»
- шаг «Обновление» — сразу после «Лицензии»; на шаге 1 — указание на него, без второй кнопки
- «Далее»/«Назад» со шага вне пути (сделан установщиком) — соседи по порядку глав
- последний шаг при несделанном обязательном — «Вернуться к шагу …», не «Перейти к работе»

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
fontvielle
2026-10-21 23:50:02 +03:00
parent f1065e369a
commit 90aacf9ef4
7 changed files with 65 additions and 33 deletions
+7 -1
View File
@@ -6,6 +6,7 @@ package lkgateway
import (
"context"
"sync"
"sync/atomic"
"time"
"git.zetit.ru/zuevav/Bridge-and-Join-s/internal/cryptocli"
@@ -40,13 +41,18 @@ func setupProbes(rc *RuntimeConfig) (string, int) {
return setupProbeCache.validata, setupProbeCache.certs
}
// keyWizInstalled — мастер ключа дошёл до конца в этом запуске bj (ключ подключён, подпись подтверждена).
// Сверка справочника шлюза асинхронная и отстаёт; по этой отметке шаг «Ключ подписи» выполнен сразу —
// и в мастере, и в плашке на главной.
var keyWizInstalled atomic.Bool
// setupSteps — шаги мастера этой установки и выполнены ли они: ровно тот путь и те же
// правила, что в мастере (wizPath + wizDone), чтобы плашка на главной не расходилась с ним.
func setupSteps(rc *RuntimeConfig) []SetupStep {
validata, certs := setupProbes(rc)
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
done := wizDone(ctx, rc, validata, certs > 0)
done := wizDone(ctx, rc, validata, certs > 0 || keyWizInstalled.Load())
path, _ := wizPath(rc, done, 0)
var steps []SetupStep
for _, n := range path {