c2aaa09fe3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
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 до отправки в адаптер.