Справочник участников: показывать результат обработки джобой Fancy

На странице «Справочник участников M2M» теперь выводится итог обработки
справочника джобой bj2depo — STATE/COMMENT последнего события HANDBOOK
из FTV_M2M_EVENTS (поле COMMENT пишет Fancy). Расхождения/предупреждения
выделяются цветом и значком: КРИТИЧ/ОШИБКА — красным, ПРЕДУПРЕЖДЕНИЕ —
жёлтым, «изменений нет» — зелёным, чтобы оператор видел, что проверить.

Только чтение (fsql.QEv11, TOP 1 по EVENT_DATE), короткий таймаут 4с,
страница не висит если DEPO недоступна.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
fontvielle
2026-10-14 11:16:19 +03:00
parent c73f6120d3
commit e4b164c6e5
4 changed files with 97 additions and 1 deletions
@@ -12,6 +12,24 @@
{{end}}
</div>
{{if or .Result.Found .Result.Err}}
<div class="card">
<h2 style="margin-top:0">Результат обработки в Fancy</h2>
<p class="muted" style="margin-top:0">Итог сверки справочника юрлиц Fancy с данными НРД (джоба bj2depo, поле COMMENT последнего события HANDBOOK).</p>
{{if .Result.Err}}
<p class="muted">Результат пока недоступен: {{.Result.Err}}.</p>
{{else}}
<div style="padding:12px 14px;border-radius:10px;background:{{if eq .Result.Severity "err"}}var(--err-weak,#f7dede){{else if eq .Result.Severity "warn"}}var(--warn-weak,#f6eed8){{else}}var(--ok-weak,#e3f2e3){{end}}">
<div style="font-weight:600;margin-bottom:6px">
{{if eq .Result.Severity "err"}}⛔ Обнаружены ошибки — проверьте и исправьте{{else if eq .Result.Severity "warn"}}⚠ Есть предупреждения — проверьте{{else}}✓ Справочник обработан, расхождений нет{{end}}
<span class="muted" style="font-weight:400;font-size:12px">· обработано {{.Result.AtText}}{{with .Result.State}} · статус {{.}}{{end}}</span>
</div>
{{with .Result.Comment}}<pre style="white-space:pre-wrap;word-break:break-word;margin:0;font-size:13px;line-height:1.5;font-family:inherit">{{.}}</pre>{{else}}<span class="muted">джоба отработала, но COMMENT пуст</span>{{end}}
</div>
{{end}}
</div>
{{end}}
{{if .Participants}}
<div class="card">
<div style="display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:space-between">