Files
specs/openspec/changes/2026-11-07-investment-performance-vs-index/system-analysis/sequences/performance-read.mmd
T
codex-bot 892800301b
Specs security / security (push) Successful in 8s
Specs verify / verify (push) Successful in 11s
spec: plan investment performance vs Moscow Exchange index (WealthLedger/main#54) (#85)
2026-11-08 16:30:32 +03:00

39 lines
2.6 KiB
Plaintext

sequenceDiagram
actor User
participant UI as WealthLedger frontend
participant API as WealthLedger backend
participant Store as Saved investment data
participant Idx as Saved index history
participant MOEX as MOEX ISS
User->>UI: Открывает вкладку «Результат» (accountId | all)
UI->>API: GET /brokerage-accounts/{accountId|all}/performance
API->>Store: Сессия, connection, доступ к счёту(ам)
alt Нет сессии / нет подключения / счёт недоступен
API-->>UI: Problem Details 401 / 503 TBANK_NOT_CONNECTED / 404
UI-->>User: Существующие состояния ошибки счёта
else Доступ подтверждён
API->>Store: Граница истории, покрытие операций, последняя полная оценка Portfolio
Note over API: По каждому счёту: причины недоступности<br/>(HISTORY_START_UNKNOWN, OPERATIONS_HISTORY_INCOMPLETE,<br/>NON_RUB_ACTIVITY, UNVALUED_SECURITIES_TRANSFER,<br/>PORTFOLIO_VALUATION_INCOMPLETE, UNCONFIRMED_TRANSFER)<br/>all: ACCOUNT_VALUATION_DATES_DIFFER<br/>XIRR: NO_SOLUTION / AMBIGUOUS_RETURN
alt Не осталось счетов для расчёта
API-->>UI: 200 {data: null, meta.unavailable: [...]}
UI-->>User: «Доходность недоступна» + причина
else Есть счета для расчёта
API->>API: Внешние потоки по дате, чистые вложения, прибыль, XIRR
API->>Idx: Закрытия MCFTRR, IMOEX за [from, to]
opt История не покрывает период (см. index-refresh.mmd)
Idx->>MOEX: Догрузка недостающих торговых дней
end
alt MCFTRR покрывает период
API->>API: Теневой портфель, XIRR индекса, опережение, series
else MCFTRR недоступен
API->>API: benchmark/outperformance недоступны (INDEX_HISTORY_UNAVAILABLE), series = []
end
API-->>UI: 200 {data: Performance, meta.dependencies}
UI-->>User: Показатели, график, «Как считали», предупреждение о неполноте
end
end
alt Технический сбой backend
API-->>UI: Problem Details 5xx
UI-->>User: Ошибка только во вкладке «Результат», с повтором
end