From 2c01ec2927100606ce09f19e8a41c3ece49d986a Mon Sep 17 00:00:00 2001 From: zuevav Date: Mon, 5 Oct 2026 14:59:36 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B7=D0=B5=D1=80=D0=B2=D0=BD?= =?UTF-8?q?=D0=BE=D0=B5=20=D0=BA=D0=BE=D0=BF=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5:=20=D0=BF=D0=BE=D0=BB=D1=8F=20=D1=84=D0=BE?= =?UTF-8?q?=D1=80=D0=BC=D1=8B=20=D0=B2=20=D1=81=D1=82=D0=BE=D0=BB=D0=B1?= =?UTF-8?q?=D0=B8=D0=BA,=20=D0=B4=D0=B0=D1=82=D0=B0=20=D0=BF=D0=BE=D1=81?= =?UTF-8?q?=D0=BB=D0=B5=D0=B4=D0=BD=D0=B5=D0=B9=20=D0=BA=D0=BE=D0=BF=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=BE-=D1=80=D1=83=D1=81=D1=81=D0=BA=D0=B8;=20g?= =?UTF-8?q?ofmt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi --- internal/lkgateway/admin.go | 1 + internal/lkgateway/backup.go | 9 +++++++++ internal/lkgateway/depoevents.go | 6 +++--- internal/lkgateway/quikhooks.go | 2 +- internal/lkgateway/runtimeconfig.go | 10 +++++----- internal/lkgateway/web/templates/admin_setup.html | 5 +++-- internal/lkgateway/web/templates/admin_wizard.html | 3 ++- 7 files changed, 24 insertions(+), 12 deletions(-) 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); }