База bj на своём PostgreSQL; «Не заполнено: …» для пустых полей; запись канала ИШ — в фоне, с ходом на странице

- шаг «База bj»: перенос на сервер PostgreSQL организации (проверка подключения, версии, прав, пустой базы;
  pg_dump → psql; сверка числа строк по таблицам; переключение и перезапуск); прежняя база — запасная копия;
  резервные копии: дамп внешней базы по её подключению, восстановление её не трогает
- все формы: пустые видимые обязательные поля называются по имени и подсвечиваются; DEPO — и на сервере
- «Обновить/Создать канал»: в фоне bj, ход по этапам с таймером (и после перезагрузки страницы), переходы
  заблокированы до конца, в конце проверка, что шлюз загрузил канал; состояние ИШ во время записи — без
  очереди к root-обработчику (страница больше не висит на «Проверяю…»)

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:00:35 +03:00
parent 3a9bc5d7fa
commit 4adc1398f6
16 changed files with 832 additions and 50 deletions
+8 -1
View File
@@ -393,8 +393,15 @@ func (h *setupHandlers) depoSetupDo(ctx context.Context, r *http.Request, step d
switch mode {
case "auto":
au := strings.TrimSpace(r.FormValue("admin_user"))
var miss []string
if au == "" {
return fail("введите логин и пароль администратора SQL (они используются один раз и не сохраняются)")
miss = append(miss, "логин администратора SQL")
}
if r.FormValue("admin_password") == "" {
miss = append(miss, "пароль администратора SQL")
}
if len(miss) > 0 {
return fail("не заполнено: " + strings.Join(miss, ", ") + " (они используются один раз и не сохраняются)")
}
if bad := depoBjCreds(r, &s); bad != "" {
return fail(bad)