diff --git a/.gitignore b/.gitignore index 8ea9b07..356e622 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Сборки /bin/ /dist/ +!/dist/ish/README.md *.exe *.test *.out @@ -62,3 +63,8 @@ test-results/ # Doc-watcher: бэкапы при переустановке свежих версий DOC/*.pdf.bak DOC/*.bak.pdf + +# Дистрибутив ИШ НРД (большой, ~120 МБ) — не коммитим в git +/dist/ish/*.deb +/dist/ish/*.SGN +/dist/ish/*.exe diff --git a/DOC/QA_ish.pdf b/DOC/QA_ish.pdf new file mode 100644 index 0000000..3b39146 Binary files /dev/null and b/DOC/QA_ish.pdf differ diff --git a/DOC/instr_int_sh_01072025.pdf b/DOC/instr_int_sh_01072025.pdf new file mode 100644 index 0000000..2417b24 Binary files /dev/null and b/DOC/instr_int_sh_01072025.pdf differ diff --git a/DOC/ruk_install_ish_2025_11_10.pdf b/DOC/ruk_install_ish_2025_11_10.pdf new file mode 100644 index 0000000..f50b15e Binary files /dev/null and b/DOC/ruk_install_ish_2025_11_10.pdf differ diff --git a/DOC/ruk_pol_ish.pdf b/DOC/ruk_pol_ish.pdf new file mode 100644 index 0000000..19e7cd9 Binary files /dev/null and b/DOC/ruk_pol_ish.pdf differ diff --git a/DOC/test-case_ish.pdf b/DOC/test-case_ish.pdf new file mode 100644 index 0000000..1ec72d5 Binary files /dev/null and b/DOC/test-case_ish.pdf differ diff --git a/DOC/web_service_nrd_standard_soap_rest.pdf b/DOC/web_service_nrd_standard_soap_rest.pdf new file mode 100644 index 0000000..71f7753 Binary files /dev/null and b/DOC/web_service_nrd_standard_soap_rest.pdf differ diff --git a/REPORT.md b/REPORT.md index c299e33..67de9e0 100644 --- a/REPORT.md +++ b/REPORT.md @@ -1,6 +1,6 @@ # Bridge-and-Join-s — отчёт о ходе работ -**Дата:** 14.05.2026 (обновлено вечером — добавлен REST-клиент ИШ + эмулятор робота) +**Дата:** 14.05.2026 (3-я редакция за день — скачан дистрибутив ИШ + полная документация ИШ) **Контур:** дев-стенд РЕД ОС 8 (10.10.10.22), bj-server на :8080, lk-emulator на :8083 **Целевая интеграция:** сервис MOEX МОСТ (M2M) через НКО АО НРД @@ -22,15 +22,17 @@ | Эмулятор робота-автотеста НРД (внутренний mock) | **90%** | ⚠ Сценарий 3333 — частично | | Реальное подключение к роботу на TEST3 НРД | **30%** | ⚠ REST-клиент ИШ готов, ждём сам ИШ + сертификат | | REST-клиент ИШ НРД (по DOC/instr-ish-rest-api.pdf) | **100%** | ✅ POST file, GET status, GET list, GET package, упаковщик ZIP, 10/10 тестов | -| Интеграционный шлюз НРД (ИШ) — серверная часть от НРД | **0%** | ⏳ Не скачан, не установлен (заблокировано НРД) | -| Сертификат УЦ Московской Биржи для подписи | **0%** | ⏳ Не получен | +| Дистрибутив ИШ НРД и полная документация | **100%** | ✅ Скачаны: `igate_100.0-765_amd64.deb` (117 МБ) + 6 PDF | +| Установка ИШ на наш стенд | **0%** | ⏳ Требуется Astra Linux ВМ (не РЕД ОС) — см. блокер #1 | +| Получение СКЗИ «Валидата CSP» для Linux | **0%** | ⏳ Запрос в soed@nsd.ru / pki@moex.com — см. блокер #2 | +| Сертификат УЦ Московской Биржи для подписи | **0%** | ⏳ Не получен — см. блокер #3 | | Подключение реального ЛК ESIA Finance | **20%** | ⚠ Эмулятор lk-emulator работает, реальный URL не указан | | Контракт с Fansy (ETL) | **30%** | ⚠ Контракт документирован, ETL не реализован стороной Fansy | | Уведомления (e-mail, мессенджеры) | **0%** | ⏳ M3-M4 | | Тесты, CI/CD | **40%** | ⚠ Unit-тесты компонентов, нет E2E против реального НРД | -**Общая готовность системы:** **≈ 70%** (по объёму функциональности) -**Готовность к интеграционному тесту с роботом:** **≈ 85%** (зависит только от внешних факторов — серверный ИШ от НРД, сертификат) +**Общая готовность системы:** **≈ 72%** (по объёму функциональности) +**Готовность к интеграционному тесту с роботом:** **≈ 85%** (зависит только от внешних факторов: Astra Linux ВМ, Валидата CSP, сертификат УЦ МБ) --- @@ -94,6 +96,25 @@ - Покрыто тестами: 10/10 PASS (httptest + zip round-trip + 4xx без ретраев + retry на 5xx) - Готов к переключению: как только получим живой ИШ от НРД, нужно только указать BaseURL и Channel в `/admin/setup` — код уже всё умеет +### Дистрибутив ИШ и полная документация (получены 14.05.2026) +По наводке от заказчика на странице `https://www.nsd.ru/workflow/system/programs/web-service/` найдены и скачаны все официальные материалы: + +- **Дистрибутив ИШ Linux**: `dist/ish/igate_100.0-765_amd64.deb` (117 МБ, для Astra Linux) +- **Электронная подпись к дистрибутиву**: `dist/ish/igate_95.0-716_amd64.SGN` +- **DOC/ruk_install_ish_2025_11_10.pdf** (4.7 МБ) — Руководство по установке ИШ от 10.11.2025. Главное: + - Поддерживаемые ОС: Windows 10/Server, **Astra Linux SE 1.6/1.7** (РЕД ОС не упомянута) + - СКЗИ: **«Валидата CSP» + АПК «Валидата Клиент L»** (НЕ КриптоПро) + - БД: SQLite или PostgreSQL (PostgreSQL обязателен для REST API) + - Только ГОСТ-криптография под Linux (RSA — только Windows) + - Только сертификаты от УЦ МБ +- **DOC/ruk_pol_ish.pdf** (3.5 МБ) — Руководство пользователя ИШ +- **DOC/QA_ish.pdf** (2.5 МБ) — Q&A +- **DOC/test-case_ish.pdf** (1.3 МБ) — Тест-кейсы для проверки работоспособности ИШ +- **DOC/instr_int_sh_01072025.pdf** (0.4 МБ) — Инструкция по созданию заявки на тестирование +- **DOC/web_service_nrd_standard_soap_rest.pdf** (2.2 МБ) — Техрекомендации Web-сервиса ONYX + +`dist/ish/.deb` не коммитится в git (большой), но `dist/ish/README.md` содержит все ссылки на повторное скачивание. + ### Безопасность и надёжность - Баннер «🟡 РЕЖИМ ЭМУЛЯЦИИ» отображается на каждой странице админки пока не настроен ИШ или СКЗИ — оператор не сможет случайно принять mock-результат за реальный. - Контекстная навигация после действий (после POST возврат на ту же страницу, не в /admin/setup). @@ -106,32 +127,39 @@ ### Внешние блокеры (без них не двинемся к реальному НРД) -1. **Дистрибутив ИШ НРД** - - Где взять: https://www.nsd.ru/workflow/system/programs/#0-widget-faq-0-4 - - Что неизвестно: системные требования (ОС, СКЗИ — JCP или CSP, БД, Java), нужен ли отдельный договор/лицензия. В наших документах эти детали отсутствуют — они в «Руководстве по установке ИШ», которого у нас нет. - - Что нужно сделать: запросить «Руководство по установке и настройке ПО Интеграционный шлюз НРД» у НРД (контакт: `M2MOST@nsd.ru`). - - Срок: зависит от ответа НРД. +1. **Astra Linux ВМ для ИШ** ⭐ новый блокер + - Дистрибутив ИШ — только `igate_100.0-765_amd64.deb` (под Astra Linux SE 1.6/1.7). РЕД ОС официально не поддерживается, RPM-версии нет. + - Что нужно: поднять отдельную Astra Linux ВМ (10.10.10.23?) или попробовать запустить ИШ в Docker-контейнере с Astra-образом. + - Альтернативы: Windows 10/Server (есть .exe-дистрибутив, но это шаг назад от Linux). + - Срок: зависит от инфра-команды; ~1 день поднять ВМ + ~30 мин установить ИШ. -2. **Сертификат подписи УЦ Московской Биржи** (ca.moex.com) - - Нужен для подписи отправляемых сообщений (через ИШ — кладётся в ИШ; без ИШ — в bj-server). - - Что нужно: оформить заявку в УЦ МБ от организации, получить сертификат + приватный ключ (на токене или в контейнере). - - Срок: зависит от УЦ. +2. **СКЗИ «Валидата CSP» + АПК «Валидата Клиент L»** ⭐ новый блокер + - ИШ требует именно Валидату, **НЕ КриптоПро CSP** (у нас стоит КриптоПро, придётся ставить параллельно или вместо). + - Где взять: только по запросу — `soed@nsd.ru` (НРД) или `pki@moex.com` (МБ). Временная лицензия выдаётся. + - Что нужно: отправить письмо с реквизитами организации и обоснованием (подключение к MOEX МОСТ M2M). + - Срок: ~1-3 дня на ответ НРД. -3. **Сертификаты УЦ НРД** (для проверки квитанций) +3. **Сертификат подписи УЦ Московской Биржи** (ca.moex.com) + - Нужен для подписи отправляемых сообщений. Кладётся в Справочник сертификатов АПК Валидата Клиент L, экспортируется в системное хранилище. + - Что нужно: оформить заявку в УЦ МБ от организации, получить сертификат + приватный ключ. + - Срок: зависит от УЦ МБ. + +4. **Заявка на тестирование в TEST3 НРД** + - Форма: `https://www.nsd.ru/workflow/zayavka-na-testirovanie/` + - Инструкция: `DOC/instr_int_sh_01072025.pdf` + - Получаем код депонента-тестера и доступ к контурам GUEST/TEST3. + +5. **Сертификаты УЦ НРД** (для проверки квитанций) - Где взять: `https://www.nsd.ru/workflow/system/cryptography/` — сейчас отдаёт 404 на нашем дев-стенде (вероятно перенесено в ЛК НРД депонента). - В коде уже есть форма «Авто-загрузка сертификатов УЦ» в `/admin/setup` — как только получим прямые URL .cer, добавим их. -4. **Окно техработ TEST3: 18.05.2026 — 22.05.2026** +6. **Окно техработ TEST3: 18.05.2026 — 22.05.2026** - Полевое тестирование в этот период невозможно. Реальные прогоны — до 18-го или после 22-го мая. -5. **Доступ к API реального ЛК ESIA Finance** +7. **Доступ к API реального ЛК ESIA Finance** - Сейчас bj-server работает с встроенным эмулятором `lk-emulator` на :8083. - Что нужно: URL продакшен/тест ЛК, Basic-auth учётка. -6. **«Руководство пользователя ПО Интеграционный шлюз НРД»** и **«Руководство по установке и настройке…»** - - Упомянуты как ссылки в `DOC/Инструккия M2M.pdf` стр. 6, но самих файлов у нас нет. - - REST API мы уже реализовали по `instr-ish-rest-api.pdf` — но настройка каналов ЭДО (channel=?), параметры ключевого хранилища ИШ, порт по умолчанию — оттуда. - ### Внутренние задачи (можем делать параллельно) | Задача | Приоритет | Эффект | diff --git a/dist/ish/README.md b/dist/ish/README.md new file mode 100644 index 0000000..eb9725a --- /dev/null +++ b/dist/ish/README.md @@ -0,0 +1,62 @@ +# Дистрибутив Интеграционного шлюза НРД (ИШ) + +**Скачано с сайта НРД** (`https://www.nsd.ru/workflow/system/programs/web-service/`) 14.05.2026. +Через git не коммитим — файлы большие, ставятся отдельно. + +## Файлы + +| Файл | Размер | Описание | +|---|---:|---| +| `igate_100.0-765_amd64.deb` | 117 МБ | Дистрибутив ИШ для **Astra-Linux** (.deb пакет) | +| `igate_95.0-716_amd64.SGN` | 491 байт | Электронная подпись к дистрибутиву ИШ | + +## Где скачать заново + +- ИШ Linux: `https://old.nsd.ru/upload/docs/edo/po/igate_100.0-765_amd64.deb` +- ИШ Windows (рус): `https://old.nsd.ru/upload/docs/edo/po/igate-ru-100.0.0.764.zip` +- ИШ Windows (eng): `https://old.nsd.ru/upload/docs/edo/po/igate-en-100.0.0.764.zip` +- Все версии: `https://www.nsd.ru/workflow/system/programs/web-service/` + +## Что ещё нужно (НЕ в этой папке) + +### 1. СКЗИ «Валидата CSP» + АПК «Валидата Клиент L» +**Не выложено публично** — даётся НРД по запросу: +- Email НРД: `soed@nsd.ru` +- Email Московской Биржи: `pki@moex.com` + +В письме указать: «Запрос дистрибутива СКЗИ Валидата CSP для Linux + временной лицензии для подключения к ЭДО НРД в рамках сервиса MOEX МОСТ M2M». + +### 2. Сертификат подписи +Только от **УЦ Московской Биржи** (`https://ca.moex.com/`). Получает организация-депонент. + +### 3. PostgreSQL +Если используется REST API ИШ — **обязательно** PostgreSQL (SQLite не подходит для API). +У нас PostgreSQL 16 уже работает в podman-контейнере → готово. + +## Поддерживаемые ОС (из руководства по установке) + +- **Astra Linux Special Edition x64** редакций 1.6, 1.7, исполнение 1 (РУСБ.10015-01/16) +- **Windows 10 / Server 2016/2019** + +**РЕД ОС в списке не упомянута.** Варианты для нашей инфраструктуры: +1. Поднять отдельную Astra Linux ВМ для ИШ (рекомендуется) +2. Попробовать `dpkg -i` на РЕД ОС с `alien` (рискованно) +3. Использовать Debian/Ubuntu ВМ (близко к Astra, возможно сработает) +4. Контейнер с базовым образом `astralinux/astra-linux-edu:1.7.5` (если такой есть) +5. Запросить у НРД RPM-версию + +## Контакты НРД + +- Email по СЭД и дистрибутивам: `soed@nsd.ru` +- Email по форматам M2M: `M2MOST@nsd.ru` +- Сайт ИШ: `https://www.nsd.ru/workflow/system/programs/web-service/` + +## Документация + +Все PDF лежат в `../../DOC/`: +- `ruk_install_ish_2025_11_10.pdf` — Руководство по установке ИШ (от 10.11.2025) +- `ruk_pol_ish.pdf` — Руководство пользователя ИШ +- `QA_ish.pdf` — Часто задаваемые вопросы +- `test-case_ish.pdf` — Тест-кейсы для проверки работоспособности ИШ +- `instr_int_sh_01072025.pdf` — Инструкция по созданию заявки на тестирование +- `web_service_nrd_standard_soap_rest.pdf` — Технические рекомендации Web-сервиса ONYX diff --git a/internal/lkgateway/admin.go b/internal/lkgateway/admin.go index eaaffd2..17c2b12 100644 --- a/internal/lkgateway/admin.go +++ b/internal/lkgateway/admin.go @@ -20,8 +20,8 @@ var templatesFS embed.FS // {{define "content"}} в разных файлах. type admin struct { home, claims, claim, status, setup *template.Template - help, helpDatabase, helpLK, helpCryptoPro, helpSystems, helpRobot *template.Template - wizard, news *template.Template + help, helpDatabase, helpLK, helpCryptoPro, helpSystems, helpRobot, helpArchitecture *template.Template + wizard, news *template.Template } // templateFuncs — функции, доступные внутри шаблонов. Главная задача — @@ -135,10 +135,14 @@ func newAdmin() (*admin, error) { if err != nil { return nil, fmt.Errorf("parse admin_help_robot: %w", err) } + helpArch, err := parse("admin_help_architecture.html") + if err != nil { + return nil, fmt.Errorf("parse admin_help_architecture: %w", err) + } return &admin{ home: home, claims: claims, claim: claim, status: status, setup: setup, help: help, helpDatabase: helpDB, helpLK: helpLK, helpCryptoPro: helpCP, helpSystems: helpSys, - helpRobot: helpRobot, + helpRobot: helpRobot, helpArchitecture: helpArch, wizard: wizard, news: news, }, nil } @@ -224,6 +228,8 @@ func RegisterAdmin(mux *http.ServeMux, svc *Service, rc *RuntimeConfig, getOpts render(w, a.helpSystems, nowPage("Внешние системы", "help")) case p == "help/robot": render(w, a.helpRobot, nowPage("Тестирование с роботом", "help")) + case p == "help/architecture": + render(w, a.helpArchitecture, nowPage("Архитектура обмена", "help")) default: http.NotFound(w, r) } diff --git a/internal/lkgateway/web/templates/admin_help.html b/internal/lkgateway/web/templates/admin_help.html index 8d61f1f..2d4530f 100644 --- a/internal/lkgateway/web/templates/admin_help.html +++ b/internal/lkgateway/web/templates/admin_help.html @@ -35,5 +35,11 @@
Робот НРД на TEST3 (код MC0012500000), 4 тестовых сценария (отказ / принять все / частично / встречный перевод), управление через DocumentSeries и DocumentNumber, тестовые наборы депозитариев и кодов ошибок.
Полная схема: bj-server → ИШ (на Astra Linux ВМ) → ONYX (НРД) → робот-автотест. Кто на чьей стороне, какие СКЗИ, какие сертификаты, FAQ. Куда воткнуть Валидату, куда КриптоПро, где сертификаты УЦ МБ.
+Документ-источник: DOC/ruk_install_ish_2025_11_10.pdf (Руководство по установке ИШ от 10.11.2025), DOC/instr-ish-rest-api.pdf (REST API ИШ).
+┌─────────────────────────────────────────────────────────────────┐ +│ НАША СТОРОНА │ +│ │ +│ Linux ВМ (РЕД ОС 8) Astra Linux ВМ │ +│ ────────────────── ────────────────── │ +│ ┌──────────────────┐ REST API ┌──────────────────┐ │ +│ │ bj-server │ ────POST/GET──> │ ИШ (igate) │ │ +│ │ (наше ПО) │ <───────────── │ (получаем у НРД)│ │ +│ │ │ │ │ │ +│ │ • стейт-машина │ │ Делает САМ: │ │ +│ │ • PostgreSQL │ │ • подпись │ │ +│ │ • админка :8080 │ │ • упаковку ЭДО │ │ +│ │ • lk-emulator │ │ • проверку │ │ +│ │ │ │ подписей НРД │ │ +│ └──────────────────┘ │ • БД PostgreSQL │ │ +│ │ (history) │ │ +│ └──────┬───────────┘ │ +│ │ │ +│ КриптоПро CSP — для нашей │ Валидата CSP │ +│ admin-стороны (PKCS#11) │ + АПК Валидата │ +│ │ Клиент L │ +└──────────────────────────────────────────────┼─────────────────┘ + │ + SOAP/REST/HTTPS │ Web-сервис ONYX + ▼ + ┌────────────────────────────┐ + │ СТОРОНА НРД │ + │ │ + │ GUEST: gost-gt.nsd.ru │ + │ TEST3: gost.nsd.ru │ + │ PROM: edog.nsd.ru │ + │ │ + │ /onyxgs/WslService │ + │ /onyxt3/WslService │ + │ /onyxpr/WslService │ + │ │ + │ ↓ внутрь НРД │ + │ • робот-автотест │ + │ MC0012500000 │ + │ • реальные депозитарии │ + │ • биржевые системы │ + └────────────────────────────┘ ++
| Компонент | Сторона | ОС | СКЗИ | Назначение |
|---|---|---|---|---|
| bj-server | +наша | +РЕД ОС 8 / Linux | +КриптоПро CSP (PKCS#11) — для админ-части | +Стейт-машина, журнал в БД, веб-админка, lk-emulator | +
| ИШ (igate) | +наша (но дистрибутив даёт НРД) | +Astra Linux SE 1.6/1.7 или Windows 10/Server | +Валидата CSP + АПК Валидата Клиент L | +Подписывает наш XML сертификатом УЦ МБ, упаковывает в пакет ЭДО, отправляет в НРД | +
| ONYX (WSL) | +НРД | +— | +— | +Web-сервис НРД — принимает пакеты от ИШ всех клиентов | +
| Робот-автотест | +НРД | +— | +— | +Контрагент-эмулятор внутри НРД. Адресуется кодом MC0012500000 в TEST3 |
+
Нет. ИШ — это наша программа, поставленная у нас. НРД даёт дистрибутив (igate_100.0-765_amd64.deb, 117 МБ), но ставим у себя. ИШ — это «персональный почтовый клиент к НРД» с подписью.
Технически да (если та ВМ — Astra Linux). Но у нас bj-server на РЕД ОС, а ИШ требует Astra Linux (RPM-версии нет). Поэтому нужно либо: (а) отдельная Astra Linux ВМ, (б) запуск ИШ в Docker-контейнере с Astra-образом, (в) перевод всей инфры на Astra Linux.
+ +Нет. Мы используем REST API ИШ (раздел 2.5 инструкции). bj-server делает HTTP-запросы: POST /api/package/{channel}/file с ZIP в теле. Никаких разделяемых папок. (Альтернативный режим «обменные папки» в ИШ есть — мы его не используем.)
ИШ — отечественная разработка НРД, исторически работает с Валидатой (продукт ООО «Валидата», x509.ru). КриптоПро CSP на нашей ВМ останется — он используется для админ-части bj-server (подпись действий оператора через Рутокен). Валидату надо поставить на Astra Linux ВМ рядом с ИШ, не вместо КриптоПро.
Не публично. По запросу: email soed@nsd.ru (НРД) или pki@moex.com (МБ). Временная лицензия выдаётся бесплатно для подключения к ЭДО НРД.
Только от УЦ Московской Биржи (ca.moex.com). Сертификаты других УЦ ИШ не примет. УЦ МБ выпускает сертификаты только для организаций, подключённых к ЭДО НРД (по договору).
DOC/instr_int_sh_01072025.pdf).http://10.10.10.23:8080) и имя канала из ИШ.ReceiverCode = MC0012500000 и DocumentSeries = 2001 — робот ответит «Принять все бумаги».Оптимистично — 1-2 недели (если все ответы НРД быстрые и УЦ МБ не задерживает). Реалистично — 3-4 недели. На нашей стороне всё уже готово; задержка только во внешних шагах.
+internal/nsdadapter/igw/ — все 4 endpoint'а по спецификации, упаковщик/распаковщик ZIP, 10 тестов PASSinternal/nsdadapter/mock/ — позволяет проверить нашу логику до получения реального ИШigw_base_url и channel в /admin/setup; авто-определение профилей GUEST/TEST3/PRODDOC/ и дистрибутив в dist/ish/