spec: archive three completed changes (main#33, frontend#63, screener)
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
## Purpose
|
||||
|
||||
Определяет поиск доступных к покупке акций по характеристикам всего доступного каталога, просмотр совпавших выпусков и навигацию по результату поиска.
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Скринер ищет среди доступных к покупке акций
|
||||
Система SHALL по нажатию «Найти» искать по всему доступному на момент запроса каталогу акций, не ограничивая исходный набор первыми совпадениями текстового поиска. В результаты MUST включаться только акции, для которых в полученных сведениях подтверждены и доступность покупки, и возможность торговли через API. Скринер MUST показывать время получения списка и MUST NOT представлять эти признаки как гарантию, что конкретный пользователь сможет исполнить заявку прямо сейчас.
|
||||
|
||||
#### Scenario: Поиск без названия или тикера
|
||||
- **WHEN** пользователь не ввёл текст и нажал «Найти»
|
||||
- **THEN** система ищет по доступному каталогу и показывает выпуски, удовлетворяющие условиям и обоим признакам доступности
|
||||
|
||||
#### Scenario: Акция недоступна для покупки
|
||||
- **WHEN** у акции отсутствует подтверждение доступности покупки или торговли через API
|
||||
- **THEN** система не включает её в результаты скринера независимо от остальных совпавших условий
|
||||
|
||||
### Requirement: Условия скринера применяются совместно
|
||||
Система SHALL позволять независимо задавать необязательные условия по сектору, типу акции, валюте расчётов, площадке, стране риска и максимальному количеству бумаг в лоте, а также необязательный текстовый запрос по названию или тикеру. После нажатия «Найти» система SHALL возвращать только акции, удовлетворяющие всем заданным условиям. Отсутствующее или неизвестное значение выбранного условия MUST NOT считаться совпадением.
|
||||
|
||||
#### Scenario: Несколько условий без текста
|
||||
- **WHEN** пользователь выбрал сектор и валюту, оставил текст пустым и нажал «Найти»
|
||||
- **THEN** в результате остаются только доступные к покупке акции выбранного сектора и валюты
|
||||
|
||||
#### Scenario: Текст совместно с характеристиками
|
||||
- **WHEN** пользователь ввёл название или тикер, выбрал тип акции и нажал «Найти»
|
||||
- **THEN** система отбирает совпадения по тексту и типу среди доступного каталога до разделения результата на страницы
|
||||
|
||||
#### Scenario: Неизвестный сектор
|
||||
- **WHEN** пользователь выбрал сектор, а у акции сектор не указан
|
||||
- **THEN** акция не считается совпадением
|
||||
|
||||
#### Scenario: Граница максимального лота
|
||||
- **WHEN** задано максимальное количество бумаг в лоте
|
||||
- **THEN** акции с известным размером лота не больше указанного включаются при соблюдении остальных условий, а акции с неизвестным или большим лотом исключаются
|
||||
|
||||
### Requirement: Результат представляет отдельные выпуски
|
||||
Система SHALL показывать не более одной карточки для каждого выпуска с одинаковым ISIN; акции с разными ISIN SHALL оставаться отдельными результатами. При отсутствии ISIN отдельным результатом SHALL быть инструмент с собственным идентификатором. Представитель выпуска MUST выбираться среди инструментов, удовлетворяющих заданным условиям, а карточка MUST вести к выбранному инструменту.
|
||||
|
||||
#### Scenario: Несколько подходящих режимов одного выпуска
|
||||
- **WHEN** несколько инструментов с одним ISIN удовлетворяют всем условиям
|
||||
- **THEN** система показывает одну карточку выпуска со ссылкой на один из этих инструментов
|
||||
|
||||
#### Scenario: Один режим не соответствует условиям
|
||||
- **WHEN** два инструмента имеют один ISIN, но только один удовлетворяет всем условиям
|
||||
- **THEN** карточка выпуска ведёт к соответствующему условиям инструменту
|
||||
|
||||
#### Scenario: Разные выпуски одного эмитента
|
||||
- **WHEN** обыкновенная и привилегированная акции имеют разные ISIN и обе удовлетворяют условиям
|
||||
- **THEN** система показывает их как отдельные результаты
|
||||
|
||||
### Requirement: Страницы относятся к одному результату поиска
|
||||
Система SHALL упорядочивать совпадения по тикеру, затем по идентификатору инструмента, и показывать не более 30 выпусков на странице. Переход между страницами одного поиска MUST сохранять состав и порядок полученного результата без пропусков и повторов. Изменение полей без нажатия «Найти» MUST NOT заменять текущий результат; повторное нажатие «Найти», в том числе без изменения условий, SHALL запускать новый поиск и возвращать к первой странице.
|
||||
|
||||
#### Scenario: Переход к следующей странице
|
||||
- **WHEN** пользователь открывает следующую страницу полученного результата
|
||||
- **THEN** он видит следующие до 30 выпусков в том же порядке и с тем же временем получения списка, без повторения выпусков предыдущей страницы
|
||||
|
||||
#### Scenario: Повторный поиск
|
||||
- **WHEN** пользователь изменил условия или оставил их прежними и нажал «Найти» повторно
|
||||
- **THEN** система получает новый результат с новым временем получения списка и показывает его первую страницу
|
||||
|
||||
#### Scenario: Поля изменены, но поиск не запущен
|
||||
- **WHEN** пользователь изменяет условия и ещё не нажал «Найти»
|
||||
- **THEN** ранее полученные страницы не подменяются результатом для новых условий
|
||||
|
||||
### Requirement: Отсутствие совпадений отличается от недоступности поиска
|
||||
Система MUST показывать пустой результат только после успешного поиска без совпадений. Если получить сведения для поиска не удалось, система SHALL сообщать о недоступности поиска и MUST NOT выдавать отсутствие акций за подтверждённый результат.
|
||||
|
||||
#### Scenario: Успешный поиск без совпадений
|
||||
- **WHEN** поиск завершился успешно, но ни одна акция не удовлетворяет условиям
|
||||
- **THEN** система показывает, что подходящие акции не найдены
|
||||
|
||||
#### Scenario: Источник каталога недоступен
|
||||
- **WHEN** поиск не может получить сведения о каталоге
|
||||
- **THEN** система сообщает об ошибке получения результата, не утверждая, что подходящих акций нет
|
||||
Reference in New Issue
Block a user