docs: make project documentation self-contained
This commit is contained in:
+15
-12
@@ -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).
|
||||
Проверка реальных ответов источника выявила ограничения: отсутствие финансового
|
||||
поля нельзя считать нулём, время получения не подтверждает дату отчётности,
|
||||
а налог нельзя однозначно связать с отдельным дивидендом по совпадению даты.
|
||||
Алгоритм корректировки исторических цен после корпоративных событий не
|
||||
подтверждён, поэтому точное наложение старых личных сделок на график не обещается.
|
||||
Выборка проверенных бумаг не доказывает полноту данных всего рынка.
|
||||
История открытых счетов не обещает полную историю владения, включая закрытые
|
||||
счета, переводы и универсальные корпоративные события.
|
||||
|
||||
Reference in New Issue
Block a user