Files
specs/openspec/changes/archive/2026-10-09-reconcile-hourly-investment-sync/proposal.md
T
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

6.1 KiB
Raw Blame History

Proposal

Why

Два завершённых legacy changes описывают несовместимые модели инвестиционной синхронизации. persist-tbank-data закрепляет запуск обновления запросом и ручное обновление, а hourly-portfolio-sync-history и фактическая система используют часовой обход и локальные read-only GET. Пока canonical specs и AS-IS документация содержат обе трактовки, ни один legacy change нельзя безопасно синхронизировать или архивировать.

What Changes

  • Зафиксировать единственную observable model: часовой обход обновляет личные инвестиционные данные, а обычные GET читают сохранённый результат и не запускают личную синхронизацию.
  • Сохранить узкие исключения первой загрузки отсутствующего исторического интервала операций и впервые открытого диапазона свечей.
  • Уточнить видимые состояния свежести, полноты, последней попытки обхода и доступности личных данных после смены подключения.
  • Согласовать canonical behavior specs и durable AS-IS documentation с этой моделью, не создавая ещё один current OpenAPI source of truth.

Scope

In Scope

  • Investment accounts, Portfolio, операции изменяемого периода, forecasts/events, personal connection boundary и связанные frontend recovery states.
  • Capabilities brokerage-accounts, portfolio-view, brokerage-account-ledger, brokerage-account-upcoming-events, frontend-data-resilience, tbank-connection и tbank-data-sync.
  • Описание и compatibility guidance для { data, meta } resource responses и backend-generated OpenAPI как executable HTTP contract.
  • Обновление durable documentation и ADR supersession, когда это необходимо.

Out of Scope / Non-Goals

  • Новый способ запуска синхронизации, публичное чтение истории стоимости, валютная конвертация и многопроцессный scheduler.
  • Переписывание historical legacy changes или автоматическое объявление их approval/Validation успешными.
  • Новая product feature, не требуемая для согласования уже поставленного поведения.

Capabilities

New Capabilities

  • hourly-investment-sync: нормативно зафиксировать текущий наблюдаемый часовой обход и его статус, если capability ещё отсутствует в canonical specs.
  • portfolio-value-history: зафиксировать существующую историю оценок и границу её видимости, если capability ещё отсутствует в canonical specs.
  • online-instrument-information: зафиксировать online-only справочные сведения, если capability ещё отсутствует в canonical specs.

Modified Capabilities

  • brokerage-accounts: локальное чтение и результат последнего обхода.
  • portfolio-view: read-only GET, часовая свежесть и отсутствие ручной личной синхронизации.
  • brokerage-account-ledger: первая загрузка отсутствующего интервала и локальное чтение полного прошлого периода.
  • brokerage-account-upcoming-events: последний complete forecast и независимое состояние ошибки обновления.
  • frontend-data-resilience: distinction between retrying an HTTP read and starting source work.
  • tbank-connection: границы текущих данных и скрытая история оценок после смены либо удаления подключения.

Impact

Пользователь получает предсказуемое обновление инвестиций без скрытого запуска брокерских запросов при чтении экранов. Backend и frontend уже содержат большую часть целевого поведения; change формализует его, устраняет расхождения requirements/docs и создаёт основу для корректного завершения legacy history.

Success Criteria

  • Canonical specs дают один непротиворечивый ответ о владельце обновления, исключениях первой загрузки и read-only GET.
  • Backend-generated OpenAPI/runtime interface семантически соответствует approved target contract при затронутых HTTP resource responses.
  • AS-IS docs и ADR guidance не обещают request-driven/manual sync там, где фактическая система использует hourly model.
  • Legacy persist-tbank-data и hourly-portfolio-sync-history получают безопасный дальнейший путь к archival finalization без конкурирующей sync.

Assumptions / Dependencies

  • Часовой scheduler, local resource reads и frontend 30-minute rereads остаются целевой моделью, подтверждённой Change Owner.
  • System Analysis определит точные contracts, semantics forecasts/events и допустимые first-load exceptions до implementation tasks.