diff --git a/internal/lkgateway/admin.go b/internal/lkgateway/admin.go index fc920d9..6f83686 100644 --- a/internal/lkgateway/admin.go +++ b/internal/lkgateway/admin.go @@ -57,6 +57,7 @@ var templateFuncs = template.FuncMap{ "quikRecipientsInfo": quikRecipientsInfo, "lkPortfolioStates": lkPortfolioStates, "backupStatus": backupStatus, + "backupWhen": backupWhen, "intList": func(v ...int) []int { return v }, "nsdSegTip": nsdSegTip, "devOn": authTemplateFuncs["devOn"], diff --git a/internal/lkgateway/backup.go b/internal/lkgateway/backup.go index 63e570e..2f3daa7 100644 --- a/internal/lkgateway/backup.go +++ b/internal/lkgateway/backup.go @@ -177,3 +177,12 @@ func registerBackup(mux *http.ServeMux, rc *RuntimeConfig) { jsonOut(w, opResult(backupOp(ctx, "restore", backupParams(r)))) }) } + +// backupWhen — время копии из статуса (RFC 3339) в виде «05.10.2026 14:46». +func backupWhen(at string) string { + t, err := time.Parse(time.RFC3339, at) + if err != nil { + return at + } + return t.Local().Format("02.01.2006 15:04") +} diff --git a/internal/lkgateway/depoevents.go b/internal/lkgateway/depoevents.go index ebb3c5a..984856f 100644 --- a/internal/lkgateway/depoevents.go +++ b/internal/lkgateway/depoevents.go @@ -857,9 +857,9 @@ func depoAgentJobStatus(ctx context.Context, f FancyMSSQLSettings, adminUser, ad defer mdb.Close() var ( jobEnabled, schedEnabled, subType, subInt sql.NullInt64 - runDate, runTime, runStatus sql.NullInt64 - runMsg sql.NullString - now time.Time + runDate, runTime, runStatus sql.NullInt64 + runMsg sql.NullString + now time.Time ) err = mdb.QueryRowContext(ctx, `SELECT j.enabled, s.enabled, s.freq_subday_type, s.freq_subday_interval, h.run_date, h.run_time, h.run_status, h.message, GETDATE() diff --git a/internal/lkgateway/quikhooks.go b/internal/lkgateway/quikhooks.go index b15f7b5..77b37cf 100644 --- a/internal/lkgateway/quikhooks.go +++ b/internal/lkgateway/quikhooks.go @@ -47,7 +47,7 @@ func quikOutgoingBeforeSend(ctx context.Context, rc *RuntimeConfig, req *m2m.M2M if req == nil { return nil } - q := quikSettingsFor(rc, string(req.Header.GUID)) // тест «боевой ЛК → TEST3» — боевая запись (realtest.go) + q := quikSettingsFor(rc, string(req.Header.GUID)) // тест «боевой ЛК → TEST3» — боевая запись (realtest.go) if !quikActive(q) || !q.AutoOut || manualQuikSkipped(ctx) { // ручной ввод: заблокировано сотрудником return nil } diff --git a/internal/lkgateway/runtimeconfig.go b/internal/lkgateway/runtimeconfig.go index e96a836..f52d9cc 100644 --- a/internal/lkgateway/runtimeconfig.go +++ b/internal/lkgateway/runtimeconfig.go @@ -182,11 +182,11 @@ type FancyMSSQLSettings struct { // Обработка трансферных таблиц DEPO силами bj (вместо джобы SQL Agent bj2depo): // bj сам вызывает процедуру DepoJobProc каждые DepoJobEverySec секунд. - DepoJobRun bool `json:"depo_job_run"` - DepoJobMode string `json:"depo_job_mode"` // bj | sql-auto | sql-manual (пусто = не выбран) - DepoJobCheck string `json:"depo_job_check"` // результат последней проверки готовности - DepoJobCheckOK bool `json:"depo_job_check_ok"` - DepoJobCheckAt time.Time `json:"depo_job_check_at"` + DepoJobRun bool `json:"depo_job_run"` + DepoJobMode string `json:"depo_job_mode"` // bj | sql-auto | sql-manual (пусто = не выбран) + DepoJobCheck string `json:"depo_job_check"` // результат последней проверки готовности + DepoJobCheckOK bool `json:"depo_job_check_ok"` + DepoJobCheckAt time.Time `json:"depo_job_check_at"` // DepoProcCheck — работает ли обработка событий процедурами (BJ_PING), отдельно от запуска джобы. DepoProcCheck string `json:"depo_proc_check,omitempty"` DepoProcCheckOK bool `json:"depo_proc_check_ok,omitempty"` diff --git a/internal/lkgateway/web/templates/admin_setup.html b/internal/lkgateway/web/templates/admin_setup.html index 629fa42..21937f1 100644 --- a/internal/lkgateway/web/templates/admin_setup.html +++ b/internal/lkgateway/web/templates/admin_setup.html @@ -996,9 +996,10 @@

Копии сервера bj на сетевое хранилище

Что копируется: база bj (заявки, сделки, кабинет), база и папка шлюза НРД (настройки, сертификаты, полученные от НРД документы), настройки и данные bj. Пароль хранилища bj у себя не хранит — он лежит на сервере в файле, доступном только системе. Восстановить копию можно в мастере настройки (шаг 1, «Восстановить из резервной копии»).

-

{{if $bs}}Последняя копия: {{$bs.At}} — {{if $bs.OK}}✓ {{$bs.Dir}}, {{$bs.Msg}}{{else}}✗ {{$bs.Msg}}{{end}}{{else}}Копий ещё не было.{{end}}

+

{{if $bs}}Последняя копия: {{backupWhen $bs.At}} — {{if $bs.OK}}✓ {{$bs.Dir}}, {{$bs.Msg}}{{else}}✗ {{$bs.Msg}}{{end}}{{else}}Копий ещё не было.{{end}}

+
- +
diff --git a/internal/lkgateway/web/templates/admin_wizard.html b/internal/lkgateway/web/templates/admin_wizard.html index 0a92b10..29574a4 100644 --- a/internal/lkgateway/web/templates/admin_wizard.html +++ b/internal/lkgateway/web/templates/admin_wizard.html @@ -54,6 +54,7 @@ a.wstep:hover .bub { box-shadow:0 0 0 4px var(--accent-weak); }
Переустановка сервера? Восстановить из резервной копии

Если у вас есть резервная копия bj на сетевом хранилище (Настройка → Резервное копирование), можно восстановить её вместо настройки с нуля: вернутся настройки, пользователи, лицензия, журнал заявок, база и папка шлюза НРД. Текущие данные этого сервера будут заменены. bj и шлюз НРД на время восстановления остановятся — обычно 1–3 минуты.

+
@@ -65,7 +66,7 @@ a.wstep:hover .bub { box-shadow:0 0 0 4px var(--accent-weak); }