Мастер: «Настроить позже» и единый расчёт шагов для мастера и главной
- Необязательные шаги «Модули», «Оповещения и копии», «Учётные записи» и каждый модуль отдельно можно отложить кнопкой «Настроить позже»: мастер считает их завершёнными, глава «Запуск» закрывается. Отметку можно снять («Вернуть в мастер»); как только шаг настроен по-настоящему, отметка не показывается. Хранится в /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:
@@ -56,6 +56,7 @@ func registerSetup(mux *http.ServeMux, a *admin, rc *RuntimeConfig, svc *Service
|
||||
h.renderSetup(w, r, "")
|
||||
})
|
||||
mux.HandleFunc("/admin/setup/postgres", h.savePostgres)
|
||||
registerWizDefer(mux) // «Настроить позже» в мастере
|
||||
mux.HandleFunc("/admin/setup/postgres/quick-start", h.quickStartPostgres)
|
||||
h.registerPGMove(mux)
|
||||
h.registerFancy(mux) // вкладка «Обмен Fancy (MSSQL)»
|
||||
@@ -200,8 +201,9 @@ type WizardData struct {
|
||||
StepRequired bool
|
||||
StepTitle string
|
||||
ChapterTitle string
|
||||
ChaptersLine string // «Четыре главы: сервер, организация, НРД, запуск.»
|
||||
Modules []WizModule // глава «Запуск»: модули по лицензии
|
||||
ChaptersLine string // «Четыре главы: сервер, организация, НРД, запуск.»
|
||||
Modules []WizModule // глава «Запуск»: модули по лицензии
|
||||
Deferred map[int]bool // шаги, отложенные кнопкой «Настроить позже» (и ещё не настроенные)
|
||||
Done struct {
|
||||
License bool
|
||||
Depo bool
|
||||
@@ -279,18 +281,21 @@ func (h *setupHandlers) renderWizard(w http.ResponseWriter, r *http.Request) {
|
||||
d.Modules = wizModuleViews(h.rc, s)
|
||||
d.Done.Server, _ = timeStatus(r.Context())
|
||||
d.Done.Server = d.Done.Server && !s.WorkHours.SavedAt.IsZero() // и рабочее время организации задано
|
||||
def := loadWizDeferred()
|
||||
d.Done.Modules = true
|
||||
for _, m := range d.Modules {
|
||||
if !m.Ready {
|
||||
for i := range d.Modules {
|
||||
d.Modules[i].Deferred = !d.Modules[i].Ready && def.Modules[d.Modules[i].Key]
|
||||
if !d.Modules[i].Ready {
|
||||
d.Done.Modules = false
|
||||
}
|
||||
}
|
||||
// Главы (wizchapters.go): в пути только шаги, нужные этой установке — по лицензии и без сделанного
|
||||
// установщиком. Без ?step — первый несделанный обязательный шаг, а если всё сделано — проверка.
|
||||
d.Done.Users = doneUsers()
|
||||
_, wizUpdAvail := updateComponentRows(h.rc) // шаг 14 «Обновление»: зелёный, пока нет версии новее
|
||||
done := map[int]bool{1: d.Done.License, 2: d.Done.Postgres, 3: d.Done.Depo, 4: d.Done.Org, 5: d.Done.Quik, 6: d.Done.Crypto,
|
||||
7: d.Done.NSD, 8: d.Done.Certs || h.keyWiz.installed(), 9: d.Done.Alerts, 10: d.Done.TestRun, 11: d.Done.Modules, 12: d.Done.Server, 13: d.Done.Users, 14: !wizUpdAvail}
|
||||
// Выполнено ли — одно правило с плашкой на главной (wizDone), с учётом «Настроить позже».
|
||||
done := wizDone(r.Context(), h.rc, d.ValidataVer, d.Done.Certs || h.keyWiz.installed())
|
||||
// «отложено» показываем, только пока шаг не настроен по-настоящему
|
||||
d.Deferred = map[int]bool{9: def.Steps[9] && !d.Done.Alerts, 11: def.Steps[11] && !d.Done.Modules, 13: def.Steps[13] && !d.Done.Users}
|
||||
path, _ := wizPath(h.rc, done, 0)
|
||||
step := wizDefaultStep(path, done)
|
||||
if v := r.URL.Query().Get("step"); v != "" {
|
||||
|
||||
Reference in New Issue
Block a user