Compare commits
1
Commits
v0.1.8
..
688455c9cd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
688455c9cd |
@@ -1,29 +1,5 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## [0.1.8](https://git.personal.ksv741.ru/WealthLedger/docs/compare/v0.1.7...v0.1.8) (2026-11-06)
|
|
||||||
|
|
||||||
### Maintenance
|
|
||||||
|
|
||||||
* **deps:** set Renovate release age, PR limit and update groups (WealthLedger/main[#6](https://git.personal.ksv741.ru/WealthLedger/docs/issues/6)) ([#64](https://git.personal.ksv741.ru/WealthLedger/docs/issues/64)) ([6d7d4c7](https://git.personal.ksv741.ru/WealthLedger/docs/commit/6d7d4c7b286535b7338d7e398d2daf7d8137a501))
|
|
||||||
|
|
||||||
## [0.1.7](https://git.personal.ksv741.ru/WealthLedger/docs/compare/v0.1.6...v0.1.7) (2026-11-01)
|
|
||||||
|
|
||||||
### Documentation
|
|
||||||
|
|
||||||
* describe all-account row grouping (WealthLedger/main[#47](https://git.personal.ksv741.ru/WealthLedger/docs/issues/47)) ([#59](https://git.personal.ksv741.ru/WealthLedger/docs/issues/59)) ([dcb528f](https://git.personal.ksv741.ru/WealthLedger/docs/commit/dcb528fa9f76f0d7aa98bd827cc7ee39024dbb13))
|
|
||||||
* describe concentration tab and stored instrument classification (WealthLedger/main[#48](https://git.personal.ksv741.ru/WealthLedger/docs/issues/48)) ([#60](https://git.personal.ksv741.ru/WealthLedger/docs/issues/60)) ([37430da](https://git.personal.ksv741.ru/WealthLedger/docs/commit/37430da4c99cb571ef5bc0676cad7b3a47bcb6f0))
|
|
||||||
|
|
||||||
### Maintenance
|
|
||||||
|
|
||||||
* **deps:** resolve markdownlint audit advisory (WealthLedger/main[#49](https://git.personal.ksv741.ru/WealthLedger/docs/issues/49)) ([#61](https://git.personal.ksv741.ru/WealthLedger/docs/issues/61)) ([abe5b16](https://git.personal.ksv741.ru/WealthLedger/docs/commit/abe5b16241d3002baa5d39c2a12949f23a75b968))
|
|
||||||
|
|
||||||
## [0.1.6](https://git.personal.ksv741.ru/WealthLedger/docs/compare/v0.1.5...v0.1.6) (2026-10-24)
|
|
||||||
|
|
||||||
### Maintenance
|
|
||||||
|
|
||||||
* bump Node to 24.22.1 (WealthLedger/backend[#122](https://git.personal.ksv741.ru/WealthLedger/docs/issues/122)) ([4216eb8](https://git.personal.ksv741.ru/WealthLedger/docs/commit/4216eb815f59b7a284e679ccb1b725438da07882))
|
|
||||||
* **deps:** update non-major dependencies (WealthLedger/docs[#56](https://git.personal.ksv741.ru/WealthLedger/docs/issues/56)) ([f9098d8](https://git.personal.ksv741.ru/WealthLedger/docs/commit/f9098d84098467e41143bad5044085d6329099d9))
|
|
||||||
|
|
||||||
## [0.1.5](https://git.personal.ksv741.ru/WealthLedger/docs/compare/v0.1.4...v0.1.5) (2026-10-18)
|
## [0.1.5](https://git.personal.ksv741.ru/WealthLedger/docs/compare/v0.1.4...v0.1.5) (2026-10-18)
|
||||||
|
|
||||||
### Documentation
|
### Documentation
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ WealthLedger помогает частному инвестору понимат
|
|||||||
| [Аутентификация](domains/authentication/overview.md) | Регистрация, вход, восстановление и завершение сессии |
|
| [Аутентификация](domains/authentication/overview.md) | Регистрация, вход, восстановление и завершение сессии |
|
||||||
| [Счета](domains/accounts/overview.md) | Доступные счета, сводки и состояния каждого счёта |
|
| [Счета](domains/accounts/overview.md) | Доступные счета, сводки и состояния каждого счёта |
|
||||||
| [Банковские карты](domains/cards/overview.md) | Ручные остатки, операции, категории, возвраты, месячные сводки и исправления |
|
| [Банковские карты](domains/cards/overview.md) | Ручные остатки, операции, категории, возвраты, месячные сводки и исправления |
|
||||||
| [Портфель](domains/portfolio/overview.md) | Позиции, остатки, суммы, структура, [концентрация](domains/portfolio/concentration.md) и свежесть |
|
| [Портфель](domains/portfolio/overview.md) | Позиции, остатки, суммы, структура и свежесть |
|
||||||
| [Все счета](domains/portfolio/all-accounts.md) | Общий портфель, происхождение строк и сводные разделы |
|
| [Все счета](domains/portfolio/all-accounts.md) | Общий портфель, происхождение строк и сводные разделы |
|
||||||
| [Операции](domains/operations/overview.md) | Исполненные операции, фильтры и пагинация |
|
| [Операции](domains/operations/overview.md) | Исполненные операции, фильтры и пагинация |
|
||||||
| [Доход](domains/income/overview.md) | Полученные купоны и дивиденды, периоды и состав расчёта |
|
| [Доход](domains/income/overview.md) | Полученные купоны и дивиденды, периоды и состав расчёта |
|
||||||
|
|||||||
@@ -2,10 +2,7 @@
|
|||||||
|
|
||||||
**Status:** Accepted. Заменяет request-driven, manual-refresh и
|
**Status:** Accepted. Заменяет request-driven, manual-refresh и
|
||||||
no-periodic-walk части [ADR 017](017-local-tbank-reads-and-background-sync.md)
|
no-periodic-walk части [ADR 017](017-local-tbank-reads-and-background-sync.md)
|
||||||
и дополняет [ADR 018](018-minimal-runtime-coordination.md). Правило «справочные
|
и дополняет [ADR 018](018-minimal-runtime-coordination.md).
|
||||||
сведения запрашиваются онлайн» дополнено исключением для сектора и бренда
|
|
||||||
актива позиции — [ADR
|
|
||||||
022](022-stored-instrument-classification.md).
|
|
||||||
|
|
||||||
## Decision
|
## Decision
|
||||||
|
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
# 022. Хранимая классификация инструментов T-Bank
|
|
||||||
|
|
||||||
**Status:** Accepted. Дополняет [ADR
|
|
||||||
019](019-hourly-reads-and-online-instrument-reference.md) исключением из
|
|
||||||
правила «справочные сведения запрашиваются онлайн». Решение утверждено
|
|
||||||
владельцем в [Issue
|
|
||||||
WealthLedger/main#48](https://git.personal.ksv741.ru/WealthLedger/main/issues/48).
|
|
||||||
|
|
||||||
## Context
|
|
||||||
|
|
||||||
ADR 019 установил, что справочные сведения инструментов (detail, lookup,
|
|
||||||
каталоги) запрашиваются онлайн и не сохраняются как долговременный справочник:
|
|
||||||
«старые справочные строки не являются источником актуальности». Вкладка
|
|
||||||
«Концентрация» требует для каждой позиции её сектора и эмитента — бренда
|
|
||||||
актива по данным T-Bank. Сектор есть только в описаниях отдельных типов
|
|
||||||
инструментов (`share`, `bond`, `etf`), а эмитент — в описании актива по
|
|
||||||
`asset_uid` инструмента; из названия, тикера, ISIN или `logoName` его вывести
|
|
||||||
нельзя. Запрашивать эти поля онлайн при каждом открытии экрана нельзя:
|
|
||||||
ответ Portfolio не ждёт T-Bank, а разрезы должны считаться по уже сохранённому
|
|
||||||
снимку.
|
|
||||||
|
|
||||||
Существующий metadata-кэш (`TbankInstrument`) не подходит: общий ответ
|
|
||||||
`GetInstrumentBy` не содержит `sector`, а его `brand` — данные логотипа,
|
|
||||||
а не `{uid, name}` бренда актива.
|
|
||||||
|
|
||||||
## Decision
|
|
||||||
|
|
||||||
- Сектор и бренд актива позиции хранятся как последнее известное значение в
|
|
||||||
глобальной таблице `TbankInstrumentClassification` (провайдер, ключ
|
|
||||||
инструмента, сектор и время его получения, uid актива и uid/название бренда
|
|
||||||
с временем получения). Данные публичные, без привязки к пользователю или
|
|
||||||
подключению; ограждение по connection revision к ним не применяется, публикация
|
|
||||||
Snapshot ограждается как прежде.
|
|
||||||
- Каждое поле обновляется в часовом обходе при его первой попытке, начавшейся
|
|
||||||
не ранее чем через 24 часа после последнего успешного получения этого поля;
|
|
||||||
пока значение не получено, попытка повторяется в каждом обходе. Сектор и
|
|
||||||
бренд обновляются независимо.
|
|
||||||
- Неуспешное получение не мешает публикации Portfolio Snapshot и не влияет на
|
|
||||||
его свежесть; сохранённое значение остаётся доступным. Отказ token
|
|
||||||
обрабатывается как отказ token при обходе Portfolio. Ответ «инструмент не
|
|
||||||
найден» сохраняет прежнее значение и перезапускает отсчёт 24 часов.
|
|
||||||
- Классификация не входит в `meta.dependencies` Portfolio и не меняет
|
|
||||||
`isStale` и `lastSuccessfulAt`.
|
|
||||||
|
|
||||||
## Consequences
|
|
||||||
|
|
||||||
- Это первый долговременный справочник T-Bank в системе: ADR 019 теряет
|
|
||||||
характер «только онлайн» для этой области и дополняется, а не заменяется.
|
|
||||||
- Разрезы концентрации считаются по снимку без обращений к T-Bank; число
|
|
||||||
вызовов растёт ограниченно — не более одной попытки на поле в сутки на
|
|
||||||
позицию, при первом обходе после выката возможен разовый всплеск, сглаженный
|
|
||||||
общим лимитером и очередью.
|
|
||||||
- Значение может быть устаревшим до 24 часов; это приемлемо для группировки
|
|
||||||
позиций, но классификация не является источником актуальных данных брокера.
|
|
||||||
- Второй потребитель хранимой классификации — условие пересмотра решения
|
|
||||||
(выделение независимого процесса обновления, отдельные сроки).
|
|
||||||
@@ -26,4 +26,3 @@
|
|||||||
- [019 — Часовой обход и онлайн-справочник инструментов](019-hourly-reads-and-online-instrument-reference.md)
|
- [019 — Часовой обход и онлайн-справочник инструментов](019-hourly-reads-and-online-instrument-reference.md)
|
||||||
- [020 — Evidence for hourly sync read boundaries](020-hourly-sync-verification-evidence.md)
|
- [020 — Evidence for hourly sync read boundaries](020-hourly-sync-verification-evidence.md)
|
||||||
- [021 — Тихое чтение и редкие подтверждения](021-quiet-reading-and-rare-confirmations.md)
|
- [021 — Тихое чтение и редкие подтверждения](021-quiet-reading-and-rare-confirmations.md)
|
||||||
- [022 — Хранимая классификация инструментов T-Bank](022-stored-instrument-classification.md)
|
|
||||||
|
|||||||
@@ -141,18 +141,13 @@ membership текущей revision перед каждым финансовым
|
|||||||
|
|
||||||
SQLite хранит полный последний portfolio, операции и их подтверждённые
|
SQLite хранит полный последний portfolio, операции и их подтверждённые
|
||||||
диапазоны, private прогнозы, сохранённые точки истории оценки, общие
|
диапазоны, private прогнозы, сохранённые точки истории оценки, общие
|
||||||
instrument/market sources, классификацию инструментов (сектор и бренд актива
|
instrument/market sources и intent/staging.
|
||||||
как последнее известное значение с временем каждого получения,
|
|
||||||
`TbankInstrumentClassification`) и intent/staging.
|
|
||||||
Нормализованные финансовые значения сохраняются decimal-строками. Полнота
|
Нормализованные финансовые значения сохраняются decimal-строками. Полнота
|
||||||
отделена от свежести и пагинации. Ответ не ждёт внешних RPC; обновлением
|
отделена от свежести и пагинации. Ответ не ждёт внешних RPC; обновлением
|
||||||
личных данных владеет часовой обход в том же backend process через
|
личных данных владеет часовой обход в том же backend process через
|
||||||
существующий лимитер, недостающие общие источники он же ставит в фоновую
|
существующий лимитер, недостающие общие источники он же ставит в фоновую
|
||||||
очередь. На startup обход начинает следующую попытку по обычному часовому
|
очередь. На startup обход начинает следующую попытку по обычному часовому
|
||||||
сроку; после нового подключения первая попытка начинается сразу.
|
сроку; после нового подключения первая попытка начинается сразу.
|
||||||
Классификация — публичные данные без привязки к пользователю и подключению;
|
|
||||||
её поля обновляются в том же обходе не чаще раза в сутки
|
|
||||||
([ADR 022](../adr/022-stored-instrument-classification.md)).
|
|
||||||
Подробности — [модель свежести](cross-cutting/data-freshness.md).
|
Подробности — [модель свежести](cross-cutting/data-freshness.md).
|
||||||
|
|
||||||
PUT подключения сначала проверяет token у T-Bank, затем одной транзакцией
|
PUT подключения сначала проверяет token у T-Bank, затем одной транзакцией
|
||||||
|
|||||||
@@ -8,12 +8,8 @@ T-Bank. Нормальным владельцем обновления служ
|
|||||||
простоя выполняется не более одна актуальная попытка, а перекрывающийся срок
|
простоя выполняется не более одна актуальная попытка, а перекрывающийся срок
|
||||||
пропускается, не ставится в очередь. Общие справочные данные инструментов
|
пропускается, не ставится в очередь. Общие справочные данные инструментов
|
||||||
запрашиваются онлайн, когда это требуется карточке; финансовый HTTP-ответ не
|
запрашиваются онлайн, когда это требуется карточке; финансовый HTTP-ответ не
|
||||||
ждёт T-Bank. Единственное исключение — сектор и бренд актива позиции, которые
|
ждёт T-Bank. Модель принята в
|
||||||
хранятся как последнее известное значение с обновлением не чаще раза в сутки;
|
[ADR 019](../../adr/019-hourly-reads-and-online-instrument-reference.md).
|
||||||
свежесть и полнота Portfolio от них не зависят. Модель принята в
|
|
||||||
[ADR 019](../../adr/019-hourly-reads-and-online-instrument-reference.md),
|
|
||||||
исключение — в
|
|
||||||
[ADR 022](../../adr/022-stored-instrument-classification.md).
|
|
||||||
|
|
||||||
## Клиентский и серверный снимки
|
## Клиентский и серверный снимки
|
||||||
|
|
||||||
@@ -22,10 +18,7 @@ T-Bank. Нормальным владельцем обновления служ
|
|||||||
HTTP-перечитывания в той же границе доступа. Это не серверный fallback и не
|
HTTP-перечитывания в той же границе доступа. Это не серверный fallback и не
|
||||||
состояние часового обхода. SQLite независимо от браузера хранит membership,
|
состояние часового обхода. SQLite независимо от браузера хранит membership,
|
||||||
последний полный portfolio, исполненные операции, прогнозы, общие сведения об
|
последний полный portfolio, исполненные операции, прогнозы, общие сведения об
|
||||||
инструментах и классификацию инструментов (сектор и бренд актива как
|
инструментах, котировки, свечи и календари.
|
||||||
последнее известное значение, [ADR
|
|
||||||
022](../../adr/022-stored-instrument-classification.md)), котировки, свечи и
|
|
||||||
календари.
|
|
||||||
|
|
||||||
[Полнота периода](../../glossary.md#полнота-истории-счёта) и свежесть различаются.
|
[Полнота периода](../../glossary.md#полнота-истории-счёта) и свежесть различаются.
|
||||||
Успешно проверенный пустой результат полон и доступен; последняя страница
|
Успешно проверенный пустой результат полон и доступен; последняя страница
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
- Только точные типы купона и дивиденда источника формируют результат. Суммы остаются точными десятичными строками в исходной валюте; отрицательные корректировки сохраняют знак. Налоги, комиссии, сделки, переводы, погашения и переводы дивидендов не входят в доход.
|
- Только точные типы купона и дивиденда источника формируют результат. Суммы остаются точными десятичными строками в исходной валюте; отрицательные корректировки сохраняют знак. Налоги, комиссии, сделки, переводы, погашения и переводы дивидендов не входят в доход.
|
||||||
- Итоги, временные интервалы и разбиение по инструментам не смешивают валюты и не создают общий конвертированный итог. Система не загружает другие периоды ради сравнения полученного дохода с выбранным.
|
- Итоги, временные интервалы и разбиение по инструментам не смешивают валюты и не создают общий конвертированный итог. Система не загружает другие периоды ради сравнения полученного дохода с выбранным.
|
||||||
- Временные интервалы по-прежнему приходят с backend: дни для 1–45 дней, недели для 46–180 и месяцы для более длинного периода, включая пустые интервалы. Страница дохода не строит из них график или текстовую динамику; ответ API не меняется.
|
- Временные интервалы по-прежнему приходят с backend: дни для 1–45 дней, недели для 46–180 и месяцы для более длинного периода, включая пустые интервалы. Страница дохода не строит из них график или текстовую динамику; ответ API не меняется.
|
||||||
- Раздел «Выплаты» показывает карточки выплат в исходном порядке `entries`. В отдельном счёте каждая выплата — отдельная карточка. В режиме «Все счета» выплаты одного инструмента, дня и точного типа образуют группу, если их две и более ([правила группировки](../operations/overview.md#группировка-в-режиме-все-счета)). Группа стоит на месте первой выплаты; каждая строка счёта показывает название счёта и свою сумму со знаком. Визуальный итог группы — точная сумма по валютам по показанным выплатам; он скрыт, если полнота периода не `complete`, или у выплаты нет суммы, или сумма равна нулю. Это клиентский расчёт и не заменяет серверные итоги аналитики дохода, которые по-прежнему приходят из ответа API и не пересчитываются. Описание, дата, доступные идентификаторы инструмента и сумма со знаком видны в каждой выплате. Дополнительный запрос за составом не нужен.
|
- Раздел «Выплаты» показывает единый список карточек выплат в исходном порядке `entries`: одна карточка на каждую выплату. Внешних групп по инструментам или валютам, итогов и количества выплат инструмента нет. Описание, дата, доступные идентификаторы инструмента и сумма со знаком видны в каждой карточке; валюты разделены в итогах. Дополнительный запрос за составом не нужен.
|
||||||
|
|
||||||
## Полнота и принадлежность выплат
|
## Полнота и принадлежность выплат
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ Backend обеспечивает принадлежность выплат, ва
|
|||||||
доверяет типизированному contract, не восстанавливает формулу идентификации
|
доверяет типизированному contract, не восстанавливает формулу идентификации
|
||||||
и не выполняет второй consistency validator. Полностью пустой ответ допустим.
|
и не выполняет второй consistency validator. Полностью пустой ответ допустим.
|
||||||
Состав и исходный серверный порядок записей и знак сумм
|
Состав и исходный серверный порядок записей и знак сумм
|
||||||
сохраняются; серверные денежные итоги frontend не пересчитывает (визуальный итог группы в режиме «Все счета» отдельный, см. выше). Стабильный ID в пределах подключения и счёта определяет одну операцию:
|
сохраняются, frontend не пересчитывает денежные итоги. Стабильный ID в пределах подключения и счёта определяет одну операцию:
|
||||||
повторная сверка обновляет её без двойного учёта. Одинаковые ID разных счетов
|
повторная сверка обновляет её без двойного учёта. Одинаковые ID разных счетов
|
||||||
остаются разными выплатами. Изменение источника логотипа позволяет заново
|
остаются разными выплатами. Изменение источника логотипа позволяет заново
|
||||||
показать изображение после буквенной заглушки.
|
показать изображение после буквенной заглушки.
|
||||||
|
|||||||
@@ -71,16 +71,7 @@
|
|||||||
без замены периода и без запуска личной работы.
|
без замены периода и без запуска личной работы.
|
||||||
Фильтрация на сервере предшествует сортировке и вычислению
|
Фильтрация на сервере предшествует сортировке и вычислению
|
||||||
`incomeTotalsByCurrency`, включающего только купоны и дивиденды.
|
`incomeTotalsByCurrency`, включающего только купоны и дивиденды.
|
||||||
Итоги остаются в ответе API; полный экран показывает список без общего итога списка.
|
Итоги остаются в ответе API; полный экран показывает список без общего итога.
|
||||||
|
|
||||||
В режиме «Все счета» события одного инструмента, даты, точного типа и `dateKind` образуют
|
|
||||||
группу, если их две и более, в том числе одного счёта. Ключ дополнительно включает `dateKind`,
|
|
||||||
поэтому дата реестра дивиденда и иная дата того же инструмента не объединяются. Группа стоит на месте первого
|
|
||||||
события. Полный список группирует все полученные события; превью обзора сначала берёт пять
|
|
||||||
событий и группирует только их. Каждая строка счёта остаётся отдельной и показывает название
|
|
||||||
счёта и свою прогнозную сумму. Визуальный итог группы — точная сумма по валютам; он показывается
|
|
||||||
только если полнота прогноза `complete` и у каждого события группы известна прогнозная сумма.
|
|
||||||
Иначе итог скрыт, а строки остаются. Этот итог не равен итогам ответа API и не относится к полученному доходу.
|
|
||||||
|
|
||||||
## Получение и отказы
|
## Получение и отказы
|
||||||
|
|
||||||
|
|||||||
@@ -13,27 +13,9 @@
|
|||||||
Исполненная операция содержит тип события, его категорию, описание,
|
Исполненная операция содержит тип события, его категорию, описание,
|
||||||
момент совершения, доступные сведения об инструменте и денежное движение.
|
момент совершения, доступные сведения об инструменте и денежное движение.
|
||||||
Запросы отменённых или ожидающих исполнения поручений не образуют этот журнал.
|
Запросы отменённых или ожидающих исполнения поручений не образуют этот журнал.
|
||||||
Суммы остаются точными десятичными строками в исходной валюте. Frontend
|
Суммы остаются точными десятичными строками в исходной валюте; frontend
|
||||||
форматирует их и считает визуальный итог группы по показанным записям
|
только форматирует их. Положительное и отрицательное движение сохраняют
|
||||||
(см. [группировку](#группировка-в-режиме-все-счета)). Положительное и отрицательное
|
знак. Отсутствие `payment` означает «Без движения денег», а не нулевую сумму.
|
||||||
движение сохраняют знак. Отсутствие `payment` означает «Без движения денег», а не нулевую сумму.
|
|
||||||
|
|
||||||
## Группировка в режиме «Все счета»
|
|
||||||
|
|
||||||
Только в режиме `all` записи журнала и превью обзора, которые относятся к одному
|
|
||||||
дню экрана, одному инструменту и точному типу операции, объединяются в группу.
|
|
||||||
Ключом служат день, `instrumentUid` (иначе `figi`) и тип; группа образуется при
|
|
||||||
двух и более записях, в том числе одного счёта. Группа стоит на месте первой записи.
|
|
||||||
Каждая запись остаётся отдельной строкой с названием счёта простым текстом и своей суммой.
|
|
||||||
Одиночный счёт не группируется.
|
|
||||||
|
|
||||||
Группировка выполняется после лимита: превью обзора сначала берёт пять записей,
|
|
||||||
затем группирует только их. Полный журнал группирует страницу, уже загруженную
|
|
||||||
курсором; группы не переносятся между страницами. Курсор и порядок записей не меняются.
|
|
||||||
|
|
||||||
Итог группы — точная сумма по каждой валюте, без конвертации. Он показывается только
|
|
||||||
если полнота журнала `complete`, у каждой записи группы есть `payment`, и ни одна сумма
|
|
||||||
не равна нулю. Иначе итог скрыт, а строки счетов остаются.
|
|
||||||
|
|
||||||
Категории объединяют разные события для фильтрации: сделка (`trade`),
|
Категории объединяют разные события для фильтрации: сделка (`trade`),
|
||||||
доход (`income`), налог (`tax`), комиссия (`fee`), перевод (`transfer`)
|
доход (`income`), налог (`tax`), комиссия (`fee`), перевод (`transfer`)
|
||||||
|
|||||||
@@ -81,12 +81,6 @@ Backend публикует статические маршруты под `/api/
|
|||||||
применённые фильтры. Coverage/status без изменения строк не ломают cursor.
|
применённые фильтры. Coverage/status без изменения строк не ломают cursor.
|
||||||
Продолжение не зависит от RAM-кэша или перезапуска.
|
Продолжение не зависит от RAM-кэша или перезапуска.
|
||||||
|
|
||||||
Визуальная группировка строк одного инструмента в общих списках выполняется только
|
|
||||||
в пределах уже полученного списка: в журнале — на загруженной странице, без переноса группы
|
|
||||||
на следующую; в полном списке будущих событий и выплатах дохода — по всем полученным строкам
|
|
||||||
периода. Группировка не меняет порядок, cursor или ответ API. Протокол курсора прежний.
|
|
||||||
Правила группировки — в [журнале](../operations/overview.md#группировка-в-режиме-все-счета).
|
|
||||||
|
|
||||||
Повторная сверка полного показанного периода публикует все счета и интервалы
|
Повторная сверка полного показанного периода публикует все счета и интервалы
|
||||||
одной транзакцией; успешное первое окно не смешивается с прежними остальными.
|
одной транзакцией; успешное первое окно не смешивается с прежними остальными.
|
||||||
Подробнее — [журнал](../operations/overview.md#получение-и-полнота).
|
Подробнее — [журнал](../operations/overview.md#получение-и-полнота).
|
||||||
|
|||||||
@@ -1,81 +0,0 @@
|
|||||||
# Концентрация портфеля
|
|
||||||
|
|
||||||
Вкладка «Концентрация» на странице счёта `/accounts/:accountId` показывает,
|
|
||||||
какие акции, облигации, секторы и эмитенты занимают наибольшую часть текущей
|
|
||||||
оценки Portfolio. Она отвечает на вопрос «где сконцентрированы деньги»,
|
|
||||||
который не решают карточки позиций и [структура
|
|
||||||
активов](overview.md#как-читать-экран). Точный смысл полей и долей — в
|
|
||||||
[справочнике данных](data-reference.md).
|
|
||||||
|
|
||||||
## Вкладка и разрезы
|
|
||||||
|
|
||||||
Вкладка есть только у отдельного счёта: в режиме [«Все счета»](all-accounts.md)
|
|
||||||
её нет. Появление вкладки не меняет вкладку, открытую по умолчанию («Позиции»),
|
|
||||||
и содержание остальных вкладок. Пока Portfolio загружается, при его ошибке или
|
|
||||||
штатном пустом составе вкладки нет; при Portfolio хотя бы с одной позицией или
|
|
||||||
денежным остатком вкладка показывается.
|
|
||||||
|
|
||||||
Вкладка содержит четыре разреза и показывает один из них одновременно:
|
|
||||||
|
|
||||||
| Разрез | Что ранжирует | Типы позиций |
|
|
||||||
| --- | --- | --- |
|
|
||||||
| «Акции» | Пять крупнейших позиций акций | `STOCK` |
|
|
||||||
| «Облигации» | Пять крупнейших позиций облигаций | `BOND` |
|
|
||||||
| «Секторы» | Пять крупнейших секторов по данным T-Bank | `STOCK`, `BOND`, `FUND` |
|
|
||||||
| «Эмитенты» | Пять крупнейших эмитентов (брендов актива) | `STOCK`, `BOND` |
|
|
||||||
|
|
||||||
Фонды участвуют только в разрезе «Секторы»: их эмитент — управляющая компания,
|
|
||||||
а не компания внутри фонда. Позиции типов `CURRENCY`, `FUTURE`, `OPTION`,
|
|
||||||
`STRUCTURED_NOTE`, `DIGITAL_FINANCIAL_ASSET` и `OTHER` во вкладку не входят.
|
|
||||||
|
|
||||||
Позиции без сектора образуют явную группу «Сектор не указан», без бренда —
|
|
||||||
«Эмитент не указан»; обе группы показываются с видимой долей. Государственные
|
|
||||||
облигации определяются значением сектора T-Bank `government` с подписью
|
|
||||||
«Государственный сектор»; других собственных классификаций WealthLedger
|
|
||||||
не вводит. Название элемента в разрезе эмитентов — название бренда; если у
|
|
||||||
одного бренда разные названия, показывается название позиции с наибольшей
|
|
||||||
стоимостью.
|
|
||||||
|
|
||||||
## Топ-5 и «Прочее»
|
|
||||||
|
|
||||||
В каждом разрезе показаны пять крупнейших элементов по текущей денежной оценке,
|
|
||||||
каждый с суммой и долей. Рядом показан суммарный показатель «Топ-5 · N %».
|
|
||||||
Если в разрезе семь и более элементов, все остальные объединены в одну строку
|
|
||||||
«Прочее» с числом элементов, суммой и долей. При шести и меньшем числе
|
|
||||||
элементов каждый показан своей строкой. По нажатию на «Прочее» раскрывается
|
|
||||||
полный перечень остальных элементов, каждый со своей суммой и долей; топ-5
|
|
||||||
и диаграмма при этом не меняются.
|
|
||||||
|
|
||||||
Доли считаются от суммы стоимостей позиций разреза в выбранной валюте и
|
|
||||||
в сумме дают ровно 100 %; округление — до десятой доли процента, очень малые
|
|
||||||
доли показываются как «< 0,1 %». Отрицательные и нулевые стоимости, а также
|
|
||||||
позиции без оценки в разрез не входят. Конвертации валют нет: каждая позиция
|
|
||||||
входит только в валюту своей оценки.
|
|
||||||
|
|
||||||
## Валюта
|
|
||||||
|
|
||||||
У вкладки свой список валют — валюты оценок позиций акций, облигаций и фондов,
|
|
||||||
отсортированные по ISO-коду, — и свой выбор, независимый от «Структуры
|
|
||||||
портфеля». По умолчанию выбрана первая валюта списка. При одной валюте
|
|
||||||
переключатель не показывается. Общего итога по нескольким валютам нет.
|
|
||||||
Выбранные разрез и валюта сохраняются, пока пользователь остаётся на странице
|
|
||||||
счёта, включая переключение её вкладок, и сбрасываются при новом заходе и при
|
|
||||||
смене счёта.
|
|
||||||
|
|
||||||
## Диаграмма и неполные данные
|
|
||||||
|
|
||||||
Рядом с перечнем показана кольцевая диаграмма, согласованная с перечнем;
|
|
||||||
информация передаётся не только цветом, есть текстовый эквивалент. Если ответ
|
|
||||||
отмечен как неполный (`completeness: "incomplete"` — часть позиций не имеет
|
|
||||||
оценки), над разрезом появляется предупреждение «Данные неполные», а под
|
|
||||||
списком — сноска «Не учтено позиций: N» с числом позиций, не вошедших в разрез.
|
|
||||||
Пустой разрез (нет позиций с положительной оценкой в выбранной валюте)
|
|
||||||
показывает текстовое состояние вместо диаграммы.
|
|
||||||
|
|
||||||
## Откуда берутся сектор и эмитент
|
|
||||||
|
|
||||||
Сектор и эмитент — часть данных Portfolio: их получает backend в часовом
|
|
||||||
обходе и сохраняет в снимке вместе с остальными полями позиций
|
|
||||||
([поток загрузки](flows/portfolio-loading.md#обновление-сектора-и-эмитента),
|
|
||||||
[интеграция T-Bank](../../integrations/tbank.md)). Вкладка считается по уже
|
|
||||||
загруженному снимку и не обращается к T-Bank.
|
|
||||||
@@ -33,8 +33,6 @@
|
|||||||
| `totalsByCurrency` | Стоимости позиций + доступные деньги той же валюты | Не включает невычислимую стоимость; не обещает полную оценку портфеля |
|
| `totalsByCurrency` | Стоимости позиций + доступные деньги той же валюты | Не включает невычислимую стоимость; не обещает полную оценку портфеля |
|
||||||
| `lastSuccessfulAt` | Время формирования успешного снимка, UTC | Не является временем каждой котировки; запасной снимок сохраняет исходное время |
|
| `lastSuccessfulAt` | Время формирования успешного снимка, UTC | Не является временем каждой котировки; запасной снимок сохраняет исходное время |
|
||||||
| `isStale` | Истёк часовой срок свежести сохранённого portfolio source | Не описывает состояние клиентского кэша или ошибку фонового запроса |
|
| `isStale` | Истёк часовой срок свежести сохранённого portfolio source | Не описывает состояние клиентского кэша или ошибку фонового запроса |
|
||||||
| `sector` | Сектор инструмента в том виде, как его определяет T-Bank, с обрезанными пробелами | Только для позиций `STOCK`, `BOND` и `FUND`; значение из одних пробел считается отсутствующим. Во всех остальных случаях — `null` |
|
|
||||||
| `issuer` | Бренд актива инструмента по данным T-Bank: `{ id, name }` | Только для позиций `STOCK`, `BOND` и `FUND`, когда у актива известны uid и название бренда. Во всех остальных случаях — `null`. Не влияет на количество, стоимость и свежесть снимка; используется вкладкой [«Концентрация»](concentration.md) |
|
|
||||||
|
|
||||||
Ненулевые денежные остатки одной валюты суммируются. Позиции одинаковых
|
Ненулевые денежные остатки одной валюты суммируются. Позиции одинаковых
|
||||||
инструментов в ответе отдельного счёта не объединяются; визуальная группировка
|
инструментов в ответе отдельного счёта не объединяются; визуальная группировка
|
||||||
@@ -60,8 +58,6 @@ ISIN, тикер и `logoName` могут быть `null`. `logoName` — имя
|
|||||||
или метаданных не меняет количество, суммы и свежесть снимка и не скрывает
|
или метаданных не меняет количество, суммы и свежесть снимка и не скрывает
|
||||||
финансовые данные. Metadata обновляется независимо; отсутствие имени не задерживает выдачу
|
финансовые данные. Metadata обновляется независимо; отсутствие имени не задерживает выдачу
|
||||||
финансового снимка и оставляет доступный идентификатор.
|
финансового снимка и оставляет доступный идентификатор.
|
||||||
`logoName` не равен эмитенту из вкладки «Концентрация»: он берётся из metadata
|
|
||||||
инструмента, а эмитент — из [классификации инструмента](flows/portfolio-loading.md#обновление-сектора-и-эмитента).
|
|
||||||
|
|
||||||
## Структура и доли
|
## Структура и доли
|
||||||
|
|
||||||
|
|||||||
@@ -11,28 +11,9 @@
|
|||||||
они не ждут и не вызывают T-Bank и не предлагают ручную синхронизацию. Часовой
|
они не ждут и не вызывают T-Bank и не предлагают ручную синхронизацию. Часовой
|
||||||
обход текущего подключения обновляет Portfolio независимо от экрана. Для нового
|
обход текущего подключения обновляет Portfolio независимо от экрана. Для нового
|
||||||
полного snapshot ему нужны оба финансовых ответа `GetPortfolio` и
|
полного snapshot ему нужны оба финансовых ответа `GetPortfolio` и
|
||||||
`GetPositions`; суммы и позиции публикуются вместе. Metadata инструмента и
|
`GetPositions`; суммы и позиции публикуются вместе. Metadata инструмента
|
||||||
классификация (сектор и эмитент) дополняют представление независимо,
|
дополняет представление независимо, с доступным UID/FIGI вместо имени до её
|
||||||
с доступным UID/FIGI вместо имени до их загрузки.
|
онлайн-загрузки.
|
||||||
|
|
||||||
## Обновление сектора и эмитента
|
|
||||||
|
|
||||||
Часовой обход также обновляет сектор и эмитента позиций типов `share`, `bond`
|
|
||||||
и `etf`. Значения хранятся как последнее известное ([ADR
|
|
||||||
022](../../../adr/022-stored-instrument-classification.md)): сектор — как его
|
|
||||||
определяет T-Bank, эмитент — бренд актива (`uid` и `name`). Каждое поле
|
|
||||||
обновляется при первом обходе, начавшемся не ранее чем через 24 часа после его
|
|
||||||
последнего успешного получения; пока значение не получено, попытка повторяется
|
|
||||||
в каждом обходе. Сектор и эмитент обновляются независимо.
|
|
||||||
|
|
||||||
Неуспешное получение не мешает публикации snapshot и не меняет
|
|
||||||
`lastSuccessfulAt` и `isStale`; сохранённое значение остаётся доступным.
|
|
||||||
Исключение — отказ token: он обрабатывается так же, как отказ token при
|
|
||||||
обходе Portfolio. Инструмент ищется по UID, затем по FIGI; ответ «не найдено»
|
|
||||||
сохраняет прежнее значение и отсчёт 24 часов начинается заново. Позиции без
|
|
||||||
полученных значений участвуют в разрезах вкладки
|
|
||||||
[«Концентрация»](../concentration.md) как «Сектор не указан» и
|
|
||||||
«Эмитент не указан».
|
|
||||||
|
|
||||||
Открытый экран выполняет локальное перечитывание не чаще одного раза в
|
Открытый экран выполняет локальное перечитывание не чаще одного раза в
|
||||||
30 минут; retry также повторяет только HTTP GET. `data: null` означает, что
|
30 минут; retry также повторяет только HTTP GET. `data: null` означает, что
|
||||||
|
|||||||
@@ -64,10 +64,6 @@ Backend получает данные через серверную
|
|||||||
без логотипа и с подписью результата. Отсутствующие показатели скрываются,
|
без логотипа и с подписью результата. Отсутствующие показатели скрываются,
|
||||||
а не подменяются нулём или заглушкой.
|
а не подменяются нулём или заглушкой.
|
||||||
|
|
||||||
Рядом с вкладкой «Позиции» на странице отдельного счёта есть вкладка
|
|
||||||
[«Концентрация»](concentration.md): она показывает, где сконцентрированы
|
|
||||||
деньги — крупнейшие бумаги, секторы и эмитенты. В режиме «Все счета» её нет.
|
|
||||||
|
|
||||||
Существует расхождение: [согласованная спецификация представления позиций](https://git.personal.ksv741.ru/WealthLedger/specs/src/commit/9e227a563dda67620f0ad78228aa8a4c18bf35a0/openspec/specs/portfolio-view/spec.md#requirement-представление-карточек-позиций-на-клиенте)
|
Существует расхождение: [согласованная спецификация представления позиций](https://git.personal.ksv741.ru/WealthLedger/specs/src/commit/9e227a563dda67620f0ad78228aa8a4c18bf35a0/openspec/specs/portfolio-view/spec.md#requirement-представление-карточек-позиций-на-клиенте)
|
||||||
требует доступности всех иных типов в отдельной секции, а текущие frontend
|
требует доступности всех иных типов в отдельной секции, а текущие frontend
|
||||||
и его проверка исключают `CURRENCY` только из списка карточек. Такие позиции
|
и его проверка исключают `CURRENCY` только из списка карточек. Такие позиции
|
||||||
|
|||||||
-40
@@ -119,46 +119,6 @@ Instrument. Она остаётся в `positions` и не объединяет
|
|||||||
|
|
||||||
_Не использовать_: денежный остаток, cash balance.
|
_Не использовать_: денежный остаток, cash balance.
|
||||||
|
|
||||||
## Концентрация
|
|
||||||
|
|
||||||
Вкладка страницы одного Brokerage Account, показывающая, какие акции,
|
|
||||||
облигации, секторы и эмитенты занимают наибольшую часть текущей оценки
|
|
||||||
Portfolio, без валютной конвертации. Отличается от [структуры
|
|
||||||
портфеля](domains/portfolio/data-reference.md#структура-и-доли): в её разрезах
|
|
||||||
деньги не входят в знаменатель долей.
|
|
||||||
|
|
||||||
_Не использовать_: структура портфеля, диверсификация.
|
|
||||||
|
|
||||||
## Разрез
|
|
||||||
|
|
||||||
Одна из четырёх группировок вкладки «Концентрация»: «Акции», «Облигации»,
|
|
||||||
«Секторы», «Эмитенты». Элемент разреза — единица ранжирования; сектор
|
|
||||||
агрегирует позиции `STOCK`, `BOND` и `FUND`, эмитенты — `STOCK` и `BOND`.
|
|
||||||
|
|
||||||
_Не использовать_: фильтр, категория структуры.
|
|
||||||
|
|
||||||
## Сектор
|
|
||||||
|
|
||||||
Значение сектора инструмента в том виде, как его определяет T-Bank, без
|
|
||||||
перекодирования и собственной классификации WealthLedger. Заполняется для
|
|
||||||
позиций `STOCK`, `BOND` и `FUND`; государственные облигации определяются
|
|
||||||
значением `government` с подписью «Государственный сектор». Позиция без
|
|
||||||
сектора попадает в явную группу «Сектор не указан».
|
|
||||||
|
|
||||||
_Не использовать_: отрасль, собственная классификация приложения.
|
|
||||||
|
|
||||||
## Эмитент
|
|
||||||
|
|
||||||
В разрезе «Эмитенты» вкладки «Концентрация» — бренд актива по данным T-Bank,
|
|
||||||
объединяющий акции и облигации одной компании; фонды в разрез не входят.
|
|
||||||
Название эмитента — название бренда. **Оговорка:** в этом разрезе слово
|
|
||||||
означает бренд актива T-Bank, а не юридического эмитента ценной бумаги;
|
|
||||||
[рейтинг выпуска](integrations/nkr.md) не подставляется вместо рейтинга
|
|
||||||
эмитента и наоборот. Позиция без бренда попадает в явную группу
|
|
||||||
«Эмитент не указан».
|
|
||||||
|
|
||||||
_Не использовать_: юридический эмитент, эмитент рейтинга.
|
|
||||||
|
|
||||||
## Instrument
|
## Instrument
|
||||||
|
|
||||||
Ценная бумага или иной торгуемый актив T-Bank, на который ссылается Portfolio
|
Ценная бумага или иной торгуемый актив T-Bank, на который ссылается Portfolio
|
||||||
|
|||||||
+1
-12
@@ -14,17 +14,8 @@ WealthLedger обращается к Invest API на сервере по gRPC ov
|
|||||||
| Портфель и денежные остатки | Показать текущий состав инвестиций и итоги по исходным валютам |
|
| Портфель и денежные остатки | Показать текущий состав инвестиций и итоги по исходным валютам |
|
||||||
| Исполненные операции | Построить журнал и выделить полученные купоны и дивиденды |
|
| Исполненные операции | Построить журнал и выделить полученные купоны и дивиденды |
|
||||||
| Инструменты и рынок | Имена, идентификаторы, цены, свечи, параметры акций и облигаций |
|
| Инструменты и рынок | Имена, идентификаторы, цены, свечи, параметры акций и облигаций |
|
||||||
| Классификация инструментов | Сектор акций, облигаций и фондов и бренд актива для разрезов [концентрации](../domains/portfolio/concentration.md) |
|
|
||||||
| Купоны и дивиденды | Построить будущие события по текущим позициям и календарь инструмента |
|
| Купоны и дивиденды | Построить будущие события по текущим позициям и календарь инструмента |
|
||||||
|
|
||||||
Сектор получается из описаний инструмента (отдельные описания для акций,
|
|
||||||
облигаций и фондов, поиск по UID, затем по FIGI); эмитент — из описания актива
|
|
||||||
по `asset_uid` инструмента: его uid и название бренда. Эмитент не выводится из
|
|
||||||
названия, тикера или ISIN. Классификация хранится как последнее известное
|
|
||||||
значение с обновлением не чаще раза в сутки ([ADR
|
|
||||||
022](../adr/022-stored-instrument-classification.md)); все вызовы проходят
|
|
||||||
через общий лимитер запросов T-Bank.
|
|
||||||
|
|
||||||
T-Bank определяет исходные данные и права token. Backend проверяет локальную
|
T-Bank определяет исходные данные и права token. Backend проверяет локальную
|
||||||
сессию, выбирает подключение её пользователя и устанавливает доступ к счёту.
|
сессию, выбирает подключение её пользователя и устанавливает доступ к счёту.
|
||||||
Наличие идентификатора счёта в URL этого доступа не подтверждает.
|
Наличие идентификатора счёта в URL этого доступа не подтверждает.
|
||||||
@@ -50,9 +41,7 @@ Backend передаёт имя файла `logoName` из метаданных
|
|||||||
|
|
||||||
Логотипы используются в портфеле, операциях, будущих событиях, поиске и
|
Логотипы используются в портфеле, операциях, будущих событиях, поиске и
|
||||||
страницах инструментов. Отсутствующее имя или ошибка изображения оставляют
|
страницах инструментов. Отсутствующее имя или ошибка изображения оставляют
|
||||||
буквенную заглушку и не меняют финансовые значения. Логотип — это metadata
|
буквенную заглушку и не меняют финансовые значения. Правило построения URL
|
||||||
инструмента; он не равен эмитенту из [концентрации](../domains/portfolio/concentration.md),
|
|
||||||
который берётся из бренда актива. Правило построения URL
|
|
||||||
принадлежит [форматированию frontend](https://git.personal.ksv741.ru/WealthLedger/frontend/src/commit/9f7e342333b80bfacfd5bc394a2dcd0613d33ff3/src/shared/lib/display.ts).
|
принадлежит [форматированию frontend](https://git.personal.ksv741.ru/WealthLedger/frontend/src/commit/9f7e342333b80bfacfd5bc394a2dcd0613d33ff3/src/shared/lib/display.ts).
|
||||||
|
|
||||||
## Проверка и сохранение подключения
|
## Проверка и сохранение подключения
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ WealthLedger — локальное приложение для частного
|
|||||||
| Найти свой инвестиционный счёт | [Список счетов](domains/accounts/overview.md), их типы и доступные сводки |
|
| Найти свой инвестиционный счёт | [Список счетов](domains/accounts/overview.md), их типы и доступные сводки |
|
||||||
| Вести банковские карты | [Ручной учёт](domains/cards/overview.md): независимые балансы, расходы, пополнения, переводы, возвраты и месячные сводки |
|
| Вести банковские карты | [Ручной учёт](domains/cards/overview.md): независимые балансы, расходы, пополнения, переводы, возвраты и месячные сводки |
|
||||||
| Понять текущий состав инвестиций | [Портфель](domains/portfolio/overview.md): позиции, денежные остатки и итоги по валютам |
|
| Понять текущий состав инвестиций | [Портфель](domains/portfolio/overview.md): позиции, денежные остатки и итоги по валютам |
|
||||||
| Увидеть, где сконцентрированы деньги | [Концентрация](domains/portfolio/concentration.md): крупнейшие бумаги, секторы и эмитенты счёта |
|
|
||||||
| Разобрать уже совершённые движения | [Журнал операций](domains/operations/overview.md): исполненные операции с фильтрами и последовательной загрузкой истории |
|
| Разобрать уже совершённые движения | [Журнал операций](domains/operations/overview.md): исполненные операции с фильтрами и последовательной загрузкой истории |
|
||||||
| Посчитать полученные выплаты | [Пассивный доход](domains/income/overview.md): исполненные купоны и дивиденды за календарный период |
|
| Посчитать полученные выплаты | [Пассивный доход](domains/income/overview.md): исполненные купоны и дивиденды за календарный период |
|
||||||
| Посмотреть ожидаемые события | [Будущие выплаты](domains/income/upcoming-events.md): купоны, дивиденды, погашения и оферты по текущим позициям |
|
| Посмотреть ожидаемые события | [Будущие выплаты](domains/income/upcoming-events.md): купоны, дивиденды, погашения и оферты по текущим позициям |
|
||||||
|
|||||||
Generated
+6
-14
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "wealth-ledger-docs",
|
"name": "wealth-ledger-docs",
|
||||||
"version": "0.1.8",
|
"version": "0.1.5",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "wealth-ledger-docs",
|
"name": "wealth-ledger-docs",
|
||||||
"version": "0.1.8",
|
"version": "0.1.5",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@commitlint/cli": "21.2.4",
|
"@commitlint/cli": "21.2.4",
|
||||||
"@commitlint/config-conventional": "21.2.4",
|
"@commitlint/config-conventional": "21.2.4",
|
||||||
@@ -677,13 +677,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@isaacs/nonrecursive-glob-match": {
|
|
||||||
"version": "1.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@isaacs/nonrecursive-glob-match/-/nonrecursive-glob-match-1.0.3.tgz",
|
|
||||||
"integrity": "sha512-SI7kyKHq4XXDRozw+r9GlRZkia1ZkFrpLW98r2IC2Bpr8YkFGE3fvjzmxCG0x78A++69HmDNrDvSMYBZmHGpKA==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "BlueOak-1.0.0"
|
|
||||||
},
|
|
||||||
"node_modules/@octokit/auth-token": {
|
"node_modules/@octokit/auth-token": {
|
||||||
"version": "6.0.0",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz",
|
||||||
@@ -3256,14 +3249,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minimatch": {
|
"node_modules/minimatch": {
|
||||||
"version": "11.0.2",
|
"version": "10.2.6",
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-11.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz",
|
||||||
"integrity": "sha512-pWTgz5CN3tjqyZNSK2tePlSmu9IwM41q8yn8Usdqqwe9TIHh+9dEpLLjF4uApsfPEAZY71qtSiA2B2APEr+1Yw==",
|
"integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "BlueOak-1.0.0",
|
"license": "BlueOak-1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@isaacs/nonrecursive-glob-match": "^1.0.2",
|
"brace-expansion": "^5.0.8"
|
||||||
"brace-expansion": "^5.0.12"
|
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "18 || 20 || >=22"
|
"node": "18 || 20 || >=22"
|
||||||
|
|||||||
+1
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "wealth-ledger-docs",
|
"name": "wealth-ledger-docs",
|
||||||
"version": "0.1.8",
|
"version": "0.1.5",
|
||||||
"private": true,
|
"private": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "24.22.1"
|
"node": "24.22.1"
|
||||||
@@ -26,7 +26,6 @@
|
|||||||
"katex": "0.19.1",
|
"katex": "0.19.1",
|
||||||
"markdownlint-cli@0.49.1": {
|
"markdownlint-cli@0.49.1": {
|
||||||
"js-yaml": "5.4.2",
|
"js-yaml": "5.4.2",
|
||||||
"minimatch": "11.0.2",
|
|
||||||
"smol-toml": "1.9.1"
|
"smol-toml": "1.9.1"
|
||||||
},
|
},
|
||||||
"release-it": {
|
"release-it": {
|
||||||
|
|||||||
+1
-30
@@ -2,8 +2,7 @@
|
|||||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
"extends": [
|
"extends": [
|
||||||
"config:recommended",
|
"config:recommended",
|
||||||
":semanticCommitTypeAll(chore)",
|
":semanticCommitTypeAll(chore)"
|
||||||
"security:minimumReleaseAgeNpm"
|
|
||||||
],
|
],
|
||||||
"timezone": "Europe/Moscow",
|
"timezone": "Europe/Moscow",
|
||||||
"labels": [
|
"labels": [
|
||||||
@@ -11,13 +10,6 @@
|
|||||||
],
|
],
|
||||||
"dependencyDashboard": true,
|
"dependencyDashboard": true,
|
||||||
"rangeStrategy": "pin",
|
"rangeStrategy": "pin",
|
||||||
"prConcurrentLimit": 5,
|
|
||||||
"lockFileMaintenance": {
|
|
||||||
"enabled": true,
|
|
||||||
"schedule": [
|
|
||||||
"before 4am on the first day of the month"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"packageRules": [
|
"packageRules": [
|
||||||
{
|
{
|
||||||
"matchUpdateTypes": [
|
"matchUpdateTypes": [
|
||||||
@@ -26,27 +18,6 @@
|
|||||||
],
|
],
|
||||||
"groupName": "non-major dependencies"
|
"groupName": "non-major dependencies"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"matchManagers": [
|
|
||||||
"github-actions"
|
|
||||||
],
|
|
||||||
"matchUpdateTypes": [
|
|
||||||
"minor",
|
|
||||||
"patch"
|
|
||||||
],
|
|
||||||
"groupName": "non-major github actions"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"matchManagers": [
|
|
||||||
"docker-compose",
|
|
||||||
"dockerfile"
|
|
||||||
],
|
|
||||||
"matchUpdateTypes": [
|
|
||||||
"minor",
|
|
||||||
"patch"
|
|
||||||
],
|
|
||||||
"groupName": "non-major container images"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"matchUpdateTypes": [
|
"matchUpdateTypes": [
|
||||||
"major"
|
"major"
|
||||||
|
|||||||
Reference in New Issue
Block a user