spec: add stock screener
Specs security / security (push) Successful in 7s
Specs verify / verify (push) Successful in 9s

This commit is contained in:
2026-10-11 10:44:30 +03:00
parent 13e3e53d06
commit ed6cf299f2
10 changed files with 653 additions and 0 deletions
@@ -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