Files
Bridge-and-Join-s/internal/lkgateway/web/templates/admin_fancy_queue.html
T
zuevav 8084fac403 QUIK: имя базы МНП обязательно, доверие сертификату по умолчанию, памятка вместо пустых ссылок
- «База МНП» — в основной строке рядом с сервером и портом, обязательна (без неё
  модуль не подключается); «Дополнительно» — только шифрование.
- «Доверять сертификату сервера» включено по умолчанию у ненастроенного QUIK
  (у QUIK сертификат свой, не на IP).
- Строка версий над разделом обновляется сразу после проверки подключения
  (раньше — через 10 минут показывала старую ошибку).
- «что ему настроить · документы ARQA» вели в никуда (техническая справка не
  входит в рабочую сборку, документов ARQA на сервере клиента нет): вместо них
  «Памятка администратору QUIK» — и в мастере, и в «Настройке».
- Ссылки на техническую справку (Валидата, события bj2depo) — только в сборке
  со справкой; «Инструкция по размещению» ЛК вела на несуществующую страницу.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
2026-10-06 17:11:14 +03:00

77 lines
7.4 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{{define "content"}}
<div class="hero">
<h1 class="hero-greeting">Обмен с DEPO (Fancy)</h1>
<span class="hero-status">Переводы M2M, которые bj передал в депозитарную систему через трансферные таблицы базы {{.DB}} (FTV_M2M / FTV_M2M_LINES / FTV_M2M_EVENTS). Job bj2depo создаёт по ним документы в DEPO и отвечает событиями; bj ведёт статусы, документ и ошибки.</span>
</div>
{{if .Flash}}<div class="card" style="background:var(--accent-weak)">{{.Flash}}</div>{{end}}
<div class="card">
<h2>Как идёт обмен</h2>
<p class="muted" style="line-height:1.7">
<span class="badge awaiting_decision">FTV_M2M</span> bj записывает перевод (шапка + строки по бумагам) и событие <code>BJ_*</code> со STATE=<b>TODO</b> →
<span class="badge awaiting_decision">bj2depo</span> процедура FTV_M2M_JOB ({{.JobMode}}) читает события, создаёт документ 16/16-1 в DEPO, отвечает <code>DEPO_ORDER_CREATED</code> (номер документа) или <code>DEPO_ERROR</code> →
<span class="badge sent">документ</span> bj следит за состоянием документа (OD_DOCS: начальный ввод → конец обработки / отмена) и при отмене оповещает →
<span class="badge confirmed">события НРД</span> по ответам MS010 и M2M bj дописывает <code>BJ_ORDER_ACCEPTED / BJ_EXECUTED / BJ_REJECTED / BJ_CANCELLED</code>.
Опрос таблиц — раз в минуту.{{if internalDocs}} Подробности и словарь событий — <a href="/admin/help/fancy-events">страница для программиста Fancy</a>.{{end}}
</p>
<div style="display:flex;gap:18px;flex-wrap:wrap;font-size:13px;margin-top:6px">
<span>Переводов: <b>{{.Sum.Total}}</b></span>
<span>Ждут job: <b>{{.Sum.Pending}}</b></span>
<span>С документом DEPO: <b>{{.Sum.WithDoc}}</b></span>
<span>С ошибками: <b style="{{if .Sum.Errors}}color:var(--err){{end}}">{{.Sum.Errors}}</b></span>
{{if not .Sum.LastEventAt.IsZero}}<span>Последнее событие: <b>{{wall .Sum.LastEventAt}}</b></span>{{end}}
<span>Справочник НРД в DEPO: {{if .Sum.HasHandbook}}<b>{{.Sum.Handbook}}</b> участников{{if not .Sum.HandbookAt.IsZero}} (обновлён {{wall .Sum.HandbookAt}}){{end}}{{else}}<span class="muted">таблица FTV_M2M_HANDBOOK не создана</span>{{end}}</span>
<span>Job bj2depo: {{.JobMode}}{{if eq .Fancy.DepoJobMode "bj"}}{{if .Fancy.DepoJobLast}} · последний вызов: {{.Fancy.DepoJobLast}}{{if not .Fancy.DepoJobLastAt.IsZero}} ({{msk .Fancy.DepoJobLastAt}}){{end}}{{end}}{{else if .Fancy.DepoJobCheck}} · проверка готовности: {{if .Fancy.DepoJobCheckOK}}OK{{else}}не пройдена{{end}}{{if not .Fancy.DepoJobCheckAt.IsZero}} ({{msk .Fancy.DepoJobCheckAt}}){{end}}{{end}} · <a href="/admin/setup#fancy">настройки</a></span>
</div>
</div>
{{if or .Failures (not .RunAsOK)}}<div class="card" style="border:1px solid var(--err)">
<h2 style="color:var(--err)">Обработчик DEPO не смог обработать записи{{if .Failures}} ({{len .Failures}}){{end}}</h2>
<p class="muted">Пока причина не устранена, документы в DEPO не создаются, а статусы по заявкам ЛК не ставятся. Устраните причину по тексту ошибки и верните записи в очередь: обработчик возьмёт их заново.</p>
{{if not .RunAsOK}}<p style="color:var(--err)">✗ {{.RunAsMsg}}</p>{{end}}
{{if .Failures}}
<div style="overflow-x:auto"><table style="margin-top:8px">
<thead><tr><th>Запись</th><th>Перевод</th><th>Тип / строка</th><th>Когда</th><th>Ошибка обработчика</th></tr></thead>
<tbody>{{range .Failures}}<tr>
<td>{{.TableRu}} №{{.ID}}</td><td><code>{{.GUID}}</code></td><td>{{.Type}}{{if .Ref}}<div class="muted" style="font-size:11px">{{.Ref}}</div>{{end}}</td>
<td style="white-space:nowrap">{{if not .At.IsZero}}{{wall .At}}{{end}}</td><td style="color:var(--err);font-size:12px">{{.Comment}}</td>
</tr>{{end}}</tbody>
</table></div>
<form method="post" action="/admin/fancy-queue/requeue" style="margin-top:12px"><button type="submit" class="btn btn-ok" onclick="return confirm('Вернуть записи с ошибкой в очередь обработчика DEPO?')">↻ Вернуть в очередь</button></form>
{{end}}
</div>{{end}}
<div class="card">
<h2>Переводы в DEPO ({{len .Rows}})</h2>
{{if .Error}}<p style="color:var(--err)">{{.Error}}</p>{{end}}
{{if .Rows}}
<div style="overflow-x:auto">
<table style="font-size:12.5px">
<thead><tr><th>Создан</th><th>Перевод</th><th>Направление</th><th>Депонент</th><th>Контрагент</th><th>Бумаги</th><th>Документ DEPO</th><th>Состояние</th></tr></thead>
<tbody>
{{range .Rows}}
<tr>
<td style="white-space:nowrap">{{if not .CreatedAt.IsZero}}{{wall .CreatedAt}}{{else}}—{{end}}</td>
<td><a href="/admin/claims?guid={{.GUID}}"><code>{{short 8 .GUID}}</code></a>{{if .Comment}}<div class="muted" style="font-size:11px">{{.Comment}}</div>{{end}}</td>
<td style="white-space:nowrap">{{.DirectionRu}}</td>
<td>{{.Deponent}}{{if .DeponentDoc}}<div class="muted" style="font-size:11px">{{.DeponentDoc}}</div>{{end}}</td>
<td><code>{{.CP}}</code></td>
<td>{{range .Lines}}<div><code>{{.ISIN}}</code>{{if .SecCode}} <span class="muted">{{.SecCode}}</span>{{end}} × {{.Amount}}{{if eq .State "ERROR"}} <span class="badge rejected">ошибка</span>{{end}}</div>{{else}}<span class="muted">—</span>{{end}}</td>
<td>{{if .Doc}}<b>№{{.Doc}}</b><div class="muted" style="font-size:11px">{{.DocState}}{{if not .DocAt.IsZero}} · {{wall .DocAt}}{{end}}</div>{{else}}<span class="muted">не создан</span>{{end}}</td>
<td><span class="badge {{stageCls .}}">{{stageText .}}</span>
{{range .Errors}}<div style="color:var(--err);font-size:11px">{{.}}</div>{{end}}</td>
</tr>
<tr><td colspan="8" style="padding:2px 10px 8px 24px;border-top:none"><div class="muted" style="font-size:11px;display:flex;gap:6px 18px;flex-wrap:wrap">{{range .Events}}<span><span style="{{if eq .State "TODO"}}color:var(--warn);font-weight:600{{end}}">{{.Type}}</span>{{if .Ref}} <code>{{.Ref}}</code>{{end}} · {{wall .At}}{{if .Codes}} · {{.Codes}}{{end}}{{if .Comment}} — {{.Comment}}{{end}}</span>{{else}}<span>событий нет</span>{{end}}</div></td></tr>
{{end}}
</tbody>
</table>
</div>
{{else if not .Error}}
<p class="muted">В трансферных таблицах пока нет переводов. Они появятся при входящем/исходящем переводе M2M{{if devOn}} или при прогоне «Тестирование M2M → выгрузка истории в DEPO»{{end}}.</p>
{{end}}
</div>
{{if internalDocs}}<p style="margin-top:14px"><a href="/admin/help/fancy-events" class="muted">bj ↔ bj2depo: события, таблицы, действия job →</a></p>{{end}}
{{end}}