Источник наименований: карточка нашей фирмы в справочнике НРД, без неё —
DEPO (черновик). Анкета предупреждает и даёт готовый текст запроса в НРД,
если карточки нет, полное похоже на краткое, отличается от карточки или
английские неполные; при ответе M2M37 — подсказка запросить наименования.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
НРД ответил M2M37 на анкету 21.10: в FullName ушло краткое наименование
из DEPO. Теперь полное, краткое и отображаемое берутся из карточки нашей
фирмы в справочнике НРД (НРД сверяет именно с клиентской базой);
отображаемое = краткое, как советует НРД. Английские — только введённые.
Кавычки «» “” приводятся к прямым ", как в базе НРД.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
Ответ НРД на анкету приходит как M2MTransferResponse (M2MER) с нулевым GUID —
раньше он уходил в обработку перевода, «сделка не найдена», и отбрасывался.
Теперь нулевой GUID распознаётся как ответ на регистрацию участника:
- сырой XML сохраняется (captureNSDReply → nsd-replies);
- отправка анкеты и ответ НРД пишутся в participant-reg.json (время, пакет,
наименование, статус, коды, текст НРД);
- на странице «Регистрация участника M2M» показываем: когда отправили и вердикт
НРД («принял»/«отклонил» с текстом, напр. M2M37 «Некорректно указано
наименование участника в анкете»).
Текст берётся из самого ответа (serviceErrorTexts) — карту кодов не трогаем.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
Регистрация подтверждается двумя путями: ответным документом НРД (ловим в
поллере) ИЛИ появлением организации в справочнике участников M2M боевого
контура. На странице анкеты добавлен статус: ищем нашу организацию в справочнике
по MC-коду, затем по ИНН (handbookByCode/handbookByINN); «есть» — регистрация
подтверждена, «нет» — ждём приёма анкеты (справочник обновляется ~10 минут).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
- В «Настройка → НРД» добавлена карточка «Регистрация участника M2M» со ссылкой
на /admin/setup/participant-form (раньше страница была только по URL).
- participantFormPrefill теперь заполняет анкету по реквизитам фирмы, а не только
из автоопределения DEPO: берёт ИНН/коды из настроек НРД и наименования
(полное/сокращённое/отображаемое/англ.) из справочника участников НРД
(по MC-коду, затем по ИНН); DisplayName/Short подставляются, если пусты.
- org.go: добавлен handbookByINN.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
Требование: в тест анкету не слать, подача только в бою. send_igw теперь
пропускается лишь при боевом канале ИШ (Channel=PROD, профиль prod-*);
в тестовом/гостевом контуре отправка через шлюз заблокирована (кнопка
disabled + явный статус, серверная проверка isProdIGW как defense-in-depth).
Скачивание XML и письмо на M2MOST@nsd.ru остаются доступны везде.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XG3zNMMf2LMoDpXo22mwMX
НРД открыл приём анкеты (M2MTransferParticipantForm) в пром-контуре.
По формату НРД анкета — отдельный тип ЭД M2MPF: тег <package> = "#" +
первые 5 символов имени типа ЭД → "#M2MPF", businessLine=MOST (как и
остальные M2M-сообщения; на ИШ <107.0.0.904 businessLine опускается).
Подпись — боевым ГОСТ-контейнером на стороне ИШ.
- nsdadapter/router.go: тип PackageM2MParticipantForm "#M2MPF";
KindParticipantForm теперь маппится на него (был ошибочно
Assets_investment).
- lkgateway/participant_form.go: действие send_igw — упаковка анкеты
через igw.PackXML(..., "#M2MPF") и отправка igwClient.SendPackage в
канал профиля (в боевом контуре — prod-gost). Кнопка «Отправить через
шлюз (боевой ИШ)»; письмо на M2MOST@nsd.ru оставлено запасным каналом.
Статус готовности ИШ на странице.
- lkgateway/server.go: проброс igwClient/igwChannel в registerParticipantForm.
Образец — sendHandbookRequest (#M2MHR) через тот же ИШ.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XG3zNMMf2LMoDpXo22mwMX
Требование НРД при подключении к сервису M2M (МОСТ): зарегистрировать организацию
в справочнике участников анкетой M2MTransferParticipantForm, иначе сервис отбивает
запросы кодом M2M14. Регистрация идёт ОБЫЧНЫМ каналом (письмом на M2MOST@nsd.ru с
вложением), не через M2M-шлюз.
- Новая страница /admin/setup/participant-form (participant_form.go):
предзаполнение из автоопределения DEPO (ИНН, наименования, код депозитария),
правка оператором, валидация (формат ИНН/кодов + m2m.HandbookParticipant.Validate),
предпросмотр анкеты, «Скачать» (windows-1251) и «Отправить в НРД» письмом с
вложением-анкетой.
- Генерация XML строкой-шаблоном по образцу НРД (namespace participant/form,
CreationTimestamp по МСК, блоки Eng/BrokerPlace — опциональны), кодировка
windows-1251 через nsdxml.EncodeWindows1251; экранирование текста только & < >.
- Почта: выделен транспорт smtpDeliver из sendSMTP; добавлены buildMIMEAttach
(multipart/mixed + base64-вложение) и sendSMTPAttach.
- Тесты: валидация, генерация XML (Eng/BrokerPlace), cp1251 round-trip, MIME-вложение.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XG3zNMMf2LMoDpXo22mwMX