Мастер: «Настроить позже» и единый расчёт шагов для мастера и главной

- Необязательные шаги «Модули», «Оповещения и копии», «Учётные записи» и каждый
  модуль отдельно можно отложить кнопкой «Настроить позже»: мастер считает их
  завершёнными, глава «Запуск» закрывается. Отметку можно снять («Вернуть в
  мастер»); как только шаг настроен по-настоящему, отметка не показывается.
  Хранится в /var/lib/bj/.bj/wizard-deferred.json (wizdefer.go).
- Шаг «Оповещения и копии» показывает, что уже настроено: почта, Zabbix,
  резервные копии — видно частичную настройку, сделанную в «Настройке».
- Плашка «Требуется настройка — N из M» на главной считалась по старому списку
  из 9 шагов и расходилась с мастером. Теперь и мастер, и главная используют одну
  функцию wizDone и путь wizPath — те же шаги, лицензия и отметки «отложено».

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 19:23:29 +03:00
parent 551448216c
commit efe56bdde1
7 changed files with 175 additions and 29 deletions
+9 -20
View File
@@ -5,7 +5,6 @@ package lkgateway
import (
"context"
"strings"
"sync"
"time"
@@ -41,28 +40,18 @@ func setupProbes(rc *RuntimeConfig) (string, int) {
return setupProbeCache.validata, setupProbeCache.certs
}
// setupSteps — шаги мастера, которые относятся к этой установке (по лицензии), и выполнены ли они.
// setupSteps — шаги мастера этой установки и выполнены ли они: ровно тот путь и те же
// правила, что в мастере (wizPath + wizDone), чтобы плашка на главной не расходилась с ним.
func setupSteps(rc *RuntimeConfig) []SetupStep {
s := rc.Snapshot()
mnp := moduleAllowed(rc, "quik-mnp")
validata, certs := setupProbes(rc)
steps := []SetupStep{
{1, "Лицензия", licenseStatus(rc).Valid},
{2, "База bj", s.Postgres.DSN != ""},
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
done := wizDone(ctx, rc, validata, certs > 0)
path, _ := wizPath(rc, done, 0)
var steps []SetupStep
for _, n := range path {
steps = append(steps, SetupStep{n, wizStepTitles[n], done[n]})
}
if mnp {
steps = append(steps, SetupStep{3, "Учёт DEPO", strings.TrimSpace(s.Fancy.Server) != "" && s.Fancy.DepoTablesCheckOK && s.Fancy.DepoJobCheckOK})
}
steps = append(steps, SetupStep{4, "Наша организация", doneOrg(s)})
if mnp {
steps = append(steps, SetupStep{5, "QUIK МНП", doneQuik(s)})
}
steps = append(steps,
SetupStep{6, "Валидата", validata != "" || (s.Crypto.Provider != "" && s.Crypto.Provider != "stub" && s.Crypto.ModulePath != "")},
SetupStep{7, "Шлюз НРД", doneNSD(s)},
SetupStep{8, "Ключ и сертификаты", certs > 0},
SetupStep{9, "Оповещения и копии", doneAlerts(s)},
)
return steps
}