feat(bj): модуль ЛК на PostgreSQL, обмен с DEPO, боевой ЛК с имитатором НРД, QUIK, НПР
- bj_exchange и «кран» Fancy убраны: данные модуля ЛК в PostgreSQL (схема lk) - трансферные таблицы FTV_M2M: создание при установке, события, справочник участников - сверка с DEPO: счёт, ФИО, дата рождения, ИИС по договору, квал-инвестор из опции DEPO - боевой ЛК ЕСИА Финанс при тестовом ИШ: журнал, отказ через DEPO, статусы в ЛК - онлайн-лицензирование в bj, план тестирования M2M для контрагента (интерактивный HTML) - модули QUIK МНП, экспорт QUIK, НПР/УДС; документы и тестовые материалы Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+126
@@ -0,0 +1,126 @@
|
||||
# Product
|
||||
|
||||
<!-- impeccable:product-schema 1 -->
|
||||
|
||||
## Platform
|
||||
|
||||
web
|
||||
|
||||
## Users
|
||||
|
||||
**Основной пользователь — оператор/бэк-офис брокера** (администратор bj). Работает
|
||||
в веб-админке `bj-server`: настраивает подключения (Fancy, QUIK, НРД/ИШ, ЕСИА
|
||||
Финансы), мониторит заявки на M2M-перевод и их статусы, читает журнал обмена с
|
||||
НРД, ведёт пользователей ЛК, обрабатывает входящие переводы, прогоняет тесты с
|
||||
роботом НРД. Контекст — рабочее место специалиста депозитария/бэк-офиса.
|
||||
|
||||
**Вторичный пользователь — розничный инвестор (физлицо)** в клиентском ЛК
|
||||
(`bj-lk`): подаёт заявку на перевод своих ценных бумаг себе же в другой
|
||||
депозитарий. Актуально для брокеров БЕЗ платформы Финансы (профили «автомат» и
|
||||
«полуавтомат»); у брокеров с Финансы клиентский ЛК даёт сама Финансы.
|
||||
|
||||
## Product Purpose
|
||||
|
||||
Bridge-and-Join-s (bj) — шлюз, обеспечивающий переводы ценных бумаг физлица
|
||||
«самому себе» (M2M) между депозитариями через сервис НРД **MOEX МОСТ**. Это
|
||||
регулируемая операция (ФЗ от 23.05.2025 № 124-ФЗ, Указание Банка России
|
||||
№ 7317-У, вступление в силу 01.09.2026): депозитарий зачисляет бумаги клиенту в
|
||||
другом депозитарии без встречного поручения, за минуты.
|
||||
|
||||
Роль bj — **протокольное плечо НРД/MOEX МОСТ**: собрать `M2MTransferRequest`,
|
||||
подписать транзитной ЭП (ГОСТ через Интеграционный шлюз НРД), отправить в НРД,
|
||||
принять `M2MTransferDecision`/`M2MTransferResponse`, вернуть исход в вызвавшую
|
||||
систему. Успех = перевод исполнен и клиент/оператор видят понятный статус.
|
||||
|
||||
## Positioning
|
||||
|
||||
Незаменимое ядро bj — именно **междепозитарный обмен с НРД по протоколу M2M**
|
||||
(XML с namespace-префиксами в кодировке windows-1251, транспорт ИШ с ГОСТ-ЭП и
|
||||
шифрованием «закрытого конверта», тестирование с роботом НРД, коды отказа
|
||||
M2Mxx). Соседние системы этого не делают: платформа ЕСИА Финансы/winr закрывает
|
||||
ЛК/портфель/подпись клиента, QUIK — блокировку позиций, но обмен depository↔НРД
|
||||
не ведёт ни одна из них. bj встраивается за ними как шлюз в НРД, а не дублирует
|
||||
их функции.
|
||||
|
||||
## Operating Context
|
||||
|
||||
**Три профиля развёртывания** (bj во всех — шлюз в НРД):
|
||||
- **Через Финансы:** ЛК, портфель, подпись клиента и блокировку держит платформа
|
||||
ЕСИА Финансы (winr / ef.winr.pro). Стык — реализованный контракт
|
||||
`back_office V1` (`docs/lk-contract/v1/openapi.yaml`, HTTP Basic): ЛК шлёт
|
||||
`POST /api/v1/back_office/claims/` с подписанной (XMLDSig) заявкой, bj шлёт в
|
||||
НРД и возвращает статус callback-ом `PATCH /api/v1/back_office/claims/{id}`.
|
||||
- **Автомат:** фирма без Финансы, но с QUIK — свой `bj-lk` + коннектор QUIK МНП
|
||||
(блокировка позиций хранимыми процедурами).
|
||||
- **Полуавтомат:** без Финансы и QUIK — свой `bj-lk` + ручные гейты оператора.
|
||||
|
||||
**Интеграции:** НРД ИШ (Интеграционный шлюз, крипто ГОСТ/Валидата); Fancy
|
||||
(депозитарий/Спектр, MSSQL/PostgreSQL — портфели клиентов, канал обмена и журнал
|
||||
НРД); QUIK МНП (блокировка, боевая БД — только чтение + штатные процедуры);
|
||||
ЕСИА Финансы/winr (ЛК). Тестовый контур НРД — TEST3 с роботом (сценарии
|
||||
1111/2001/2002/3333).
|
||||
|
||||
**Регуляторные факты:** SLA «минуты» (5 мин до 31.08.2027, 2 мин с 01.09.2027);
|
||||
переводятся только **российские ценные бумаги** (ISIN начинается с RU),
|
||||
учитываемые на **торговом счёте депо (разделе)**; обособленные бумаги — нельзя.
|
||||
Отказ по неподходящей бумаге — код НРД M2M01.
|
||||
|
||||
## Capabilities and Constraints
|
||||
|
||||
- Реализован контракт ЕСИА Финансы `back_office V1`: приём подписанной заявки,
|
||||
проверка подписи (crypto-service), валидация, отправка в НРД, callback со
|
||||
статусом (`draft/signed/submitted/in_progress/confirmed/rejected/timed_out`) и
|
||||
кодом причины (`reason_code`/`reason_text`, напр. M2M18).
|
||||
- Клиентский ЛК `bj-lk` (отдельный бинарь, ставится на веб-сервер брокера):
|
||||
портфель, подача заявки с подтверждением, статусы; ходит только в bj по API с
|
||||
ключом, к БД напрямую не подключается.
|
||||
- Коннектор QUIK МНП (`quikm2m.go`) — регистрация/подпись/снятие поручений;
|
||||
сейчас за предохранителем, ждёт настройки QAdmin у аутсорсера.
|
||||
- Чтение реальных портфелей из Fancy (`BJ_DEPO_DATA`); правило RU-only и
|
||||
человекочитаемые коды отказа M2Mxx.
|
||||
- **Терминология (не переводить, не упрощать):** M2M, MOEX МОСТ, НРД, ИШ
|
||||
(Интеграционный шлюз), депозитарий, депонент, счёт депо, раздел, поручение,
|
||||
контрагент, место расчётов (НРД/СПБ), торговый счёт.
|
||||
- **Открытые/недорешённые факты:** транспорт depo_m2m у Финансы (V1 back_office
|
||||
или их webhook-модель) — на подтверждении; типы QUIK 100/101 не включены
|
||||
(у аутсорсера); `place_of_payment=spb` не реализован; справочник контрагентов
|
||||
(ИНН) у Финансы ещё не готов.
|
||||
|
||||
## Brand Commitments
|
||||
|
||||
Фиксированный бренд продукта — **Bridge-and-Join-s (bj)**. Клиентский ЛК может
|
||||
нести название брокера через настройку `LK_TITLE` (напр. «Личный кабинет ·
|
||||
Фонтвьель»), но это конфигурация развёртывания, а не смена бренда продукта.
|
||||
Язык интерфейса — русский; тон — деловой, финансово-точный.
|
||||
|
||||
## Evidence on Hand
|
||||
|
||||
- Контракт-спецификация: `docs/lk-contract/v1/openapi.yaml`, `DOC/API ЛК ЕСИА.pdf`.
|
||||
- Документация НРД (`DOC/`), QUIK (`/home/fontvielle/quik-docs/`), Финансы/winr
|
||||
(`/home/fontvielle/lk-docs/`).
|
||||
- Реальные данные: боевые базы Fancy (`BJ_DEPO_DATA` — настоящие портфели
|
||||
клиентов), боевая БД QUIK МНП (`88_INSTR`), тестовый контур НРД с роботом.
|
||||
- Пройденные проверки: сквозной цикл ЛК → НРД (робот) с реальным клиентом;
|
||||
замыкание исхода (в т.ч. отказ M2M18) на клиента.
|
||||
- НЕ выдумывать: отзывы, цены, лицензии, метрики, клиентов — таких данных нет.
|
||||
|
||||
## Product Principles
|
||||
|
||||
1. **bj — шлюз в НРД, а не полный стек.** Интегрироваться с ЛК/QUIK/Fancy, а не
|
||||
дублировать их. Сначала проверять существующий контракт, потом строить.
|
||||
2. **Безопасность необратимых операций.** Перевод бумаг необратим: подтверждение
|
||||
перед подачей, никаких необеспеченных поручений в НРД.
|
||||
3. **Боевые системы — только на чтение.** Fancy и QUIK боевые; писать только
|
||||
штатными процедурами API, никаких прямых INSERT/UPDATE в их таблицы.
|
||||
4. **Понятный исход.** Коды НРД (M2Mxx) и статусы показывать человекочитаемо —
|
||||
и оператору, и клиенту; статус должен честно отражать реальность (отказ ≠
|
||||
«в работе», «отправлено» ≠ «исполнено»).
|
||||
5. **Регуляторная корректность.** Только российские бумаги на торговом счёте, SLA
|
||||
«минуты», соответствие требованиям Банка России.
|
||||
|
||||
## Accessibility & Inclusion
|
||||
|
||||
Обычная веб-доступность уровня **WCAG AA**: достаточный контраст (в т.ч. тёмная
|
||||
тема), программные `label` у полей, доступность с клавиатуры и для скринридеров,
|
||||
адекватные тап-таргеты. Отдельных регуляторных требований к доступности пока не
|
||||
установлено.
|
||||
Reference in New Issue
Block a user