diff --git a/internal/lkgateway/admin.go b/internal/lkgateway/admin.go index 5342346..08be921 100644 --- a/internal/lkgateway/admin.go +++ b/internal/lkgateway/admin.go @@ -140,11 +140,18 @@ func newAdmin() (*admin, error) { // page — общий "конверт" данных для всех шаблонов. type page struct { - Title string - Active string - Now string + Title string + Active string + Now string + IsMockMode bool // true если ИШ не настроен — bj-server в режиме эмуляции + MockReason string // короткое описание почему mock } +// globalRC — ссылка на runtime-конфиг для template-funcs/page helpers. +// Заполняется один раз в RegisterAdmin. Альтернатива — таскать rc через +// все renderXxx-функции, что шумно при широком фан-ауте. +var globalRC *RuntimeConfig + // homeData — данные дашборда. type homeData struct { page @@ -186,6 +193,7 @@ func RegisterAdmin(mux *http.ServeMux, svc *Service, rc *RuntimeConfig, getOpts if err != nil { return nil, err } + globalRC = rc mux.HandleFunc("/admin/", func(w http.ResponseWriter, r *http.Request) { p := strings.TrimPrefix(r.URL.Path, "/admin/") @@ -284,7 +292,19 @@ func render(w http.ResponseWriter, t *template.Template, data any) { } func nowPage(title, active string) page { - return page{Title: title, Active: active, Now: time.Now().Format("02.01.2006 15:04:05")} + p := page{Title: title, Active: active, Now: time.Now().Format("02.01.2006 15:04:05")} + if globalRC != nil { + s := globalRC.Snapshot() + switch { + case s.NSD.IGWBaseURL == "": + p.IsMockMode = true + p.MockReason = "ИШ НРД не настроен — заявки идут через внутренний mock (Decision эмитируется через 3 сек)" + case s.Crypto.Provider == "" || s.Crypto.Provider == "stub": + p.IsMockMode = true + p.MockReason = "Провайдер СКЗИ = stub — подпись не делается, реальный обмен с НРД невозможен" + } + } + return p } // topNews отбирает максимум N новостей: сначала те, что активны прямо сейчас diff --git a/internal/lkgateway/web/templates/layout.html b/internal/lkgateway/web/templates/layout.html index d3adf18..c15038b 100644 --- a/internal/lkgateway/web/templates/layout.html +++ b/internal/lkgateway/web/templates/layout.html @@ -54,6 +54,16 @@ button:hover, .btn:hover { opacity: .9; } {{.Now}} +{{if .IsMockMode}} +
+{{end}}