Обновления несут установщик: bj-installer — компонент ядра, refresh-system переписывает службы и скрипты; мастер предлагает обновиться сразу после ввода ключа

Правки установки приезжают обновлением с сервера лицензий, образ ISO пересобирать не нужно.
Прежний установщик обновлений bj-installer не знает — он откладывается и ставится после
перезапуска bj-server (ensureSplitModules).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-09-24 17:44:28 +03:00
parent 222699168d
commit fdd70c06dd
6 changed files with 74 additions and 6 deletions
+14 -4
View File
@@ -169,10 +169,11 @@ type WizardData struct {
Lic LicenseStatus
DepoLicensed bool
DepoDB string
ValidataVer string // версия установленной «Валидаты Клиент L» (пусто — не установлена)
CryptoSvc string // состояние службы bj-crypto (systemctl is-active)
PGSummary string // куда подключена база bj, без пароля
AutoDone []string // шаги до текущего, уже выполненные без участия пользователя, — с пояснением
ValidataVer string // версия установленной «Валидаты Клиент L» (пусто — не установлена)
CryptoSvc string // состояние службы bj-crypto (systemctl is-active)
PGSummary string // куда подключена база bj, без пароля
Update *UpdateStatus // шаг 1: есть ли на сервере обновлений версия новее, чем в образе
AutoDone []string // шаги до текущего, уже выполненные без участия пользователя, — с пояснением
Certs []cryptocli.Certificate
Flash string
Done struct {
@@ -263,6 +264,15 @@ func (h *setupHandlers) renderWizard(w http.ResponseWriter, r *http.Request) {
}
}
d.Step = step
if step == 1 && d.Done.License {
// Образ ставит ядро той версии, с которой собран; всё, что вышло позже (исправления ядра,
// установщика и служб), приезжает обновлением — предлагаем его сразу после ввода ключа.
ctx, cancel := context.WithTimeout(r.Context(), 8*time.Second)
if st, err := NewUpdater(h.rc).CheckForUpdate(ctx); err == nil {
d.Update = &st
}
cancel()
}
d.AutoDone = wizardAutoDone(&d)
render(w, h.tpl.a.wizard, d)
}