diff --git a/deploy/release/component-versions.json b/deploy/release/component-versions.json index 7e81d34..488b109 100644 --- a/deploy/release/component-versions.json +++ b/deploy/release/component-versions.json @@ -20,8 +20,8 @@ "version": "2026.10.21.6" }, "bj-server": { - "fingerprint": "f47475987712791a70a636cfa23a2a8d28f1e1ad898d3ff505c595f828d64a0b", - "version": "2026.10.21.11" + "fingerprint": "bbbd830ed300ae81eee05d87ad0fe59d0756a794f1d157c37bc36fe67c2e0f25", + "version": "2026.10.21.12" }, "crypto-service.jar": { "fingerprint": "2c4fd536bc9b1c20c69a70e8dcd374a61847b263aeb2e474c45debb01fbd8233", diff --git a/internal/lkgateway/participant_form.go b/internal/lkgateway/participant_form.go index 62b20fb..1038c9f 100644 --- a/internal/lkgateway/participant_form.go +++ b/internal/lkgateway/participant_form.go @@ -359,11 +359,39 @@ func registerParticipantForm(mux *http.ServeMux, rc *RuntimeConfig, igwClient *i } xmlPreview := participantFormXML(d) - participantFormRender(w, d, errs, action, flash, flashKind, xmlPreview, igwClient != nil && igwChannel != "", isProdIGW(igwChannel)) + participantFormRender(w, d, errs, action, flash, flashKind, xmlPreview, participantRegStatus(rc), igwClient != nil && igwChannel != "", isProdIGW(igwChannel)) }) } -func participantFormRender(w http.ResponseWriter, d participantFormData, errs []string, action, flash, flashKind, xmlPreview string, igwConfigured, igwProd bool) { +// participantRegStatus — подтверждение регистрации появлением в справочнике участников +// M2M текущего контура: если наша организация (по MC-коду или ИНН) уже в справочнике — +// анкета принята. Это второй сигнал, помимо ответного документа от НРД. +func participantRegStatus(rc *RuntimeConfig) string { + if rc == nil { + return "" + } + s := rc.Snapshot() + contour := map[string]string{"prod": "боевого", "guest": "гостевого", "test3": "тестового"}[contourOf(currentNSDProfile())] + if contour == "" { + contour = "текущего" + } + hb, ok := handbookByCode(orgCode(s)) + if !ok { + if inn := orgINN(s); inn != "" { + hb, ok = handbookByINN(inn) + } + } + if ok { + return `
В справочнике участников M2M ` + contour + ` контура: есть — ` + + html.EscapeString(pickStr(hb.Name, hb.FullName)) + `, код ` + html.EscapeString(hb.Code) + + `, ИНН ` + html.EscapeString(hb.INN) + `. Регистрация подтверждена.
` + } + return `
В справочнике участников M2M ` + contour + ` контура нашей организации пока нет. ` + + `После приёма анкеты НРД организация появится в справочнике (обновляется каждые ~10 минут) — тогда здесь будет «есть». ` + + `Регистрацию подтверждает также ответный документ от НРД.
` +} + +func participantFormRender(w http.ResponseWriter, d participantFormData, errs []string, action, flash, flashKind, xmlPreview, regHTML string, igwConfigured, igwProd bool) { w.Header().Set("Content-Type", "text/html; charset=utf-8") inp := func(name, label, val, ph string) string { return `` @@ -409,7 +437,7 @@ pre{background:#f6f8fa;border:1px solid #ddd;border-radius:8px;padding:12px;over пакетом #M2MPF (businessLine=MOST, подпись боевым контейнером на стороне ИШ); письмо на ` + participantFormRecipient + ` оставлено запасным каналом. Поля предзаполнены из автоопределения DEPO — проверьте юридические реквизиты.

-` + flashHTML + vErr + ` +` + regHTML + flashHTML + vErr + `
Организация ` + inp("inn", "ИНН (10 цифр)", d.INN, "7700000000") + `