Files
specs/openspec/changes/archive/2026-08-26-enhance-brokerage-account-list/tasks.md
T

8.7 KiB
Raw Blame History

1. Точная backend-сводка и контракт списка

  • 1.1 [backend] Извлечь backend-owned normalizer Money[] из текущего Portfolio flow и применить его как для snapshot деталей, так и для компактной сводки списка: нормализовать ISO-валюты, точно сложить ненулевые стоимости позиций и Cash Balance одной валюты, не выполнять FX-конвертацию и не загружать Instrument metadata для списка.
    • Covers: brokerage-accounts — Список активных брокерских счетов
    • Verification: npm test -- tbank/portfolio.service.spec.ts --runInBand в backend с cases точных итогов, Cash Balance, нулевых/безвалютных значений и пустого доступного Portfolio.
  • 1.2 [backend] Расширить BrokerageAccountDto nullable portfolioSummary с totalsByCurrency и изменить list orchestration за существующей TbankAccessService: для каждого поддерживаемого upstream-счёта параллельно получить два Portfolio-входа, сохранить upstream-порядок, локализовать только TBANK_UNAVAILABLE как portfolioSummary: null, а ошибки connection/token и прочие ошибки списка оставить существующей boundary.
    • Covers: brokerage-accounts — Список активных брокерских счетов
    • Verification: npm test -- tbank/brokerage-accounts.service.spec.ts --runInBand в backend с cases порядка, успешных нескольких сводок, локальной unavailable-сводки, пустой сводки и неподавленных connection/token ошибок.
  • 1.3 [backend] Пройти canonical backend gate после DTO, normalizer и list orchestration.
    • Covers: N/A — canonical gate проверяет реализацию уже покрытого contract и money behavior, не вводя отдельного observable requirement.
    • Verification: npm run verify в backend под Node 22.

2. Generated frontend contract и доступный список

  • 2.1 [frontend] После доступности backend OpenAPI синхронизировать committed OpenAPI snapshot и generated schema через штатный workflow; использовать расширенный generated BrokerageAccount type без ручного transport DTO.
    • Covers: N/A — это обязательная реализация решения D3 для already-specified public response, не новое client behavior.
    • Verification: npm run openapi:sync в frontend, затем npm run openapi:check в frontend.
  • 2.2 [frontend] Расширить Accounts page VM и её focused tests: сохранить существующие key, staleTime: 60_000, отсутствие retry/refetch-on-focus, invalidation и top-level loading/error/empty/cached-snapshot selection; подготовить display model сводки карточки с максимум двумя исходными Money, индикатором остальных валют и раздельными состояниями unavailable/empty.
    • Covers: brokerage-accounts — Экран списка брокерских счетов
    • Verification: npm run test:run -- src/pages/accounts/ui/AccountsPage.test.tsx в frontend с cases fresh cache, background refresh/error snapshot, limit двух валют, remaining-currency indicator, unavailable и empty summary.
  • 2.3 [frontend] Переработать presentation списка в адаптивную одноколоночную последовательность широких ссылок-карточек: отобразить локализованные тип, имя, summary, вторичные метаданные даты и видимое действие открытия; сохранить native link navigation/focus, безопасный local summary state и форматирование каждого переданного Money существующим formatter без агрегации или FX-смысла.
    • Covers: brokerage-accounts — Экран списка брокерских счетов
    • Verification: npm run test:run -- src/entities/brokerage-account/ui/BrokerageAccountList.test.tsx в frontend с accessible link/action, доступными summary states и responsive single-column class behavior.
  • 2.4 [frontend] Сохранить известные list error states и recovery actions в page VM/presentation: connection и invalid-token ведут только к настройкам, temporary unavailable показывает retry и settings, unknown error — только retry; при Client Cached Snapshot warning не скрывает карточки и не запускает retry автоматически.
    • Covers: brokerage-accounts — Клиентские состояния ошибки списка счетов
    • Verification: npm run test:run -- src/pages/accounts/ui/AccountsPage.test.tsx в frontend с cases всех известных/unknown errors, recovery actions и cached-snapshot warning.
  • 2.5 [frontend] Пройти canonical frontend gate после generated contract, VM, presentation и tests.
    • Covers: N/A — canonical gate подтверждает delivered frontend behavior и boundary rules, но не задаёт новый requirement.
    • Verification: npm run verify в frontend под Node 22.

3. As-built documentation и canonical SDD checks

  • 3.1 [docs] Обновить delivered documentation брокерских счетов и system overview после verified implementation: описать additive summary contract, исходные валюты без FX-агрегации, локальную unavailable-сводку, неизменную current-connection boundary и Client Cached Snapshot; не копировать OpenSpec planning artifacts.
    • Covers: N/A — docs фиксирует только поставленное as-built состояние из Design Delivery Map и не создаёт самостоятельного observable behavior.
    • Verification: Review docs/features/brokerage-accounts.md и docs/architecture/system-overview.md against delivered backend OpenAPI and frontend behavior.
  • 3.2 [docs] Пройти canonical docs gate для as-built documentation.
    • Covers: N/A — Markdown gate подтверждает documentation delivery и не реализует отдельный Delta Requirement.
    • Verification: npm run verify в docs под Node 22.
  • 3.3 [specs] Проверить canonical change artifacts и strict Delta Specs после создания Tasks, не создавая competing planning source.
    • Covers: N/A — specs area владеет SDD artifact integrity, а не отдельным runtime behavior.
    • Verification: bash specs/scripts/verify-openspec-planning.sh enhance-brokerage-account-list, openspec validate enhance-brokerage-account-list --type change --strict --store wealth-ledger-specs и openspec validate --specs --strict --store wealth-ledger-specs из specs.

4. Cross-repository verification before archive

  • 4.1 [workspace] Выполнить canonical workspace dispatcher после всех repository-owned tasks, включая required runtime OpenAPI contract gate для backend response и committed frontend snapshot.
    • Covers: N/A — workspace только оркестрирует approved Delivery Map и repository gates; он не владеет implementation behavior.
    • Verification: bash specs/scripts/verify-workspace-change.sh enhance-brokerage-account-list из workspace root под Node 22.
  • 4.2 [workspace] Провести semantic verification и independent read-only review implementation против Proposal, всех Delta Requirements/Scenarios, Decisions D1–D4, rollback contract и completed Tasks; устранить Critical и Important findings до archive eligibility.
    • Covers: N/A — terminal review доказывает соответствие уже specified behavior, не вводя нового requirement.
    • Verification: Сохранить review scope, findings и resolution только после фактической проверки; подтвердить отсутствие Critical и Important findings.