spec: add stock screener
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
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
|
||||
Reference in New Issue
Block a user