41 lines
2.6 KiB
Plaintext
41 lines
2.6 KiB
Plaintext
sequenceDiagram
|
|
actor U as Пользователь
|
|
participant F as WealthLedger frontend
|
|
participant B as WealthLedger backend
|
|
participant T as T-Invest API
|
|
U->>F: Выбирает условия и нажимает «Найти»
|
|
F->>B: POST /api/v1/stocks/screener/search (условия)
|
|
B->>B: Проверка сессии и подключения
|
|
alt Нет доступа или неверные условия
|
|
B-->>F: 400 / 401 / ошибка подключения
|
|
F-->>U: Объяснение ошибки без нового результата
|
|
else Доступ подтверждён
|
|
B->>T: Shares (INSTRUMENT_STATUS_ALL)
|
|
alt Каталог получен полностью
|
|
T-->>B: Share[]
|
|
B->>B: Проверить доступность, фильтры, выпуски, сортировку и зафиксировать asOf
|
|
B-->>F: 200, items (до 30), searchId, asOf, hasNext
|
|
F-->>U: Первая страница или подтверждённый пустой результат
|
|
opt Есть следующая страница
|
|
U->>F: Далее
|
|
F->>B: GET /api/v1/stocks/screener/search/{searchId}?page=2
|
|
alt Результат доступен тому же пользователю и подключению
|
|
B-->>F: 200, следующие items, тот же asOf
|
|
F-->>U: Следующая страница без пропусков и повторов
|
|
else Результат недоступен или сменилось подключение
|
|
B-->>F: Ошибка без пересчёта по новому каталогу
|
|
F-->>U: Результат недоступен, предложить новый поиск
|
|
end
|
|
end
|
|
else Каталог недоступен или неполон
|
|
T-->>B: Ошибка / неполные сведения
|
|
B-->>F: Ошибка поиска, не пустая выборка
|
|
F-->>U: Поиск недоступен, можно повторить
|
|
end
|
|
end
|
|
opt Условия изменены или нажат повторный поиск
|
|
U->>F: Нажимает «Найти»
|
|
F->>B: Новый POST с текущими условиями
|
|
Note over B,T: Новый список и новая первая страница без подмены прежнего searchId
|
|
end
|