- ключ, подключённый мастером ключа, засчитывается сразу и в мастере, и на главной
(сверка справочника шлюза отстаёт)
- точка в заголовке шага — то же «выполнено», что в колонке (с «Настроить позже»)
- выход из мастера — «Выйти из мастера», не «Настроить позже»
- шаг «Обновление» — сразу после «Лицензии»; на шаге 1 — указание на него, без второй кнопки
- «Далее»/«Назад» со шага вне пути (сделан установщиком) — соседи по порядку глав
- последний шаг при несделанном обязательном — «Вернуться к шагу …», не «Перейти к работе»
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
want:=[]int{14,1,12,4,7,8,9,13,10}// обновление — первый пункт; без лицензии нет учёта DEPO, QUIK и модулей; база и Валидата — сделаны; учётные записи — перед проверкой
want:=[]int{1,14,12,4,7,8,9,13,10}// обновление — сразу после лицензии; без лицензии нет учёта DEPO, QUIK и модулей; база и Валидата — сделаны; учётные записи — перед проверкой
{{if .Done.License}}<p>Ключ продукта открывает модули bj и обновления.</p>
<dlclass="wiz-kv">
<dt>Организация</dt><dd>{{.Lic.Tenant}}</dd>
@@ -109,11 +109,8 @@
{{if and .Update .Update.HasUpdate}}
<divclass="wiz-info"style="display:block">
<pstyle="margin:0 0 6px;font-weight:600">Есть новая версия bj — {{.Update.Available}}</p>
<pclass="muted"style="margin:0 0 10px;font-size:13px">С исправлениями ядра, установщика и служб. Поставьте её до настройки: bj перезапустится примерно на 10 секунд.<br>{{.Update.Message}}</p>
{{else if .Done.License}}<divclass="wiz-ok"><iclass="wiz-ic"></i><span>Лицензия активна{{if .Update}}, установлена последняя версия bj{{end}}.</span></div>{{end}}
{{if .Done.License}}<detailsstyle="margin-top:12px"><summarystyle="cursor:pointer;color:var(--accent);font-size:13px">Сменить ключ продукта (обычно не нужно)</summary>
{{if .Done.Depo}}<p>Учёт DEPO подключён и проверен. Дальше — «Организация»: bj предложит реквизиты вашей организации из DEPO.</p>{{else}}<pclass="muted"style="font-size:13px">Не всё проверено — можно продолжить настройку (шаг 4 и дальше) и вернуться сюда позже. Пока обработка не работает, записи bj ждут в таблицах обмена со статусом TODO и будут обработаны, когда она заработает.</p>{{end}}
{{if .Done.Depo}}<p>Учёт DEPO подключён и проверен. Дальше — «Организация»: bj предложит реквизиты вашей организации из DEPO.</p>{{else}}<pclass="muted"style="font-size:13px">Не всё проверено — можно продолжить настройку (шаг «Организация» и дальше) и вернуться сюда позже. Пока обработка не работает, записи bj ждут в таблицах обмена со статусом TODO и будут обработаны, когда она заработает.</p>{{end}}
{{/* ============= ШАГ 2: База bj (PostgreSQL) ============= */}}
{{if eq .Step 2}}
<divclass="card">
<h2><spanclass="dot {{if .Done.Postgres}}ok{{else}}err{{end}}"></span>База данных bj (PostgreSQL)</h2>
<h2><spanclass="dot {{if .StepDone}}ok{{else}}err{{end}}"></span>База данных bj (PostgreSQL)</h2>
<p>База самого bj: журнал заявок и поручений, история обмена с НРД и DEPO, пользователи.</p>
{{if and .Done.Postgres (pgLocal .Settings.Postgres.DSN)}}<divclass="wiz-ok"><iclass="wiz-ic"></i><span>База готова{{if .PGSummary}}: {{.PGSummary}}{{end}}. Её создал установщик — ничего делать не нужно.</span></div>
<detailsstyle="margin-top:14px"{{if.Flash}}open{{end}}><summarystyle="cursor:pointer;color:var(--accent)">Хранить базу bj на своём сервере PostgreSQL (необязательно)</summary>
@@ -426,7 +423,7 @@
{{/* ============= ШАГ 4: Наша организация ============= */}}
<p>От имени вашей организации bj отправляет и принимает переводы. {{if .DepoLicensed}}Реквизиты bj берёт из DEPO — проверьте и сохраните.{{else}}Найдите себя в справочнике участников НРД.{{end}}</p>
{{if .Suggest}}{{if .Suggest.OrgName}}{{if not .Done.Org}}<divclass="wiz-ok"style="margin:0 0 14px"><iclass="wiz-ic"></i><span><strong>Определено из DEPO</strong>: {{.Suggest.OrgName}}, ИНН {{.Suggest.OrgINN}}, код {{.Suggest.OrgCode}}{{if .Suggest.AccountID}}, счёт НРД {{.Suggest.AccountID}}{{end}}. Поля ниже заполнены — проверьте и нажмите «Сохранить».</span></div>{{end}}{{end}}{{end}}
<p>Адрес и логин модуля неторговых поручений — у вашего администратора QUIK. Если модуля ещё нет, его подключает ARQA Technologies — письмо для них готово ниже.</p>
<pclass="muted"style="font-size:13.5px;margin:4px 0 0">bj сам ставит и настраивает шлюз (ИШ) и обменивается через него переводами с НРД. Доступ к контурам НРД — по заявке (как подать — ниже).</p>
{{template "igateInstall" .}}
<divclass="wiz-info"style="margin:12px 0 0"><span><b>Доступ к контурам НРД</b> — заявкой на сайте НРД, письмами НРД не подключает. Страница сервиса <ahref="https://www.nsd.ru/services/novye-servisy/moex-most-dlya-m2m/"target="_blank"rel="noopener">MOEX МОСТ для M2M</a>, раздел «Как подключиться»: заявка на тестирование — система МОСТ, тип «M2M Автотестирование», затем «M2M Подключение»; после тестирования — договор с НРД и боевой контур.</span></div>
@@ -507,7 +504,7 @@
{{/* ============= ШАГ 8: Ключ и сертификаты (после шлюза: ключ ставится в профиль ИШ) ============= */}}
{{if eq .Step 8}}
<divclass="card">
<h2><spanclass="dot {{if .Done.Certs}}ok{{else}}err{{end}}"></span>Ключ и сертификаты</h2>
<h2><spanclass="dot {{if .StepDone}}ok{{else}}err{{end}}"></span>Ключ и сертификаты</h2>
<p>Ключ электронной подписи организации для обмена с НРД. Его выдаёт Удостоверяющий центр Московской биржи: вам передадут архив ключа и пароль.</p>
{{if not .IgateOK}}<divclass="wiz-info"><span>Ключ ставится в шлюз НРД — сначала установите <ahref="/admin/wizard?step=7">шлюз</a>.</span></div>
{{else if .KeyWiz}}<divclass="keywiz">{{template "keyWizBody" .KeyWiz}}</div>{{end}}
@@ -549,7 +546,7 @@
{{/* ============= ШАГ 12: Время и сеть (глава «Сервер») ============= */}}
{{if eq .Step 12}}
<divclass="card">
<h2><spanclass="dot {{if .Done.Server}}ok{{else}}warn{{end}}"></span>Время и сеть</h2>
<h2><spanclass="dot {{if .StepDone}}ok{{else}}warn{{end}}"></span>Время и сеть</h2>
<p>Часовой пояс, точное время и адрес сервера в сети.</p>
{{/* ============= ШАГ 9: Оповещения и резервные копии ============= */}}
{{if eq .Step 9}}
<divclass="card">
<h2><spanclass="dot {{if .Done.Alerts}}ok{{else}}warn{{end}}"></span>Оповещения и резервные копии</h2>
<h2><spanclass="dot {{if .StepDone}}ok{{else}}warn{{end}}"></span>Оповещения и резервные копии</h2>
<p>bj напишет на почту, если НРД не отвечает, перевод застрял{{if .DepoLicensed}}, DEPO не обработал поручение{{end}} или истекает ключ, — и будет сам делать копии сервера. Настройте почтовый сервер, затем кому писать: администратору системы — о сбоях и обновлениях, отделам — о переводах и поручениях. Обмен работает и без этого, но о сбое тогда никто не узнает вовремя.</p>
<divclass="wiz-info"style="margin:10px 0"><span>Сейчас: почта — {{if and .Settings.Alerts.SMTP.Enabled .Settings.Alerts.SMTP.Host .Settings.Alerts.SMTP.To}}<bstyle="color:var(--ok)">✓ настроена</b>{{else}}<bstyle="color:var(--warn)">не настроена</b>{{end}}; Zabbix — {{if .Settings.Alerts.Zabbix.Enabled}}<bstyle="color:var(--ok)">✓ включён</b>{{else}}выключен{{end}}; резервные копии — {{if .Settings.Backup.Enabled}}<bstyle="color:var(--ok)">✓ включены</b>{{else}}<bstyle="color:var(--warn)">выключены</b>{{end}}. Шаг закрывается, когда есть оповещения (почта или Zabbix) и включены копии.</span></div>
<p>У каждого, кто работает с bj, — своя учётная запись: свой пароль и свои права, а в журнале видно, кто что сделал. Заведите сотрудников по ролям; права, пароли и вход через Active Directory меняются позже в разделе Настройка → Пользователи.</p>
{{if .Next}}{{if or .StepDone (not .StepRequired)}}<ahref="/admin/wizard?step={{.Next}}"class="btn wiz-next">Далее →</a>{{else}}<ahref="/admin/wizard?step={{.Next}}"class="btn wiz-skip"title="Можно вернуться к этому позже">Пропустить пока →</a>{{end}}{{else}}<ahref="/admin/"class="btn wiz-next">Перейти к работе →</a>{{end}}
{{if .Next}}{{if or .StepDone (not .StepRequired)}}<ahref="/admin/wizard?step={{.Next}}"class="btn wiz-next">Далее →</a>{{else}}<ahref="/admin/wizard?step={{.Next}}"class="btn wiz-skip"title="Можно вернуться к этому позже">Пропустить пока →</a>{{end}}{{else if .Unfinished}}<ahref="/admin/wizard?step={{.Unfinished}}"class="btn wiz-next">Вернуться к шагу «{{.UnfinishedT}}» →</a>{{else}}<ahref="/admin/"class="btn wiz-next">Перейти к работе →</a>{{end}}
// Мастер настройки — 4 главы вместо 10 шагов (05.10.2026). Внутри глав — прежние шаги (адреса ?step=N не
// Мастер настройки — главы вместо длинного списка шагов (05.10.2026). Внутри глав — прежние шаги (адреса ?step=N не
// меняются: на них ссылаются проверка готовности, письма, кнопки «Исправить»). Шаг показывается, только
// если он нужен этой установке:
// - не входит в лицензию (учёт DEPO и QUIK — «quik-mnp», модули) — шага нет вовсе;
@@ -14,8 +14,7 @@ var wizChapters = []struct {
Titlestring
Steps[]int
}{
{"Обновление",[]int{14}},
{"Сервер",[]int{1,2,6,12}},
{"Сервер",[]int{1,14,2,6,12}},// обновление — сразу после лицензии: без неё обновлений нет
{"Учёт и организация",[]int{3,4,5}},
{"НРД",[]int{7,8}},
{"Запуск",[]int{11,9,13,10}},
@@ -141,8 +140,27 @@ func wizNeighbours(path []int, current int) (prev, next int) {
return
}
}
iflen(path)>0{// текущий шаг не в пути (открыт по прямой ссылке) — «Далее» ведёт в начало пути
next=path[0]
// текущий шаг не в пути (сделан установщиком, открыт по прямой ссылке) — соседи по порядку глав,
// а не начало мастера
pos:=map[int]int{}
for_,c:=rangewizChapters{
for_,n:=rangec.Steps{
pos[n]=len(pos)
}
}
cur,known:=pos[current]
if!known{
iflen(path)>0{
next=path[0]
}
return
}
for_,n:=rangepath{
ifpos[n]<cur{
prev=n
}elseifnext==0{
next=n
}
}
return
}
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.