Files
ksv741 329d66e767
Specs security / security (push) Successful in 8s
Specs verify / verify (push) Successful in 11s
spec: finalize wealth-ledger SDD migration
2026-10-09 21:14:22 +03:00

5.7 KiB
Raw Blame History

Purpose

Определяет независимое от открытых экранов часовое обновление личных инвестиционных данных и безопасно наблюдаемый результат последней попытки.

ADDED Requirements

Requirement: Часовой обход личных инвестиционных данных

Система SHALL начинать первый часовой обход после успешного подключения T-Bank и последующие обходы не ранее чем через 60 минут от начала предыдущей попытки этого подключения. После простоя система MUST выполнить не более одного актуального обхода и MUST NOT воспроизводить пропущенные часы. Неуспешная попытка MUST NOT повторяться ранее следующего часового срока. Перекрывающиеся обходы MUST NOT выполняться: срок, наступивший во время выполняющегося обхода, MUST быть пропущен и MUST NOT ставиться в очередь; следующий обход становится допустимым только в следующий 60-минутный срок, отсчитанный от начала выполнявшейся попытки. Обход MUST обновлять доступные счета, Portfolio каждого доступного счёта, изменяемый хвост операций и будущие события по бумагам текущего Portfolio. Он MUST NOT повторно загружать полные прошлые интервалы операций, завершённые свечи или полную рыночную историю и MUST NOT зависеть от открытия frontend-экрана.

Scenario: Первое подключение

  • WHEN User успешно подключает T-Bank между часовыми сроками
  • THEN первый обход начинается без ожидания следующего календарного часа

Scenario: Возобновление после простоя

  • WHEN backend запускается после пропуска нескольких часовых сроков
  • THEN система выполняет один актуальный обход без синтетических прошлых обновлений

Scenario: Перекрытый срок

  • WHEN предыдущий обход всё ещё выполняется в момент очередного срока
  • THEN система не начинает второй обход и не ставит пропущенный обход в очередь

Scenario: Длительный обход пропускает один срок

  • WHEN обход начался в 10:00, всё ещё выполняется в 11:00 и завершился до 12:00
  • THEN система не запускает обход в 11:00 и может начать следующий не ранее 12:00

Requirement: Последний результат обхода доступен только для наблюдения

Система SHALL предоставлять авторизованному User результат последнего обхода только в границе его текущего подключения: время начала, состояние выполнения, полного успеха, частичного успеха либо неуспеха и безопасный перечень проблемных счетов или разделов. Это состояние MUST быть доступно в meta каждого затронутого resource read вместе с freshness, полнотой и доступностью его data. Успех одного счёта или раздела MUST сохраняться независимо от ошибки другого; ошибка MUST NOT заменять его последнее успешное состояние или время. Отсутствие состоявшейся попытки MUST отличаться от успешной попытки. Наблюдение результата MUST NOT предоставлять способ начать личную синхронизацию.

Scenario: Частичный успех

  • WHEN Portfolio одного доступного счёта обновился, а другого не обновился
  • THEN новый Portfolio первого сохраняется, прежний успешный Portfolio второго остаётся доступным, а результат обхода обозначает частичный успех и проблемный счёт

Scenario: Наблюдение не запускает обход

  • WHEN User запрашивает результат последнего обхода
  • THEN система возвращает доступный сохранённый результат без нового обращения к T-Bank

Scenario: Старая граница подключения

  • WHEN User заменил либо удалил подключение и запрашивает результат прежнего обхода
  • THEN система не раскрывает результат прежней границы подключения