Анкета участника M2M: отправка в НРД через ИШ пакетом #M2MPF

НРД открыл приём анкеты (M2MTransferParticipantForm) в пром-контуре.
По формату НРД анкета — отдельный тип ЭД M2MPF: тег <package> = "#" +
первые 5 символов имени типа ЭД → "#M2MPF", businessLine=MOST (как и
остальные M2M-сообщения; на ИШ <107.0.0.904 businessLine опускается).
Подпись — боевым ГОСТ-контейнером на стороне ИШ.

- nsdadapter/router.go: тип PackageM2MParticipantForm "#M2MPF";
  KindParticipantForm теперь маппится на него (был ошибочно
  Assets_investment).
- lkgateway/participant_form.go: действие send_igw — упаковка анкеты
  через igw.PackXML(..., "#M2MPF") и отправка igwClient.SendPackage в
  канал профиля (в боевом контуре — prod-gost). Кнопка «Отправить через
  шлюз (боевой ИШ)»; письмо на M2MOST@nsd.ru оставлено запасным каналом.
  Статус готовности ИШ на странице.
- lkgateway/server.go: проброс igwClient/igwChannel в registerParticipantForm.

Образец — sendHandbookRequest (#M2MHR) через тот же ИШ.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XG3zNMMf2LMoDpXo22mwMX
This commit is contained in:
fontvielle
2026-10-16 13:07:40 +03:00
parent 22eb6c6f11
commit af60277411
3 changed files with 58 additions and 17 deletions
+6 -6
View File
@@ -232,9 +232,9 @@ func NewServer(cfg ServerConfig) (*Server, error) {
registerSetCallback(mux, svc, rc)
registerSeedListing(mux, store)
registerHandbookRequest(mux, igwClient, igwChannel)
registerChainTest(mux, rc, igwClient != nil) // «Проверить всю цепочку» (мастер, глава «Запуск»)
registerParticipantForm(mux, rc) // анкета участника M2M (регистрация в НРД, participant_form.go)
registerClientProfile(mux, rc) // профиль клиента: выгрузка эталона и предзаполнение (client_profile.go)
registerChainTest(mux, rc, igwClient != nil) // «Проверить всю цепочку» (мастер, глава «Запуск»)
registerParticipantForm(mux, rc, igwClient, igwChannel) // анкета участника M2M (регистрация в НРД, participant_form.go)
registerClientProfile(mux, rc) // профиль клиента: выгрузка эталона и предзаполнение (client_profile.go)
return &Server{
cfg: cfg,
@@ -305,10 +305,10 @@ func (s *Server) Run(ctx context.Context) error {
// Все фоновые горутины — под supervise: паника ловится recover(), пишется
// в лог и в ленту, горутина перезапускается. Один сбой не роняет сервис.
go superviseLoop(ctx, "consume-decisions", s.rc, s.consumeDecisions)
go superviseLoop(ctx, "igw-watch", s.rc, s.igwWatchLoop) // сторож ИШ НРД: оповещения и автоперезапуск
go superviseLoop(ctx, "units-watch", s.rc, s.unitsWatchLoop) // службы модулей и ключей Валидаты: письмо администратору
go superviseLoop(ctx, "igw-watch", s.rc, s.igwWatchLoop) // сторож ИШ НРД: оповещения и автоперезапуск
go superviseLoop(ctx, "units-watch", s.rc, s.unitsWatchLoop) // службы модулей и ключей Валидаты: письмо администратору
go superviseLoop(ctx, "igate-share", s.rc, s.igateShareSyncLoop) // папки шлюза «через домен»: список доступа = группы и сотрудники bj
go handbookLoop(ctx, s.rc) // справочник участников M2M с сервера лицензий (для установок без шлюза НРД)
go handbookLoop(ctx, s.rc) // справочник участников M2M с сервера лицензий (для установок без шлюза НРД)
// Поллер входящих от НРД (только в реальном режиме ИШ): забирает
// ответы робота/контрагента и применяет их через ApplyDecision.