Files
specs/openspec/changes/2026-11-07-investment-performance-vs-index/system-analysis/sequences/index-refresh.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

26 lines
1.7 KiB
Plaintext

sequenceDiagram
participant API as WealthLedger backend
participant Idx as Saved index history
participant MOEX as MOEX ISS
API->>Idx: Последняя сохранённая дата, время последней попытки (по индексу)
alt Покрыто до дня `to` или попытка была < 1 ч назад
Idx-->>API: Сохранённые закрытия
else Нужна догрузка (одна одновременная попытка на индекс)
loop Страницы по 100 строк (start = 0, 100, …) до TOTAL
API->>MOEX: GET /iss/history/engines/stock/markets/index/securities/{SECID}.json<br/>?from&till&start&iss.meta=off&history.columns=TRADEDATE,CLOSE
alt 200 с валидными строками
MOEX-->>API: TRADEDATE, CLOSE + history.cursor(INDEX,TOTAL,PAGESIZE)
API->>Idx: Upsert (индекс, торговый день) → точное закрытие
else Таймаут 10 с / не-2xx / невалидный ответ
MOEX-->>API: сбой
Note over API: Прервать догрузку; сохранённое не удалять;<br/>лог integration.moex.index_history.failed
end
end
Idx-->>API: Сохранённые закрытия
end
alt Последнее закрытие ≥ to − 10 календарных дней
Note over API: Покрытие достаточно; asOf = последняя дата закрытия
else Иначе
Note over API: INDEX_HISTORY_UNAVAILABLE для этого индекса
end