fd238c1078
В режиме разработки новая страница /admin/emulators с двумя клавишами: - «Эмулятор НРД» (флаг LK.EmulateNSD): заявки ЛК и ручного ввода идут через внутренний имитатор, в НРД ничего не отправляется. Настройки: задержка решения (0–300 с), исход (подтвердить/отклонить/не отвечать), код отказа M2M01–M2M09/18. Сендер перенастраивается в рантайме через потокобезопасный mock.Sender.Reconfigure — без перезапуска. - «Эмулятор МНП QUIK» (флаг QuikMNP.Emulate): шаги цикла без записи в боевую БД МНП. Настройки: задержка шага (0–60 с), точечные отказы по шагам (регистрация/подпись/отказ/зачисление) — эмулированный отказ ведёт себя как боевой: шаг OK=false, состояние не продвигается, повтор на следующем проходе. Настройки хранятся в setup.json (nsd_emu/mnp_emu), обратная совместимость — дефолты. Баннер «Режим эмуляции» показывается и при ручном включении эмуляторов (раньше зависел только от отсутствия ИШ). Пункт меню «Эмуляторы» и две плитки на дашборде — только в dev. Пути занесены в devOnlyPath. Попутно: исправлен race в TestLicenseActivateAndRenew (cleanup восстанавливал DefaultLicensePublicKey без moduleEnforceMu — падал под -race и на чистом HEAD).
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 до отправки в адаптер.