Files
Bridge-and-Join-s/internal/nsdadapter/README.md
fontvielle a8cdeeb838 feat(nsd-adapter): REST-клиент ИШ НРД + маршрутизация типов пакетов
- internal/nsdadapter/igw/client.go: REST-клиент ИШ (SendPackage, GetStatus, ListIncoming) с base64-JSON, ретраями на 5xx, 4xx без ретраев
- internal/nsdadapter/router.go: маршрутизация MessageKind -> PackageType ЭДО (#M2MTR, #M2MTD, #M2MER, SUBBR/SUBER/SUB16, Assets_investment)
- internal/nsdadapter/sender.go: реализация m2mcore.NSDSender (Send/SendDecision) через REST ИШ, сериализация Request/Decision в windows-1251
- internal/nsdadapter/config.go: профили guest/test3/prod × gost/rsa (URL ИШ, канал, контейнер ключа, retry)
- internal/nsdadapter/onyx/onyx.go: скелет резервного канала WS ONYX (ждёт PR-6 crypto-service для подписи)
- cmd/nsd-adapter/main.go: HTTP /healthz + фоновый поллер входящих по типам ЭДО; idle-режим без BJ_NSD_PROFILE

make ci зелёный. Без внешних Go-зависимостей.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 00:55:20 +03:00

42 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 до отправки в адаптер.