diff --git a/internal/lkgateway/admin.go b/internal/lkgateway/admin.go index d3603fe..d7a032a 100644 --- a/internal/lkgateway/admin.go +++ b/internal/lkgateway/admin.go @@ -629,6 +629,9 @@ type statusData struct { StripFrom string // начало полосы Fails []SendFailView // недоставленные переводы Probe bool // только что запрошена проверка связи + Units []UnitView // службы bj и модулей + Health []HealthStatus // фоновые компоненты + LastTest any // последний сквозной тестовый прогон } // RegisterAdmin вешает HTML-маршруты /admin/* на mux. Возвращает admin @@ -1019,6 +1022,7 @@ func (a *admin) renderStatus(w http.ResponseWriter, r *http.Request, opts CheckO page: pg, Checks: s.Checks, CheckedAt: s.CheckedAt, Strip: nsdStrip(titles, now), StripFrom: now.Add(-24 * time.Hour).Format("02.01 15:04"), Fails: sendFailViews(), Probe: r.URL.Query().Get("probe") != "", + Units: unitViews(globalRC), Health: HealthSnapshot(), LastTest: globalRC.Snapshot().LastTest, }) } diff --git a/internal/lkgateway/setup.go b/internal/lkgateway/setup.go index bfaf761..c1f964e 100644 --- a/internal/lkgateway/setup.go +++ b/internal/lkgateway/setup.go @@ -639,7 +639,6 @@ func (h *setupHandlers) setupData(w http.ResponseWriter, req *http.Request, flas LKAgent: lkAgentStatus(s), LKPreview: lkPreviewStatus(h.rc, req), LKData: lkDataView(h.rc), - Units: unitViews(h.rc), UpdateFailed: updateResultFailed(s.Update.LastResult), LKKeyMask: lkKeyForPage(s.LK.APIKey), Versions: systemVersions(h.rc), diff --git a/internal/lkgateway/unitswatch.go b/internal/lkgateway/unitswatch.go index db2e7d1..26b09b2 100644 --- a/internal/lkgateway/unitswatch.go +++ b/internal/lkgateway/unitswatch.go @@ -61,7 +61,7 @@ func watchedUnits(rc *RuntimeConfig) []watchedUnit { st += ", с " + v.Since } out = append(out, watchedUnit{Key: v.Unit, Title: v.Title, Unit: v.Unit, OK: v.OK(), State: st, - Hint: "Перезапустить — Настройка → Диагностика → «Службы», кнопка «Перезапустить»; если не поднимается — journalctl -u " + v.Unit + "."}) + Hint: "Перезапустить — Статус системы → «Службы», кнопка «Перезапустить»; если не поднимается — journalctl -u " + v.Unit + "."}) } // служба ключей — когда она нужна: включена в автозапуск (bj включает её при установке ключа) или уже работала; // на свежем сервере до установки ключа её может и не быть — это не сбой diff --git a/internal/lkgateway/web/templates/admin_handbook.html b/internal/lkgateway/web/templates/admin_handbook.html index 9244080..deced14 100644 --- a/internal/lkgateway/web/templates/admin_handbook.html +++ b/internal/lkgateway/web/templates/admin_handbook.html @@ -12,7 +12,7 @@ {{if not .Participants}}
Запросите его у НРД: Настройка → Диагностика → «Запросить справочник у НРД». Ответ придёт во входящие ИШ (~30–60 сек) и появится здесь.
+Запросите его у НРД: Статус системы → «Запросить справочник у НРД». Ответ придёт во входящие шлюза НРД (~30–60 сек) и появится здесь.
Ядро и модули работают отдельными службами: если служба модуля не запущена, его раздел в bj отвечает ошибкой связи. Здесь видно состояние и можно перезапустить службу, не заходя на сервер.
-| Служба | {{end}}Что делает | Состояние | С | |
|---|---|---|---|---|
{{.Unit}} | {{end}}
- {{.Title}} | -{{if .OK}}работает{{else}}не работает{{if devOn}}: {{.State}}{{with .Sub}} / {{.}}{{end}}{{with .Result}} ({{.}}){{end}}{{end}}{{end}} | -{{if .Since}}{{.Since}}{{else}}—{{end}} | -- |
Фоновые компоненты под самоконтролем: при сбое перезапускаются автоматически, при зависании — перезапуск всего сервиса и запись в «Новости». Ниже — живой статус.
- {{if .Health}} -| Компонент | Состояние | Последняя отметка | Последняя ошибка |
|---|---|---|---|
| {{healthLabel .Name}} | -{{if .Healthy}}работает{{else}}не отвечает{{end}} | -{{dur .Age}} назад | -{{if .LastErr}}{{.LastErr}}{{else}}—{{end}} | -
Компоненты ещё не зарегистрированы (сервис только запущен).
- {{end}} -Справочник участников M2M из НРД: по нему bj узнаёт код участника по ИНН контрагента. bj запрашивает его сам; кнопка — запросить сейчас.
- -Ответ НРД приходит через 30–60 секунд.
-Робот MC0012500000 эмулирует вторую сторону перевода. Выберите сценарий — bj-server отправит эталонный запрос через шлюз НРД, ответ придёт во входящие. Требуется настроенный шлюз НРД и ключ подписи.
Ответ робота — асинхронно (~30-60 сек) во входящие шлюза НРД.
-Заявка с предзаполненными данными через всю цепочку до финального статуса.
- - {{if .Settings.LastTest}} -| Статус | {{if .Settings.LastTest.OK}}✓ успешно{{else}}✗ не прошёл{{end}} |
| FSM-статус | {{.Settings.LastTest.FinalStatus}} |
| ClaimID | {{.Settings.LastTest.ClaimID}} {{if .Settings.LastTest.ClaimID}}→ карточка{{end}} |
| Сообщение | {{.Settings.LastTest.Message}} |
Кому и о чём bj пишет на почту: администратору системы — о сбоях и обновлениях, отделам — о переводах и поручениях. Все события видны и в ленте «Новости»; передать их в мониторинг Zabbix — Настройка → Диагностика.
+Кому и о чём bj пишет на почту: администратору системы — о сбоях и обновлениях, отделам — о переводах и поручениях. Все события видны и в ленте «Новости»; передать их в мониторинг Zabbix — карточка «Zabbix» ниже.
{{template "smtpCard" .}} diff --git a/internal/lkgateway/web/templates/admin_status.html b/internal/lkgateway/web/templates/admin_status.html index 4791b2f..ead691d 100644 --- a/internal/lkgateway/web/templates/admin_status.html +++ b/internal/lkgateway/web/templates/admin_status.html @@ -72,6 +72,89 @@Проверка выполнена в {{.CheckedAt.Format "15:04:05 02.01.2006"}}.
Ядро и модули работают отдельными службами: если служба модуля не запущена, его раздел в bj отвечает ошибкой связи. Здесь видно состояние и можно перезапустить службу, не заходя на сервер.
+| Служба | {{end}}Что делает | Состояние | С | |
|---|---|---|---|---|
{{.Unit}} | {{end}}
+ {{.Title}} | +{{if .OK}}работает{{else}}не работает{{if devOn}}: {{.State}}{{with .Sub}} / {{.}}{{end}}{{with .Result}} ({{.}}){{end}}{{end}}{{end}} | +{{if .Since}}{{.Since}}{{else}}—{{end}} | ++ |
Фоновые компоненты под самоконтролем: при сбое перезапускаются автоматически, при зависании — перезапуск всего сервиса и запись в «Новости». Ниже — живой статус.
+ {{if .Health}} +| Компонент | Состояние | Последняя отметка | Последняя ошибка |
|---|---|---|---|
| {{healthLabel .Name}} | +{{if .Healthy}}работает{{else}}не отвечает{{end}} | +{{dur .Age}} назад | +{{if .LastErr}}{{.LastErr}}{{else}}—{{end}} | +
Компоненты ещё не зарегистрированы (сервис только запущен).
+ {{end}} +Справочник участников M2M из НРД: по нему bj узнаёт код участника по ИНН контрагента. bj запрашивает его сам; кнопка — запросить сейчас.
+ +Ответ НРД приходит через 30–60 секунд.
+Робот MC0012500000 эмулирует вторую сторону перевода. Выберите сценарий — bj-server отправит эталонный запрос через шлюз НРД, ответ придёт во входящие. Требуется настроенный шлюз НРД и ключ подписи.
Ответ робота — асинхронно (~30-60 сек) во входящие шлюза НРД.
+Заявка с предзаполненными данными через всю цепочку до финального статуса.
+ + {{if .LastTest}} +| Статус | {{if .LastTest.OK}}✓ успешно{{else}}✗ не прошёл{{end}} |
| FSM-статус | {{.LastTest.FinalStatus}} |
| ClaimID | {{.LastTest.ClaimID}} {{if .LastTest.ClaimID}}→ карточка{{end}} |
| Сообщение | {{.LastTest.Message}} |