26 lines
1.7 KiB
Plaintext
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
|