a8cdeeb838
- 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>
42 lines
2.4 KiB
Markdown
42 lines
2.4 KiB
Markdown
# 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 до отправки в адаптер.
|