Первичная настройка: ключ спрашивается один раз, затем обновления, модули и «Время и сеть»; DEPO одним шагом
- Первая страница — только администратор (и восстановление из копии); ключ продукта — после создания администратора, на шаге «Лицензия». Консоль первой загрузки ключ больше не спрашивает (для образа с комплектом bj). - «Подготовка модулей» начинает с проверки обновлений: есть — ставит (bj перезапускается, страница ждёт и продолжает), нет — дальше; выпуск, который уже ставили, по кругу не ставится. Затем модули лицензии и переход на «Время и сеть» (шаг 12) — часовой пояс клиент выбирает сам, шаг больше не проскакивает. - Учёт DEPO одним шагом: bj сам находит базу Fancy DEPO на сервере (по таблицам OD_FACES/OD_RESTS), имя базы не спрашивается. Один скрипт создаёт логин bj, таблицы обмена и права; по выбору — задание обработки в SQL Agent или обработка на сервере bj. Выполнить сразу (логин администратора СУБД не сохраняется), скачать скрипт для администратора или подключиться готовым логином. - Восстановление из копии — только на первой странице, в мастере его больше нет. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -18,12 +18,12 @@
|
||||
</style>
|
||||
<div class="prep-head">
|
||||
<h1>Подготовка модулей</h1>
|
||||
<p>Ключ принят: <b>{{.Tenant}}</b>. bj ставит и запускает модули, которые входят в вашу лицензию, — затем откроется мастер настройки.</p>
|
||||
<p>Ключ принят: <b>{{.Tenant}}</b>. bj проверяет обновления, ставит и запускает модули, которые входят в вашу лицензию, — затем откроется мастер настройки.</p>
|
||||
</div>
|
||||
<div class="card prep">
|
||||
{{if .Flash}}<p style="margin:0 0 6px;color:var(--ok)">✓ {{.Flash}}</p>{{end}}
|
||||
<p class="muted" style="margin:0 0 4px;font-size:13px">Лицензия: план {{.Plan}}, {{.Until}}</p>
|
||||
<div id="prep-rows"><p class="muted" style="margin:12px 0">Проверяю состав лицензии…</p></div>
|
||||
<div id="prep-rows"><p class="muted" style="margin:12px 0">Проверяю обновления и состав лицензии…</p></div>
|
||||
<div id="prep-prog" style="display:none;margin-top:8px"><span class="muted" id="prep-stage" style="font-size:13px"></span><div class="prep-bar"><i id="prep-fill"></i></div></div>
|
||||
<div class="prep-foot">
|
||||
<span id="prep-sum" style="font-weight:600"></span>
|
||||
@@ -34,7 +34,7 @@
|
||||
(function(){
|
||||
var rows=document.getElementById('prep-rows'), sum=document.getElementById('prep-sum'), nxt=document.getElementById('prep-next');
|
||||
var prog=document.getElementById('prep-prog'), stage=document.getElementById('prep-stage'), fill=document.getElementById('prep-fill');
|
||||
var next={{.Next}}, started=false, redirect=null;
|
||||
var next={{.Next}}, started=false, redirect=null, boot=null, lost=0;
|
||||
function esc(s){return String(s==null?'':s).replace(/[&<>"]/g,function(c){return{'&':'&','<':'<','>':'>','"':'"'}[c]})}
|
||||
var ic={ok:'<span style="color:var(--ok)">✓</span>',run:'<span class="spin" aria-label="идёт"></span>',wait:'<span class="muted">○</span>',warn:'<span style="color:var(--warn)">⚠</span>',err:'<span style="color:var(--err)">✗</span>',info:'<span class="muted">ⓘ</span>'};
|
||||
function mb(n){return (n/1048576).toFixed(1).replace('.',',')+' МБ'}
|
||||
@@ -43,7 +43,7 @@
|
||||
if(d.running && d.stage){ prog.style.display=''; stage.textContent=d.stage+(d.total?' — '+mb(d.done)+' из '+mb(d.total):''); fill.style.transform='scaleX('+(d.total?Math.min(1,d.done/d.total):0.15)+')'; }
|
||||
else prog.style.display='none';
|
||||
var bad=d.items.filter(function(it){return it.state==='err'}).length, warn=d.items.filter(function(it){return it.state==='warn'}).length;
|
||||
if(d.running || d.busy || (d.pending && !d.finished)){ sum.innerHTML='<span class="muted" style="font-weight:400">Ставлю и запускаю модули… обычно меньше минуты</span>'; nxt.style.display='none'; return false; }
|
||||
if(d.running || d.busy || (d.pending && !d.finished)){ sum.innerHTML='<span class="muted" style="font-weight:400">Обновления и модули… обычно пара минут</span>'; nxt.style.display='none'; return false; }
|
||||
nxt.style.display='';
|
||||
if(bad){ sum.innerHTML='<span style="color:var(--err)">✗ Не всё установилось</span> <span class="muted" style="font-weight:400">— продолжить можно, модули поставятся из «Настройка → Обновления»</span>'; return true; }
|
||||
if(warn){ sum.innerHTML='<span style="color:var(--ok)">✓ Готово</span> <span class="muted" style="font-weight:400">— есть замечание (⚠), продолжать можно</span>'; return true; }
|
||||
@@ -53,9 +53,14 @@
|
||||
}
|
||||
function poll(){
|
||||
fetch('/admin/setup/prepare/status',{cache:'no-store'}).then(function(r){return r.json()}).then(function(d){
|
||||
lost=0;
|
||||
if(boot!==null && d.boot!==boot){ started=false; if(redirect){ clearTimeout(redirect); redirect=null; } } // bj перезапустился после обновления — продолжаем
|
||||
boot=d.boot;
|
||||
if(!started && d.pending && !d.running && !d.finished){ started=true; fetch('/admin/setup/prepare/start',{method:'POST',cache:'no-store'}).then(function(){ setTimeout(poll,600); }); draw(d); return; }
|
||||
if(!draw(d)) setTimeout(poll,1500);
|
||||
}).catch(function(){ setTimeout(poll,3000); });
|
||||
}).catch(function(){ // bj перезапускается (обновилось ядро) — ждём
|
||||
if(++lost>1){ prog.style.display='none'; sum.innerHTML='<span class="spin"></span> <span class="muted" style="font-weight:400">bj перезапускается после обновления — подождите…</span>'; nxt.style.display='none'; }
|
||||
setTimeout(poll,3000); });
|
||||
}
|
||||
poll();
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user