# 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 до отправки в адаптер.