spec: finalize wealth-ledger SDD migration
This commit was merged in pull request #26.
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
# tbank-data-sync Specification
|
||||
|
||||
## Purpose
|
||||
Определяет единственного владельца обновления личных данных T-Bank и узкие
|
||||
исключения первой загрузки данных, которых ещё нет в локальном результате.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: Часовой обход владеет обновлением личных данных T-Bank
|
||||
Система MUST обновлять личные инвестиционные данные T-Bank только часовым обходом для текущего подключения User. Обычные resource reads, действия повтора и открытие экранов MUST NOT запускать импорт, ручную личную синхронизацию или обращение к T-Bank. Единственными исключениями являются первая загрузка отсутствующего интервала Account Ledger и впервые открытого диапазона свечей: они MAY начать получение только этого отсутствующего интервала либо диапазона, когда для него нет подтверждённого локального результата. Эти исключения MUST NOT обновлять Accounts, Portfolio, иные интервалы операций, прогноз будущих событий или другой диапазон свечей. После подтверждения полноты запрошенного прошлого интервала или диапазона его повторное чтение MUST оставаться локальным.
|
||||
|
||||
#### Scenario: Обычное чтение не запускает импорт
|
||||
- **WHEN** User открывает Accounts, Portfolio, Account Ledger, будущие события либо повторяет неуспешное HTTP-чтение
|
||||
- **THEN** система читает локальный результат и не начинает личную синхронизацию T-Bank
|
||||
|
||||
#### Scenario: Первый отсутствующий интервал операций
|
||||
- **WHEN** User впервые открывает интервал Account Ledger без подтверждённого локального результата
|
||||
- **THEN** система MAY начинает получение только этого интервала и возвращает его локальное состояние неполноты до подтверждения результата
|
||||
|
||||
#### Scenario: Впервые открытый диапазон свечей
|
||||
- **WHEN** User впервые открывает диапазон свечей, для которого нет подтверждённого локального результата
|
||||
- **THEN** система MAY начинает получение только этого диапазона и не загружает другие диапазоны или полную историю свечей
|
||||
|
||||
### Requirement: Результат личного обновления остаётся наблюдаемым
|
||||
Каждый response resource read личных данных текущего подключения MUST возвращать `{ data, meta }`. `meta` MUST отдельно делать наблюдаемыми freshness и полноту именно `data`, момент последнего успешного полного результата resource, момент и состояние последней часовой попытки, затронувшей resource, и доступность resource. Состояние последней попытки MUST различать отсутствие попытки, выполнение, полный успех, частичный успех и неуспех. Доступность MUST различать доступный полный результат, первую загрузку без полного результата, временную недоступность без полного результата и недоступность из-за отсутствующего либо недействительного подключения. Неполный, продолжающийся или неуспешный результат MUST NOT обозначаться полным или свежим. Успешный пустой Accounts либо иной пустой полный результат MUST обозначаться доступным и полным, а не отсутствующим. При неуспешном обновлении последний подтверждённый полный результат и его время MUST оставаться доступными, когда отдельное требование capability не предписывает недоступность данных; его freshness MUST определяться исходным временем, а `meta` MUST отдельно обозначать неуспех последней попытки. Наблюдение этих состояний MUST NOT предоставлять способ начать синхронизацию.
|
||||
|
||||
#### Scenario: Ошибка после полного результата
|
||||
- **WHEN** очередное обновление набора личных данных завершается ошибкой после ранее подтверждённого полного результата
|
||||
- **THEN** система возвращает предыдущий полный `data`, его исходное время и freshness, а `meta` отдельно обозначает неуспех последней попытки
|
||||
|
||||
#### Scenario: Первая загрузка ещё не завершена
|
||||
- **WHEN** для набора личных данных ещё нет подтверждённого полного результата
|
||||
- **THEN** система возвращает `data: null` и в `meta` обозначает выполнение первой загрузки либо её неуспех без частичного результата, выданного за полный
|
||||
|
||||
#### Scenario: Успешный пустой список счетов
|
||||
- **WHEN** последний полный результат Accounts подтверждает отсутствие открытых поддерживаемых счетов
|
||||
- **THEN** система возвращает `data: []`, а `meta` обозначает доступный полный результат, его время и состояние последней часовой попытки
|
||||
Reference in New Issue
Block a user