af60277411
НРД открыл приём анкеты (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
internal/nsdadapter — транспорт к НРД
Реализует m2mcore.NSDSender. Основной канал — Интеграционный шлюз
(ИШ) НРД через REST API; ИШ сам подписывает и упаковывает пакеты ЭДО,
нам XMLDSig не требуется. Резерв — WS ONYX (заглушка до PR-6).
Состав
igw/client.go— REST-клиент ИШ:SendPackage,GetStatus,ListIncoming. Body передаётся base64 в JSON, ретраи на 5xx и сетевые ошибки, 4xx не ретраится.router.go— маршрутизация доменного типа сообщения вPackageTypeЭДО (#M2MTR,#M2MTD,#M2MER,SUBBR/SUBER/SUB16,Assets_investment).sender.go— реализацияm2mcore.NSDSender: сериализует Request в windows-1251 черезnsdxml.Marshalи шлёт в ИШ. Ответы НРД приходят асинхронно через входящий поллер.config.go— профилиguest-gost,guest-rsa,test3-gost,test3-rsa,prod-gost,prod-rsa(URL ИШ, канал, контейнер ключа, таймауты, retry).onyx/onyx.go— скелет SOAP-клиента WS ONYX. Реальная реализация — после PR-6 (подпись через crypto-service).
cmd/nsd-adapter
cmd/nsd-adapter/main.go — сервис с HTTP /healthz и фоновым
поллером входящих пакетов (ListIncoming по типам ЭДО из
IncomingPackageKinds). Параметры:
BJ_HTTP_ADDR— адрес HTTP (по умолчанию:8082).BJ_NSD_PROFILE— имя профиля. Если не задан — сервис стартует в режиме idle (только healthz, опрос отключён). Полезно для CI и смоук-тестов без реального ИШ.BJ_NSD_POLL_INTERVAL— частота опроса, например15s.
Принципы логирования
- Логируем: метод, путь, HTTP-статус, package_id, длительность.
- Не логируем тело пакета — там могут быть ПДн.
- Маскировка ПДн в любых журналах — на стороне
m2m-coreпри логировании content до отправки в адаптер.