{{define "content"}}
<p style="margin-bottom:16px"><a href="/admin/help">← все инструкции</a></p>

<div class="card">
  <h2>Тестирование с роботом MOEX МОСТ</h2>
  <p class="muted">Источник: <code>DOC/instruktsiya-po-testirovaniyu-s-robotom.pdf</code> (опубликована 12.05.2026). Демо-ролик: <a href="https://disk.yandex.ru/i/F1SL2CVY5GphwQ" target="_blank">disk.yandex.ru/i/F1SL2CVY5GphwQ</a>.</p>
</div>

<div class="card">
  <h2>1. Что это</h2>
  <p>НРД разработан специальный «робот» для тестирования интеграции информационных систем клиента и сервиса переводов M2M. Робот работает <strong>в круглосуточном режиме</strong> и эмулирует действия второй стороны при обмене сообщениями в сервисе M2M.</p>
  <p>Робот может выступать как принимающей стороной (по умолчанию), так и передающей. Он может формировать как успешные сообщения, так и сообщения о нештатных ситуациях.</p>
  <p>Доступен на тестовом контуре <strong>TEST3</strong> (<code>gost-t3.nsd.ru</code>). Подключение к роботу не требует отдельной регистрации — достаточно быть подключённым к ЭДО НРД на TEST3.</p>
</div>

<div class="card">
  <h2>2. Адресация робота</h2>
  <p><strong>КОД РОБОТА: <code>MC0012500000</code></strong></p>
  <p>Чтобы робот получил сообщение, его код должен быть указан в получателях — <code>Header.ReceiverCode</code>.</p>
  <p class="muted">В <code>bj-server</code> mock-сендер (<code>internal/nsdadapter/mock</code>) уже понимает этот код: если <code>ReceiverCode == MC0012500000</code> и в заявке указан DocumentSeries из таблицы ниже — внутренний робот-эмулятор сформирует ответ по выбранному сценарию. То же поведение будет на реальном TEST3, когда подключим ИШ.</p>
</div>

<div class="card">
  <h2>3. Тестовые сценарии</h2>
  <p>Выбор сценария — через поле <code>Data.InvestorInformation.IdentityDocument.DocumentSeries</code> в M2MTransferRequest.</p>
  <table>
    <thead><tr><th>Код</th><th>Сценарий</th><th>Управляющий параметр</th></tr></thead>
    <tbody>
      <tr>
        <td><code>1111</code></td>
        <td><strong>Ответ с отказом</strong> — все бумаги отвергаются с выбранным кодом ошибки</td>
        <td>Последние 2 символа <code>DocumentNumber</code> = ключ ошибки (<code>01</code>..<code>09</code>) → код <code>M2M01</code>..<code>M2M09</code></td>
      </tr>
      <tr>
        <td><code>2001</code></td>
        <td><strong>Принять все бумаги</strong></td>
        <td><code>DocumentNumber</code>: i-я цифра = номер депозитария-получателя для i-й секции (<code>1</code> или <code>2</code>). По умолчанию <code>1</code>.</td>
      </tr>
      <tr>
        <td><code>2002</code></td>
        <td><strong>Принять бумаги частично</strong></td>
        <td><code>DocumentNumber</code>: i-я цифра = номер депозитария (<code>1</code>/<code>2</code>) или <code>0</code> (отклонить с <code>M2M05</code>).</td>
      </tr>
      <tr>
        <td><code>3333</code></td>
        <td><strong>Выступить принимающей стороной</strong> — робот отвергает оригинал и формирует встречный M2MTransferRequest</td>
        <td>Первые 2 цифры <code>DocumentNumber</code> = реквизиты двух депозитариев для нового перевода</td>
      </tr>
    </tbody>
  </table>
  <p class="muted" style="margin-top:8px">Пример: для сценария <code>1111</code> с <code>DocumentNumber=111102</code> робот вернёт код ошибки <code>M2M02</code>. Для сценария <code>2001</code> с 4 секциями ЦБ и <code>DocumentNumber=111200</code> — секции 1,2,3 принимаются депозитарием 1, секция 4 — депозитарием 2.</p>
</div>

<div class="card">
  <h2>4. Тестовые данные депозитариев</h2>
  <table>
    <thead><tr><th>Ключ</th><th>ИНН (SettlementRequisites)</th><th>SettlementDepositoryLocation</th></tr></thead>
    <tbody>
      <tr>
        <td><code>1</code></td>
        <td><code>7702165310</code></td>
        <td>ИНН <code>7722061076</code> · depcode <code>MC0012500000</code> · счёт <code>HL2603250011</code> · раздел <code>31MC0012500000F00</code></td>
      </tr>
      <tr>
        <td><code>2</code></td>
        <td><code>7702165310</code></td>
        <td>ИНН <code>7722061076</code> · depcode <code>MC0012500000</code> · счёт <code>HL2603250011</code> · раздел <code>36MC0012500000F00</code></td>
      </tr>
      <tr>
        <td><code>3</code></td>
        <td><code>7831000034</code></td>
        <td class="muted">остальные поля — заглушки</td>
      </tr>
    </tbody>
  </table>
</div>

<div class="card">
  <h2>5. Коды ошибок (для сценария 1111)</h2>
  <table>
    <thead><tr><th>Ключ</th><th>Код ошибки</th></tr></thead>
    <tbody>
      <tr><td><code>01</code></td><td><code>M2M01</code></td></tr>
      <tr><td><code>02</code></td><td><code>M2M02</code></td></tr>
      <tr><td><code>03</code></td><td><code>M2M03</code></td></tr>
      <tr><td><code>04</code></td><td><code>M2M04</code></td></tr>
      <tr><td><code>05</code></td><td><code>M2M05</code></td></tr>
      <tr><td><code>06</code></td><td><code>M2M06</code></td></tr>
      <tr><td><code>07</code></td><td><code>M2M07</code></td></tr>
      <tr><td><code>08</code></td><td><code>M2M08</code></td></tr>
      <tr><td><code>09</code></td><td><code>M2M09</code></td></tr>
    </tbody>
  </table>
</div>

<div class="card">
  <h2>6. Как запустить</h2>
  <p><strong>Сейчас, без реального ИШ:</strong> используется внутренний робот-эмулятор в bj-server. Отправь заявку с ReceiverCode = <code>MC0012500000</code> и DocumentSeries по таблице — Decision придёт через 3 секунды по правилам робота.</p>
  <p><strong>На реальном TEST3 НРД:</strong> установи ИШ НРД (см. <a href="/admin/help/systems">/admin/help/systems</a>), укажи в <a href="/admin/setup">/admin/setup</a> → ИШ профиль <code>test3-gost</code>, URL <code>https://gost-t3.nsd.ru/onyx-ms/OnyxEdoWSService/OnyxEdo</code>. Дальше отправляй те же заявки — НРД направит их роботу, ответ будет идентичный.</p>
  <p class="muted">Сценарий 3333 («выступить принимающей стороной») в нашем внутреннем эмуляторе пока реализован частично — отдаёт только первое сообщение (отказ M2M05). Встречный M2MTransferRequest от робота требует доработки приёмной стороны bj-server.</p>
</div>
{{end}}
