ИШ ждёт флешку с ключом — bj это видит и перезапускает шлюз сам; итог установки ключа; список копий; скрытые блоки

- ИШ без флешки ждёт её в окне Валидаты («Вставьте ключевой носитель»): статус «ждёт флешку», без кнопки
  переустановки; сторож не тратит перезапуски, а когда флешка появилась — перезапускает ИШ сам; письмо
- шаг ключа: итог — карточка «Ключ подключён», «Заменить ключ» вместо «Установить ещё один», этапы свёрнуты
- копии: «Копии на хранилище» ищет там же, куда ложится копия (подпапка по умолчанию bj-backup, не из старых
  настроек); поля показываются разобранными
- [hidden] прячет всегда (пустая полоска под версией ИШ); «Шлюз НРД на другом сервере?» — что это за адрес

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-10-07 00:11:48 +03:00
parent 5abf71e3ed
commit c62225dd7d
10 changed files with 86 additions and 21 deletions
@@ -13,6 +13,13 @@
.kw-tile b{display:block;font-size:14.5px}
.kw-tile small{display:block;color:var(--muted);font-size:13px;line-height:1.4;margin-top:3px}
.kw-panel{margin-top:16px}
.kw-done{display:flex;gap:14px;align-items:flex-start;padding:16px 18px;margin-top:4px;border-radius:14px;background:color-mix(in srgb,var(--ok) 9%,var(--card));border:1px solid color-mix(in srgb,var(--ok) 32%,transparent)}
.kw-done-ic{flex:none;width:30px;height:30px;border-radius:50%;background:var(--ok);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px}
.kw-done-b b{display:block;font-size:15.5px;margin-top:4px}
.kw-done-b p{margin:6px 0 0;font-size:14px;line-height:1.5}
.kw-done-act{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:12px}
.kw-link{background:none;border:0;padding:0;color:var(--accent);font:inherit;font-size:13.5px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.kw-howto{margin:0 0 12px}.kw-howto summary{cursor:pointer;color:var(--accent);font-size:13.5px;margin-bottom:8px}
.kw-drive{display:flex;gap:10px;align-items:flex-start;padding:10px;border:1px solid var(--border,#ddd);border-radius:8px;cursor:pointer;margin:0}
.kw-pad{height:200px;margin-top:12px;border:2px dashed var(--border);border-radius:12px;display:flex;align-items:center;justify-content:center;text-align:center;padding:0 16px;color:var(--muted);user-select:none;-webkit-user-select:none;touch-action:none;cursor:default}
.kw-pad.on{border-color:var(--accent);background:var(--accent-weak);color:var(--accent);cursor:crosshair}
@@ -83,6 +90,7 @@
<div id="kw-main">
{{/* ===== Лента шагов — когда путь выбран (флешка с ключом или новая флешка из архива) ===== */}}
{{if or $s.StagingID $s.Done}}
{{if $s.Done}}<details class="kw-howto"><summary>Как прошла установка — {{len $s.Steps}} этапов</summary>{{end}}
<div class="card">
<ol style="list-style:none;padding:0;margin:0;display:grid;gap:12px">
{{range $i, $step := $s.Steps}}
@@ -102,22 +110,21 @@
{{end}}
</ol>
</div>
{{if $s.Done}}</details>{{end}}
{{/* ===== Действие в зависимости от состояния ===== */}}
{{end}}
{{if $s.Done}}
<div class="card" style="background:var(--ok-weak)">
<h2>✓ Готово</h2>
<p>{{if $s.MediaDevice}}Ключ с флешки подключён к шлюзу НРД как есть и подписывает — флешка не менялась.{{else}}Ключ записан на флешку, справочник сертификатов сформирован, ключ подписывает.{{end}}</p>
{{if $s.Backup}}<p class="muted">Бэкап прежнего носителя: <code>{{$s.Backup}}</code></p>{{end}}
<div style="display:flex;gap:8px;margin-top:12px;flex-wrap:wrap">
{{if devOn}}<form method="post" action="/admin/setup/test-nsd" style="margin:0">
<input type="hidden" name="scenario" value="2001">
<button type="submit" class="btn btn-ok">→ Отправить тестовый документ роботу</button>
</form>{{else if not .InWizard}}<a href="/admin/wizard?step=8" class="btn btn-ok">→ Вернуться в мастер настройки</a> <a href="/admin/status" class="btn btn-secondary">Проверить подключения</a>{{end}}
<form method="post" action="/admin/setup/keywizard/reset" style="margin:0">{{template "keyWizRet" .}}
<button type="submit" class="btn btn-secondary">Установить ещё один ключ</button>
</form>
<div class="kw-done">
<span class="kw-done-ic" aria-hidden="true">✓</span>
<div class="kw-done-b">
<b>Ключ подключён и подписывает</b>
<p>{{if $s.MediaDevice}}Флешка с ключом подключена к шлюзу НРД как есть — на неё ничего не записывалось.{{else}}Ключ записан на флешку, справочник сертификатов сформирован, шлюз НРД подписывает им документы.{{end}} Флешка должна оставаться в сервере: без неё шлюз не запустится.</p>
{{if $s.Backup}}<p class="muted" style="font-size:12.5px">Копия прежнего содержимого флешки: <code>{{$s.Backup}}</code></p>{{end}}
<div class="kw-done-act">
{{if devOn}}<form method="post" action="/admin/setup/test-nsd" style="margin:0"><input type="hidden" name="scenario" value="2001"><button type="submit" class="btn btn-ok">→ Отправить тестовый документ роботу</button></form>{{else if not .InWizard}}<a href="/admin/wizard?step=8" class="btn btn-ok">→ Вернуться в мастер настройки</a> <a href="/admin/status" class="btn btn-secondary">Проверить подключения</a>{{end}}
<form method="post" action="/admin/setup/keywizard/reset" style="margin:0">{{template "keyWizRet" .}}<button type="submit" class="kw-link" title="Когда истечёт сертификат или понадобится ключ другого контура">Заменить ключ</button></form>
</div>
</div>
</div>
{{else if and $s.StagingID $s.MediaDevice}}