Мастер: «Далее» на шаге ключа сразу после установки + надёжная сверка справочника

После успешной установки ключа на шаге «Ключ и сертификаты» не появлялась
кнопка «Далее»: шаг считался выполненным только по асинхронной сверке
справочника ИШ (nsdCertsCheck), а она сразу после установки отваливалась по
таймауту — root-воркер был занят перезапуском ИШ и повторной активацией
профиля. Ключ при этом уже подключён и подписывает.

- refreshCertStore: повторяет сверку до 5 раз (воркер освобождается — проходит),
  вместо одной попытки с таймаутом.
- Шаг 8 в мастере выполнен, если справочник собран ИЛИ мастер ключа прошёл до
  конца (ИШ подтвердил подпись) — «Далее» появляется сразу, не дожидаясь сверки.
  Добавлен потокобезопасный keyWizardState.installed().

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
fontvielle
2026-10-21 14:32:58 +03:00
parent ed2d0ce4e5
commit 1659a15f81
4 changed files with 40 additions and 17 deletions
+13
View File
@@ -55,6 +55,19 @@ func newKeyWizardState() *keyWizardState {
return &keyWizardState{Steps: defaultKeySteps()}
}
// installed — мастер ключа прошёл до конца (ключ подключён и ИШ подтвердил подпись).
// Это более надёжный признак, чем асинхронная сверка справочника: по нему шаг
// «Ключ и сертификаты» считается выполненным сразу, не дожидаясь перечитывания
// справочника. nil-приёмник допустим (мастер ещё не запускался).
func (s *keyWizardState) installed() bool {
if s == nil {
return false
}
s.mu.Lock()
defer s.mu.Unlock()
return s.Done
}
// reset обнуляет поля прогона, НЕ трогая мьютекс (вызывать под Lock).
func (s *keyWizardState) reset() {
s.StagingID = ""