docs: make project documentation self-contained

This commit is contained in:
2026-09-12 13:09:37 +03:00
parent aa9afc15e4
commit 3a99af1a6e
36 changed files with 1006 additions and 703 deletions
+15 -12
View File
@@ -38,7 +38,7 @@ SBER не заменяется на SBERP. Однобуквенные тикер
Денежные показатели используют символ валюты; описание компании видно сразу
под логотипом и названием, перед ценой. Далее идут график, моя позиция, предстоящие
дивиденды и личная история событий.
Логотип использует существующий CDN helper и буквенный fallback.
Логотип загружается из публичного CDN; при отсутствии изображения показывается буквенная заглушка.
Позиция отсутствующей или полностью проданной бумаги не создаёт пустого блока;
рыночные данные и личная история остаются доступны.
@@ -51,8 +51,7 @@ UTC, которое может быть старше времени получе
## API и владельцы
Все методы требуют Bearer session и текущее подключение Т-Банка.
Новые endpoints принадлежат `StockController` / `StockService` существующего
`TbankConnectionModule`:
Публичный API страницы акции обслуживает инвестиционная подсистема backend:
| Метод | Содержимое |
| --- | --- |
@@ -76,7 +75,7 @@ UID включён в ключ кэша и подпись общего курс
восстанавливается переходом на первую страницу с повторным запросом.
Сервис портфеля остаётся владельцем снимков и оценки позиций. Новая сводка
фильтрует `STOCK` по точному UID и использует decimal/BigInt, без FX.
фильтрует `STOCK` по точному UID и использует точную десятичную арифметику, без конвертации валют.
Средняя цена равна сумме количеств, умноженных на средние цены, делённой на
общее количество; она округляется сервером до девяти знаков, проценты — до шести.
Неполные или разновалютные денежные итоги недоступны. Для нулевого количества
@@ -134,9 +133,9 @@ TTM означает последние 12 месяцев, MRQ — послед
## Границы и проверка
Новые RPC проходят существующий `TbankClient`: TLS, rate limit, очередь,
deadline и retry. Доступ/расшифровка остаются у `TbankAccessService` и
`TbankTokenService`. Успешные ответы и совместные незавершённые запросы кэшируются
Запросы T-Bank проходят общую серверную интеграцию с TLS, лимитом частоты,
очередью, предельным временем ожидания и повторными попытками. Проверка доступа
и расшифровка token выполняются только backend. Успешные ответы и совместные незавершённые запросы кэшируются
в bounded LRU на 30 секунд по пользователю, поколению подключения и параметрам.
Для поиска `FindInstrument` дополняется сведениями `ShareBy` через тот же
кэш карточки инструмента и одним пакетным `GetLastPrices` для списка. Ошибка
@@ -148,15 +147,19 @@ deadline и retry. Доступ/расшифровка остаются у `Tban
данными при изменении подключения; logout использует существующий session reset.
Контракт генерируется из runtime Nest OpenAPI, затем обновляются frontend snapshot
и generated types. Unit/HTTP/MSW tests проверяют точность, разделение инструментов,
и generated types. Проверки отдельных подсистем и HTTP-взаимодействия проверяют точность, разделение инструментов,
фильтрацию и курсоры, валидацию, отсутствие позиции и локальные ошибки.
Браузерная проверка использует синтетические ответы и широкий/узкий viewport.
Полные даты в интерфейсе имеют формат ДД.ММ.ГГГГ; ISO-формат транспорта и
временные зоны расчётов не меняются. Личная история использует общий с портфелем
`LedgerEntryRow`, дополненный количеством, ценой и ссылкой на счёт. История
временные зоны расчётов не меняются. Личная история использует общий с портфелем формат строки операции,
дополненный количеством, ценой и ссылкой на счёт. История
дивидендов компании раскрывается в оформленном блоке с отдельными карточками
выплат, датой реестра, доступной датой выплаты и суммой на акцию.
Реальные ограничения источника описаны в
[результатах исследования](../../design/stock-detail-api-live-findings.md).
Проверка реальных ответов источника выявила ограничения: отсутствие финансового
поля нельзя считать нулём, время получения не подтверждает дату отчётности,
а налог нельзя однозначно связать с отдельным дивидендом по совпадению даты.
Алгоритм корректировки исторических цен после корпоративных событий не
подтверждён, поэтому точное наложение старых личных сделок на график не обещается.
Выборка проверенных бумаг не доказывает полноту данных всего рынка.
История открытых счетов не обещает полную историю владения, включая закрытые
счета, переводы и универсальные корпоративные события.