«Обмен с DEPO»: сводка состояния вместо форм; настройка — под «Перенастроить»

- Сверху — «Обмен с DEPO работает / настроен не до конца / не подключён» и сведения: база DEPO, сервер и СУБД, логин bj, начало номера торговых счетов, признак ИИС (отказ M2M06), трансферные таблицы, кто запускает обработку и итог последней проверки (✓/✗ и когда).
- Все прежние формы — под «Перенастроить»; раскрыто само, если что-то не проверено.
- Общий стиль сведений «название — значение» (.kv) — в оформлении для настроек.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-10-07 10:35:02 +03:00
parent 7b6decf617
commit 686889ee72
4 changed files with 37 additions and 2 deletions
+1
View File
@@ -94,6 +94,7 @@ var templateFuncs = template.FuncMap{
return "?" return "?"
}, },
"quikModeCustom": quikModeCustom, "quikModeCustom": quikModeCustom,
"depoJobNameOf": depoJobName,
"adDraft": adDraftForView, // неудачная попытка подключить домен — форма открывается заполненной "adDraft": adDraftForView, // неудачная попытка подключить домен — форма открывается заполненной
"withRet": func(d any, ret string) map[string]any { return map[string]any{"D": d, "Ret": ret} }, "withRet": func(d any, ret string) map[string]any { return map[string]any{"D": d, "Ret": ret} },
"whForm": func(w WorkHoursSettings, ret string) map[string]any { return map[string]any{"W": w, "Ret": ret} }, "whForm": func(w WorkHoursSettings, ret string) map[string]any { return map[string]any{"W": w, "Ret": ret} },
@@ -89,8 +89,16 @@
{{if mod "quik-mnp"}} {{if mod "quik-mnp"}}
{{/* ============ ОБМЕН FANCY (MSSQL) — перспективный модуль ============ */}} {{/* ============ ОБМЕН FANCY (MSSQL) — перспективный модуль ============ */}}
<section class="settings-section" id="sec-fancy"> <section class="settings-section" id="sec-fancy">
<h1>Обмен Fancy (MSSQL / PostgreSQL)</h1> <h1>Обмен с DEPO (Fancy)</h1>
{{template "verline" (.Versions.Get "depo")}}
{{template "fancyStatus" .}}
{{$fok := and .Settings.Fancy.Server .Settings.Fancy.DepoTablesCheckOK .Settings.Fancy.DepoJobCheckOK}}
<div class="card">
<details class="adv-box" {{if not $fok}}open{{end}}>
<summary><span class="sum-h">Перенастроить</span><span class="muted">подключение к базе DEPO, торговые счета, трансферные таблицы, признак ИИС, кто запускает обработку — если что-то изменилось</span></summary>
{{template "fancySection" .}} {{template "fancySection" .}}
</details>
</div>
</section> </section>
@@ -408,6 +408,12 @@ label { font-size:13px; font-weight:500; }
.stc-run .stc-ic{background:none;border:2.5px solid var(--accent-weak);border-top-color:var(--accent);box-sizing:border-box;animation:dq-spin .8s linear infinite} .stc-run .stc-ic{background:none;border:2.5px solid var(--accent-weak);border-top-color:var(--accent);box-sizing:border-box;animation:dq-spin .8s linear infinite}
.stc-run .btn, .stc-run form{visibility:hidden} .stc-run .btn, .stc-run form{visibility:hidden}
@media (max-width:600px){.stc{flex-wrap:wrap}} @media (max-width:600px){.stc{flex-wrap:wrap}}
/* сведения «название — значение» (сводки разделов): как в мастере */
.kv{display:grid;grid-template-columns:minmax(140px,210px) minmax(0,1fr);gap:9px 18px;margin:14px 0 0;font-size:14px}
.kv dt{color:var(--muted)}
.kv dd{margin:0;overflow-wrap:anywhere}
.kv-ok{color:var(--ok);font-weight:700} .kv-no{color:var(--err);font-weight:700} .kv-warn{color:var(--warn);font-weight:700}
@media (max-width:600px){.kv{grid-template-columns:minmax(0,1fr);gap:2px 0}.kv dd{margin-bottom:8px}}
@media (max-width:700px){.org-grid{grid-template-columns:minmax(0,1fr)}} @media (max-width:700px){.org-grid{grid-template-columns:minmax(0,1fr)}}
@media (max-width:820px) { @media (max-width:820px) {
.settings { grid-template-columns:1fr; } .settings { grid-template-columns:1fr; }
@@ -1,7 +1,6 @@
{{/* Раздел «Обмен Fancy» — один и тот же в «Настройка → Обмен Fancy» и на шаге 3 мастера {{/* Раздел «Обмен Fancy» — один и тот же в «Настройка → Обмен Fancy» и на шаге 3 мастера
настройки (данные — SetupData). Правки — только здесь. */}} настройки (данные — SetupData). Правки — только здесь. */}}
{{define "fancySection"}} {{define "fancySection"}}
{{template "verline" (.Versions.Get "depo")}}
<div class="card" id="sec-fancy-conn"> <div class="card" id="sec-fancy-conn">
<h2><span class="dot {{if .Settings.Fancy.DepoTablesCheckOK}}ok{{else if .Settings.Fancy.Server}}warn{{else}}err{{end}}"></span>Подключение к серверу БД клиента</h2> <h2><span class="dot {{if .Settings.Fancy.DepoTablesCheckOK}}ok{{else if .Settings.Fancy.Server}}warn{{else}}err{{end}}"></span>Подключение к серверу БД клиента</h2>
<p class="muted">Сервер учётной базы Fancy DEPO: картотека лиц, счета и договоры, остатки, опции (признак квалифицированного инвестора), трансферные таблицы обмена. Поддерживаются <strong>Microsoft SQL Server</strong> и <strong>PostgreSQL</strong>. База указывается ниже, в карточке «Трансферные таблицы DEPO».</p> <p class="muted">Сервер учётной базы Fancy DEPO: картотека лиц, счета и договоры, остатки, опции (признак квалифицированного инвестора), трансферные таблицы обмена. Поддерживаются <strong>Microsoft SQL Server</strong> и <strong>PostgreSQL</strong>. База указывается ниже, в карточке «Трансферные таблицы DEPO».</p>
@@ -117,3 +116,24 @@
{{end}} {{end}}
{{define "verline"}}{{if .Title}}<p class="muted" style="font-size:12.5px;margin:-6px 0 12px">{{.Title}}: {{if .Version}}<strong>{{.Version}}</strong>{{else}}не определена{{end}}{{with .Detail}} · {{.}}{{end}}{{with .Err}} · <span style="color:var(--err)">{{.}}</span>{{end}}</p>{{end}}{{end}} {{define "verline"}}{{if .Title}}<p class="muted" style="font-size:12.5px;margin:-6px 0 12px">{{.Title}}: {{if .Version}}<strong>{{.Version}}</strong>{{else}}не определена{{end}}{{with .Detail}} · {{.}}{{end}}{{with .Err}} · <span style="color:var(--err)">{{.}}</span>{{end}}</p>{{end}}{{end}}
{{/* Сводка «Обмен с DEPO» (Настройка): что подключено и проверено — одним взглядом; формы — под «Перенастроить». */}}
{{define "fancyStatus"}}{{$f := .Settings.Fancy}}{{$ok := and $f.Server $f.DepoTablesCheckOK $f.DepoJobCheckOK}}
<div class="card" id="sec-fancy-status">
<div class="stc {{if $ok}}stc-ok{{else if $f.Server}}stc-err{{else}}stc-warn{{end}}"><span class="stc-ic"></span>
<div class="stc-b"><b>{{if $ok}}Обмен с DEPO работает{{else if $f.Server}}Обмен с DEPO настроен не до конца{{else}}Учёт DEPO не подключён{{end}}</b>
<small>{{if $ok}}Подключение, трансферные таблицы и обработка проверены — менять ничего не нужно. Если что-то изменилось на сервере DEPO — «Перенастроить» ниже.{{else if $f.Server}}Что не так — в строках ниже с ✗; поправить — в «Перенастроить».{{else}}Подключите базу DEPO — мастером настройки (шаг «Учёт DEPO») или в «Перенастроить».{{end}}</small></div>
{{if not $f.Server}}<a class="btn" href="/admin/wizard?step=3" style="flex:none">Открыть мастер</a>{{end}}</div>
{{if $f.Server}}
<dl class="kv">
<dt>База DEPO</dt><dd><b>{{$f.DepoDB}}</b> на {{$f.Server}}{{if $f.Port}}:{{$f.Port}}{{end}} · {{if eq $f.DBType "postgres"}}PostgreSQL{{else}}Microsoft SQL Server{{end}}</dd>
<dt>Логин bj</dt><dd><code>{{$f.User}}</code></dd>
<dt>Торговые счета клиентов</dt><dd>номер начинается с <code>{{depoAccPrefix}}</code></dd>
<dt>Признак ИИС</dt><dd>договор начинается с <code>{{if $f.IISContractMarker}}{{$f.IISContractMarker}}{{else}}БРИИС{{end}}</code> — такие переводы отклоняются кодом M2M06</dd>
<dt>Трансферные таблицы</dt><dd>{{if $f.DepoTablesCheckOK}}<span class="kv-ok">✓</span>{{else}}<span class="kv-no">✗</span>{{end}} {{if $f.DepoTablesCheck}}{{$f.DepoTablesCheck}}{{else}}ещё не проверялись{{end}}{{if not $f.DepoTablesCheckAt.IsZero}} <span class="muted">· {{msk $f.DepoTablesCheckAt}}</span>{{end}}</dd>
<dt>Обработка событий</dt><dd>{{if $f.DepoJobCheckOK}}<span class="kv-ok">✓</span>{{else}}<span class="kv-no">✗</span>{{end}} {{if eq $f.DepoJobMode "bj"}}запускает bj{{if $f.DepoJobEverySec}} каждые {{$f.DepoJobEverySec}} с{{end}}{{else if eq $f.DepoJobMode "sql-auto"}}задание SQL Server Agent <code>{{depoJobNameOf $f}}</code>{{else if eq $f.DepoJobMode "sql-manual"}}задание SQL Server Agent (создано администратором){{else}}не выбрано, кто запускает{{end}}{{if $f.DepoJobCheck}}<div class="muted" style="font-size:12.5px;margin-top:2px">{{$f.DepoJobCheck}}{{if not $f.DepoJobCheckAt.IsZero}} · {{msk $f.DepoJobCheckAt}}{{end}}</div>{{end}}</dd>
{{if $f.DepoProcCheck}}<dt>Процедуры обработки</dt><dd>{{if $f.DepoProcCheckOK}}<span class="kv-ok">✓</span>{{else}}<span class="kv-warn">⚠</span>{{end}} {{$f.DepoProcCheck}}{{if not $f.DepoProcCheckAt.IsZero}} <span class="muted">· {{msk $f.DepoProcCheckAt}}</span>{{end}}</dd>{{end}}
</dl>
{{end}}
</div>
{{end}}