Раздел «Ручной ввод M2M» по бумажным поручениям; тестовые тексты и имитации убраны из клиентского интерфейса

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
zuevav
2026-09-17 18:26:59 +03:00
parent 627dbca6af
commit e4de1ab4d8
38 changed files with 2014 additions and 132 deletions
@@ -44,7 +44,7 @@
.dc-rec.mixed{background:var(--warn-weak,#fff4e0);color:var(--warn,#9a6b12)}
</style>
<div style="display:flex;align-items:center;gap:10px;flex-wrap:wrap">
<h2 style="margin:0">Сверка с DEPO — эмуляция ответа</h2>
<h2 style="margin:0">Сверка с DEPO — {{if .DevMode}}эмуляция ответа{{else}}рекомендация по ответу{{end}}</h2>
{{if .Depo.Ran}}<span class="dc-rec {{.Depo.Recommend}}">рекомендуем: {{.Depo.Summary}}</span>{{end}}
</div>
<p class="muted" style="font-size:12.5px;margin:6px 0 0">Проверки по регламенту депозитария (инвестор, торговый счёт депо, бумага на обслуживании, договор не ИИС, блокировки). <b>Ответ контрагенту НЕ отправлен</b> — это только рекомендация; она подставлена в форму ниже, проверьте и нажмите «Отправить решение».</p>
@@ -73,7 +73,7 @@
<div class="card">
<h2>Решение по бумагам ({{len .It.Securities}})</h2>
{{if $answered}}
<p class="muted">Решение уже отправлено роботу. Ниже — что было выбрано по каждой бумаге.</p>
<p class="muted">Решение уже отправлено {{if .DevMode}}роботу{{else}}контрагенту через НРД{{end}}. Ниже — что было выбрано по каждой бумаге.</p>
<table>
<thead><tr><th>ReferenceId</th><th>Код НРД / ISIN</th><th>Кол-во</th><th>Счёт зачисления</th><th>Решение</th></tr></thead>
<tbody>
@@ -89,8 +89,9 @@
</tbody>
</table>
{{else}}
<p class="muted">По каждой бумаге выберите: <b>принять</b> (зачислим на наш депо-счёт из настроек НРД) или <b>отказать</b> (с кодом отказа). Решение уйдёт роботу одним сообщением M2MTransferDecision.</p>
<p class="muted">По каждой бумаге выберите: <b>принять</b> (зачислим на наш депо-счёт из настроек НРД) или <b>отказать</b> (с кодом отказа). Решение уйдёт {{if .DevMode}}роботу{{else}}контрагенту через НРД{{end}} одним сообщением M2MTransferDecision.</p>
{{if .DevMode}}{{/* подсказки по сценариям робота НРД — только в режиме разработки */}}
<div style="padding:10px 14px;background:var(--accent-weak,#e7f0fb);border-radius:10px;margin:6px 0 14px">
<label style="font-size:13px;font-weight:600">Сценарий тестирования:
<select id="m2m-scen" style="margin-left:8px;padding:5px 8px;border-radius:7px;border:1px solid var(--border);background:var(--card);color:var(--text)">
@@ -113,6 +114,7 @@
});
})();
</script>
{{end}}
<form method="post" action="/admin/incoming/{{.It.ID}}/answer">
<table>
@@ -140,7 +142,7 @@
</table>
<p class="muted" style="font-size:12.5px;margin:10px 0 0">Пакет принимается только целиком: при отказе по одной бумаге отказ ставится всем бумагам с тем же кодом (так и будет отправлено).</p>
<div style="display:flex;gap:8px;margin-top:14px;flex-wrap:wrap">
<button type="submit" class="btn btn-ok">Отправить решение роботу</button>
<button type="submit" class="btn btn-ok">Отправить решение{{if .DevMode}} роботу{{end}}</button>
<button type="button" class="btn" onclick="m2mSetAll('confirm')">Принять все</button>
<button type="button" class="btn" onclick="m2mSetAll('reject')">Отказать все</button>
</div>
@@ -354,17 +356,19 @@
{{/* ===== QUIK МНП: зачисление клиенту ===== */}}
{{$back := printf "/admin/incoming/%s" .It.ID}}
{{if .DevMode}}{{/* прогон копии в DEPO — служебный инструмент режима разработки */}}
<div class="card">
<h2 style="margin:0">Тестовый прогон в DEPO с реальным клиентом</h2>
<p class="muted" style="font-size:12.5px;margin:6px 0 8px">Копия этого входящего (те же бумаги и решения) записывается в трансферные таблицы DEPO под новым GUID на реального клиента из картотеки — по паспорту. Джоба bj2depo создаёт по нему документ; в НРД ничего не уходит. Полный сценарий приёма: получен → приняли → подали 16/1 → НРД принял → исполнено.</p>
<form method="post" action="/admin/incoming/depo-sim" style="display:flex;gap:8px;flex-wrap:wrap;align-items:center" onsubmit="return confirm('Записать копию перевода в трансферные таблицы DEPO на клиента с этим паспортом?')">
<input type="hidden" name="id" value="{{.It.ID}}">
<label style="margin:0;font-size:12.5px">серия <input type="text" name="ser" value="1110" style="width:70px"></label>
<label style="margin:0;font-size:12.5px">номер <input type="text" name="num" value="754503" style="width:90px"></label>
<label style="margin:0;font-size:12.5px">серия <input type="text" name="ser" value="" placeholder="0000" required style="width:70px"></label>
<label style="margin:0;font-size:12.5px">номер <input type="text" name="num" value="" placeholder="000000" required style="width:90px"></label>
<button type="submit" class="btn">🗂 Прогнать в DEPO с реальным клиентом</button>
<span class="muted" style="font-size:12px">по умолчанию — Погонщикова В.О. (ВТНКЦ00000816 / BR859)</span>
<span class="muted" style="font-size:12px">паспорт клиента из картотеки DEPO</span>
</form>
</div>
{{end}}
<div class="card">
<style>
.qk-steps{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}