Кабинет: курсы ЦБ, история стоимости портфеля, быстрые операции, контакты в профиле

Курсы валют. Оценивать замещающие и еврооблигации по курсу из копии учётной
системы было нельзя: в DEPO он от 31.05.2026, в SPECTRE — от 18.07.2026.
Берём официальный курс Банка России (открытый XML, без ключа — тем же каналом
пользуется Инвест-хаб) и складываем по дням в lk.fx_rates: без интернета
кабинет считает по последнему известному курсу, а не отказывается оценивать.
Источник переключается в настройках («Данные кабинета»), там же кнопка
«Обновить курсы сейчас». Портфель БР-719: 560,3 млн ₽ против 522 млн по
старому курсу.

История стоимости. Ни QUIK, ни SPECTRE её не хранят, поэтому раз в день после
закрытия торгов считаем стоимость каждого портфеля по экспорту QUIK и пишем
строку в lk.portfolio_daily (257 портфелей за 14 секунд). Кабинет рисует по
ним график на странице портфеля — SVG собирается на сервере, скриптов в
кабинете по-прежнему нет. Режим по умолчанию — «автоматически»: ведём, если
настроен экспорт QUIK, потому что задним числом историю не восстановить.

Операции. Связка «JOIN OD_RESTS ON sr.ID = CASE WHEN w.D_REST IN (…)»
заставляла SQL Server разбирать список счетов на каждой строке журнала
проводок: год данных читался 6–7 секунд. Обе стороны проводки выбираются
заранее двумя ветвями UNION ALL, индексы IX_WIRING_D_REST_WIRDATE и
IX_WIRING_K_REST_WIRDATE отрабатывают поиском — 89 мс на тех же 64 строках.
Период по умолчанию вернули к году, ответ кэшируется на пять минут.

Профиль: почта, телефон и прошлый вход из анкеты — клиент видит, куда с ним
свяжется депозитарий, и заметит устаревшие данные. Правка только через
менеджера. Заказ документов из кабинета убран совсем (форма была убрана
раньше, теперь нет и обработчика).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q4YVo4UMopqT5DzicqpPjL
This commit is contained in:
zuevav
2026-09-18 19:25:18 +03:00
parent 683f516d07
commit 510a34b7bc
17 changed files with 1026 additions and 96 deletions
+10
View File
@@ -269,6 +269,16 @@ type LKSettings struct {
Test LKEndpoint `json:"lk_test"`
Prod LKEndpoint `json:"lk_prod"`
// FXSource — откуда брать курсы валют для оценки валютных выпусков:
// пусто/"cbr" — Банк России (открытый XML, без ключа), "accounting" — курс
// учётной системы (OD_VALUES_RATES), если сервер стоит без выхода в интернет.
FXSource string `json:"lk_fx_source,omitempty"`
// SnapshotMode — ежедневный срез стоимости портфелей (из него кабинет рисует график):
// пусто — автоматически (ведём, если настроен экспорт QUIK), "on" — всегда, "off" — не вести.
// SnapshotAt — время снятия среза, «ЧЧ:ММ» (пусто = 20:30, после закрытия торгов).
SnapshotMode string `json:"lk_snapshot_mode,omitempty"`
SnapshotAt string `json:"lk_snapshot_at,omitempty"`
// EmulateNSD — заявки ЛК проходят весь путь (сверка DEPO, блокировка QUIK, сделка,
// статус в ЛК), но в НРД не уходят: отправку и ответ контрагента имитирует bj.
// Для боевого ЛК при тестовом профиле ИШ имитация включается принудительно.