Files
codex-bot 3821d9ed58
Specs security / security (push) Successful in 7s
Specs verify / verify (push) Successful in 14s
refactor: group canonical specs by domain and archive account-top-positions (#74)
2026-11-02 21:50:49 +03:00

6.8 KiB
Raw Permalink Blame History

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 обозначает доступный полный результат, его время и состояние последней часовой попытки