43 KiB
portfolio-concentration Specification
Purpose
Позволяет авторизованному User увидеть на странице одного Brokerage Account, какие акции, облигации, секторы и эмитенты занимают наибольшую часть текущей оценки Portfolio в выбранной валюте, без валютной конвертации.
ADDED Requirements
Requirement: Вкладка «Концентрация» страницы счёта
Система SHALL показывать на странице одного Brokerage Account вкладку «Концентрация» рядом с вкладкой «Позиции». Система SHALL NOT показывать вкладку в режиме «Все счета». Добавление вкладки SHALL NOT менять вкладку, открываемую по умолчанию, и содержание остальных вкладок.
Scenario: Вкладка на странице одного счёта
- WHEN User открывает страницу доступного Brokerage Account
- THEN рядом с вкладкой «Позиции» доступна вкладка «Концентрация», а по умолчанию открыта прежняя вкладка
Scenario: Режим «Все счета»
- WHEN User открывает общий портфель в режиме «Все счета»
- THEN вкладки «Концентрация» нет
Requirement: Вкладка в состояниях страницы
Система SHALL NOT показывать вкладку «Концентрация», пока Portfolio загружается, при его ошибке или недоступности и при штатном пустом Portfolio по требованию «Состояния и ошибки Portfolio на клиенте» из portfolio-view. Вкладка SHALL показываться при Portfolio хотя бы с одной позицией или денежным остатком.
Источник (ненормативно): #48
Scenario: Загрузка и ошибка
- WHEN Portfolio загружается либо получение завершилось ошибкой
- THEN вкладки «Концентрация» нет
Scenario: Штатный пустой Portfolio
- WHEN у счёта нет позиций и денежных остатков
- THEN вкладки «Концентрация» нет
Scenario: Только денежные остатки
- WHEN у счёта есть Cash Balance и нет позиций
- THEN вкладка «Концентрация» есть, разрез показывает пустое состояние
Requirement: Переключение разрезов
Вкладка «Концентрация» SHALL предоставлять разрезы «Акции», «Облигации», «Секторы», «Эмитенты» в этом порядке и показывать одновременно один из них. При новом заходе на страницу счёта SHALL быть открыт разрез «Акции» по требованию «Начальное состояние вкладки». Разрез — набор элементов, на которые делится оценка позиций; элемент — единица ранжирования разреза по требованию «Состав разрезов».
Scenario: Открытие вкладки
- WHEN User при новом заходе на страницу счёта открывает вкладку «Концентрация»
- THEN показан только разрез «Акции» и доступны переключатели «Акции», «Облигации», «Секторы», «Эмитенты»
Scenario: Переключение разреза
- GIVEN открыт разрез «Акции» с выбранной валютой USD
- WHEN User переключает разрез на «Секторы»
- THEN показан только разрез «Секторы» в валюте USD
Requirement: Начальное состояние вкладки
Система SHALL открывать вкладку «Концентрация» при новом заходе на страницу счёта и после перезагрузки с разрезом «Акции» и первой валютой списка. Новый заход — открытие страницы после ухода с неё либо переключение счёта. Пока User остаётся на странице, включая переключение её вкладок, разрез и валюта SHALL сохраняться.
Источник (ненормативно): 3081
Scenario: Возврат с другой вкладки страницы
- GIVEN на вкладке выбраны разрез «Секторы» и валюта USD
- WHEN User переключается на вкладку «Позиции» и возвращается на «Концентрация»
- THEN выбраны разрез «Секторы» и валюта USD
Scenario: Повторный заход
- GIVEN User выбрал разрез «Секторы» и валюту USD, затем покинул страницу счёта
- WHEN User снова открывает страницу счёта и вкладку «Концентрация»
- THEN открыт разрез «Акции» с первой валютой списка
Scenario: Перезагрузка
- GIVEN на вкладке выбраны разрез «Эмитенты» и валюта USD
- WHEN User перезагружает страницу
- THEN после открытия вкладки показаны разрез «Акции» и первая валюта списка
Requirement: Состав разрезов
Элементы разреза SHALL формироваться из позиций типов по таблице; другие типы, включая CURRENCY, SHALL NOT входить во вкладку.
| Разрез | Типы | Элемент |
|---|---|---|
| Акции | STOCK |
Позиция |
| Облигации | BOND |
Позиция |
| Секторы | STOCK, BOND, FUND |
Позиции с одним sector |
| Эмитенты | STOCK, BOND |
Позиции с одним issuer.id |
Источник (ненормативно): #48
Scenario: Сектор объединяет акции, облигации и фонды
- GIVEN в RUB есть акция сектора
energyна 400, облигацияenergyна 100, фондfinancialна 300 и позицияCURRENCYна 50 - WHEN User открывает разрез «Секторы» в RUB
- THEN элементы — «Энергетика» 500 ₽ и «Финансы» 300 ₽, позиции
CURRENCYв разрезе нет
Scenario: Акция и облигация одного эмитента
- GIVEN в RUB есть акция с
issuer.idbrand-1(«Сбер») на 300, облигацияbrand-1на 200 и фондbrand-1на 100 - WHEN User открывает разрез «Эмитенты» в RUB
- THEN есть один элемент «Сбер» на 500 ₽, фонд в него не включён
Scenario: Фонд вне «Акций»
- GIVEN в RUB есть фонд на 100 и акция на 200
- WHEN User открывает разрез «Акции» в RUB
- THEN показана только акция на 200 ₽ с долей 100 %
Requirement: Названия элементов
Название элемента в «Акциях» и «Облигациях» SHALL быть отображаемым идентификатором позиции по требованию «Нормализованный состав Portfolio» из portfolio-view (name, затем ticker, затем FIGI), в «Секторах» — подписью по требованию «Подписи секторов», в «Эмитентах» — issuer.name, то есть названием бренда актива T-Bank. Позиции с разными issuer.id SHALL NOT объединяться при одинаковом issuer.name.
Scenario: Идентификатор позиции без имени
- GIVEN акция не имеет name, но имеет ticker
SBER - WHEN User открывает разрез «Акции»
- THEN элемент назван
SBER
Scenario: Название эмитента — название бренда
- GIVEN акция и облигация имеют
issuer.idbrand-1иissuer.name«Сбер» - WHEN User открывает разрез «Эмитенты»
- THEN один элемент назван «Сбер»
Scenario: Разные эмитенты с одинаковым названием
- GIVEN две акции имеют
issuer.name«Альфа» и разныеissuer.id - WHEN User открывает разрез «Эмитенты»
- THEN показаны два отдельных элемента «Альфа»
Requirement: Название эмитента при разных названиях бренда
Если учитываемые позиции одного issuer.id имеют разные issuer.name, название элемента SHALL быть issuer.name позиции с наибольшим currentValue в выбранной валюте. При равных значениях SHALL выбираться название, меньшее по алфавитному порядку требования «Порядок элементов с равной суммой».
Источник (ненормативно): #48, #48
Scenario: Название по наибольшей позиции
- GIVEN акция
brand-1на 300 с названием «Сбер» и облигацияbrand-1на 200 с названием «Сбербанк» - WHEN User открывает разрез «Эмитенты»
- THEN один элемент на 500 назван «Сбер»
Scenario: Равные наибольшие значения
- GIVEN акция
brand-1на 200 с названием «Сбербанк» и облигацияbrand-1на 200 с названием «Сбер» - WHEN User открывает разрез «Эмитенты»
- THEN элемент назван «Сбер»
Requirement: Позиции, учитываемые в разрезе
Система SHALL учитывать позицию в ранжировании, долях и диаграмме только при currentValue больше нуля в выбранной валюте; остальные позиции SHALL NOT учитываться. Позиция с нулевым currentValue не показывается и не считается неучтённой, позиция другой валюты относится к другой валюте выбора.
Источник (ненормативно): #48
Scenario: Отрицательная и неоценённая позиции
- GIVEN в разрезе «Акции» в RUB есть акции на 600 и 400, акция со стоимостью -50 и акция без
currentValue - WHEN User открывает разрез «Акции» в RUB
- THEN сумма разреза 1 000 ₽, доли 60 % и 40 %
Scenario: Позиция с нулевой стоимостью
- GIVEN есть акции на 100 и 0 в выбранной валюте
- WHEN User открывает разрез «Акции»
- THEN показана только акция на 100 с долей 100 %, сноски нет
Requirement: Сноска о не учтённых позициях
Система SHALL показывать сноску «Не учтено позиций: N» при N больше нуля. N — число позиций разреза с currentValue null (в любой валюте) либо отрицательным в выбранной.
Источник (ненормативно): 3080. Примечание: при неполных данных «Структура портфеля» показывает «Доля недоступна», вкладка — доли по учтённым (3078).
Scenario: Сноска с числом позиций
- GIVEN в разрезе «Акции» в RUB есть акции на 600 и 400, акция со стоимостью -50 и акция без
currentValue - WHEN User открывает разрез «Акции» в RUB
- THEN показана сноска «Не учтено позиций: 2»
Scenario: Неоценённая позиция при смене валюты
- GIVEN есть акции на 100 USD и 200 RUB и одна акция без
currentValue - WHEN User выбирает USD
- THEN показаны акция на 100 $ с долей 100 % и сноска «Не учтено позиций: 1»
Scenario: Отрицательная позиция другой валюты
- GIVEN есть акции на 100 RUB и -50 USD
- WHEN User открывает разрез «Акции» в RUB
- THEN сноски нет
Scenario: Нет не учтённых позиций
- GIVEN все акции имеют положительную стоимость
- WHEN User открывает разрез «Акции»
- THEN сноски нет
Requirement: Одна валюта за раз
Система SHALL показывать значения вкладки в одной выбранной валюте, общей для всех разрезов и сохраняемой при их переключении, и при нескольких доступных валютах предоставлять выбор из них. Смена валюты SHALL пересчитывать разрез по позициям этой валюты. Система SHALL NOT конвертировать валюты и показывать общий итог нескольких валют.
Источник (ненормативно): #48
Scenario: Смена валюты
- GIVEN акции стоят 1 000 RUB и 100 USD, выбрана RUB
- WHEN User выбирает USD
- THEN разрез «Акции» показывает только акции в USD, сумму 100 $ и долю 100 %, без рублёвых значений
Scenario: Валюта сохраняется при смене разреза
- GIVEN выбрана USD в разрезе «Акции»
- WHEN User переключает разрез на «Облигации»
- THEN показаны облигации в USD
Requirement: Доступные валюты вкладки
Доступные валюты — валюты ненулевых currentValue позиций STOCK, BOND и FUND, включая отрицательные (для сноски). Валюта только с нулевой стоимостью в список не входит. Cash Balance и другие типы валюты не определяют. Список упорядочен по ISO-коду, сначала выбрана первая. При одной валюте или без валют выбор SHALL NOT показываться.
Источник (ненормативно): #48, подтверждено
Scenario: Начальная валюта
- GIVEN акции оценены в USD, облигации в RUB, а Cash Balance есть ещё в EUR и позиция
CURRENCYоценена в CHF - WHEN User впервые открывает вкладку «Концентрация»
- THEN в выборе RUB и USD, выбрана RUB, EUR и CHF в выборе нет
Scenario: Единственная валюта
- GIVEN все оценённые акции, облигации и фонды стоят в RUB
- WHEN User открывает вкладку «Концентрация»
- THEN выбора валюты нет, значения показаны в RUB
Scenario: Валюта только у позиции с нулевой стоимостью
- GIVEN акции стоят 100 RUB, а единственная позиция в USD — акция со стоимостью 0
- WHEN User открывает вкладку «Концентрация»
- THEN в списке только RUB, USD в нём нет
Scenario: Валюта только у отрицательной позиции
- GIVEN акции стоят 100 RUB, а единственная позиция в USD — акция со стоимостью -50
- WHEN User выбирает USD в разрезе «Акции»
- THEN показаны пустое состояние и сноска «Не учтено позиций: 1»
Scenario: Нет оценённых позиций
- GIVEN у всех позиций
STOCK,BONDиFUNDcurrentValueравенnull - WHEN User открывает вкладку «Концентрация»
- THEN выбора валюты нет, разрез показывает пустое состояние без валюты и сноску с числом таких позиций
Requirement: Независимый выбор валюты вкладки
Выбор валюты вкладки «Концентрация» SHALL быть независим от выбора валюты в «Структуре портфеля»: смена валюты в одном месте SHALL NOT менять валюту в другом. Если выбранная валюта вкладки пропала из списка после обновления Portfolio, система SHALL выбрать первую валюту списка.
Источник (ненормативно): #48, подтверждено
Scenario: Структура портфеля не влияет
- GIVEN в «Структуре портфеля» выбрана USD, а на вкладке «Концентрация» выбрана RUB
- WHEN User меняет валюту в «Структуре портфеля» на RUB и обратно
- THEN выбранная на вкладке валюта остаётся RUB
Scenario: Валюта пропала после обновления
- GIVEN на вкладке выбрана USD
- WHEN обновлённый Portfolio не содержит позиций
STOCK,BONDиFUNDв USD - THEN выбрана первая валюта обновлённого списка
Requirement: Топ-5 и строка «Прочее»
Система SHALL упорядочивать элементы разреза по сумме по убыванию. Если элементов не больше шести, каждый SHALL показываться строкой с названием, суммой и долей. Если семь и больше, SHALL показываться пять первых строк и строка «Прочее» с суммой, долей и числом остальных элементов («2 элемента», «5 элементов»).
Источник (ненормативно): #48
Scenario: Семь акций
- GIVEN в RUB есть семь акций с суммами 400, 250, 150, 100, 50, 30 и 20
- WHEN User открывает разрез «Акции» в RUB
- THEN показаны пять строк с суммами 400, 250, 150, 100, 50 и строка «Прочее» 50 ₽ (2 элемента) с долей 5 %
Scenario: Ровно шесть элементов
- GIVEN в RUB есть шесть акций с суммами 300, 250, 200, 150, 60 и 40
- WHEN User открывает разрез «Акции» в RUB
- THEN показаны шесть строк с долями 30 %, 25 %, 20 %, 15 %, 6 % и 4 %, строки «Прочее» нет
Scenario: Ровно пять элементов
- GIVEN в RUB есть пять акций с суммами 300, 250, 200, 150 и 100
- WHEN User открывает разрез «Акции» в RUB
- THEN показаны пять строк, строки «Прочее» нет
Scenario: Меньше пяти элементов
- GIVEN в RUB есть три акции
- WHEN User открывает разрез «Акции»
- THEN показаны три строки, строки «Прочее» нет
Requirement: Раскрытие строки «Прочее»
По нажатию на «Прочее», в том числе с клавиатуры, система SHALL раскрывать полный список остальных элементов в порядке ранжирования с суммой и долей; повторное нажатие сворачивает его. Раскрытие SHALL NOT менять пять первых строк и диаграмму. При показе разреза и смене валюты «Прочее» SHALL быть свёрнуто.
Источник (ненормативно): #48
Scenario: Раскрытие «Прочее»
- GIVEN показан разрез «Акции» из семи акций (400, 250, 150, 100, 50, 30, 20), «Прочее» свёрнуто
- WHEN User нажимает на строку «Прочее»
- THEN видны две акции с суммами 30 ₽ и 20 ₽ и долями 3 % и 2 %, пять первых строк прежние
Scenario: Повторное нажатие
- GIVEN «Прочее» раскрыто
- WHEN User нажимает на него ещё раз
- THEN список остальных элементов скрыт
Scenario: Смена валюты сворачивает «Прочее»
- GIVEN «Прочее» раскрыто в RUB
- WHEN User выбирает USD
- THEN «Прочее» свёрнуто
Requirement: Порядок элементов с равной суммой
Элементы разреза с равной суммой SHALL упорядочиваться по названию по возрастанию без учёта регистра: сначала названия, начинающиеся с цифры, затем с латинской буквы, затем с кириллической; внутри группы — по алфавиту, при совпадении названия — по порядку первой позиции элемента в Portfolio.
Источник (ненормативно): #48, подтверждено
Scenario: Равные суммы на границе пятой строки
- GIVEN в RUB семь акций: 400, 300, 200, 150, «Альфа» 100, «Бета» 100 и 50
- WHEN User открывает разрез «Акции»
- THEN «Альфа» пятая строка, а «Бета» и акция на 50 входят в «Прочее»
Scenario: Цифры, латиница и кириллица при равных суммах
- GIVEN в RUB три акции с равной суммой 100 и названиями «Сбер», «VK» и «X5»
- WHEN User открывает разрез «Акции»
- THEN порядок строк: «VK», «X5», «Сбер»
Requirement: Расчёт долей
Точная доля элемента — сумма его учитываемых позиций, делённая на сумму всех учитываемых позиций разреза в выбранной валюте; Cash Balance в расчёте не участвует. Точные доли элементов SHALL давать в сумме ровно 100 %, точная доля «Прочее» — равняться сумме точных долей остальных элементов, суммы — быть без округления.
Источник (ненормативно): #48
Scenario: Доля без денежных остатков
- GIVEN акции на 600 RUB и 400 RUB и Cash Balance 1 000 RUB
- WHEN User открывает разрез «Акции» в RUB
- THEN доли 60 % и 40 %
Scenario: Доля «Прочее»
- GIVEN семь акций с суммами 400, 250, 150, 100, 50, 30 и 20
- WHEN User открывает разрез «Акции» и раскрывает «Прочее»
- THEN доля «Прочее» 5 % равна сумме долей 3 % и 2 %
Requirement: Показ долей
Доля SHALL показываться, как в карточке позиции: округление до десятых в русской локали, середина — вверх (6,25 % — «6,3 %»), без «,0» («40 %», «66,7 %»). Положительная доля меньше 0,1 % показывается как «< 0,1 %». Суммарная доля топ-5 — в том же формате; сумма показанных долей может не быть 100 %.
Источник (ненормативно): 3079, 3080
Scenario: Три равные доли
- GIVEN три акции «А», «Б» и «В» по 100 RUB
- WHEN User открывает разрез «Акции»
- THEN каждая доля показана как «33,3 %»
Scenario: Округление, сумма показанных долей не равна 100 %
- GIVEN две акции на 1 RUB и 15 RUB, точные доли 6,25 % и 93,75 %
- WHEN User открывает разрез «Акции»
- THEN доли показаны как «93,8 %» и «6,3 %», хотя в сумме дают 100,1 %
Scenario: Очень малая доля
- GIVEN акции на 100 000 000 RUB и 1 RUB
- WHEN User открывает разрез «Акции» в RUB
- THEN доли показаны как «100 %» и «< 0,1 %», сумма второй акции остаётся 1 ₽
Requirement: Суммарная доля топ-5
Система SHALL показывать метрику «доля топ-5» — сумму точных долей пяти первых по сумме элементов разреза, в формате требования «Показ долей» — только когда элементов шесть и более. При пяти и менее элементах метрика SHALL NOT показываться.
Источник (ненормативно): #48
Scenario: Семь элементов
- GIVEN в RUB семь акций с суммами 400, 250, 150, 100, 50, 30 и 20
- WHEN User открывает разрез «Акции»
- THEN доли строк 40 %, 25 %, 15 %, 10 %, 5 % и «Прочее» 5 %, доля топ-5 равна 95 %
Scenario: Ровно шесть элементов
- GIVEN в RUB шесть акций с суммами 300, 250, 200, 150, 60 и 40
- WHEN User открывает разрез «Акции»
- THEN доля топ-5 равна 96 %, а шестая строка показана с долей 4 %
Scenario: Ровно пять элементов
- GIVEN в RUB пять акций с суммами 300, 250, 200, 150 и 100
- WHEN User открывает разрез «Акции»
- THEN метрика «доля топ-5» не показывается
Scenario: Один элемент
- GIVEN в RUB одна акция
- WHEN User открывает разрез «Акции»
- THEN метрика «доля топ-5» не показывается
Requirement: Группы «Сектор не указан» и «Эмитент не указан»
Система SHALL объединять учитываемые позиции с sector: null («Секторы») в элемент «Сектор не указан», а с issuer: null («Эмитенты») — в элемент «Эмитент не указан». Эти элементы SHALL ранжироваться и попадать в «Прочее» наравне с остальными, а их название SHALL быть видно в списке и диаграмме. Сектор и эмитент SHALL NOT выводиться из названия.
Источник (ненормативно): #48
Scenario: Позиции без эмитента в топе
- GIVEN в RUB акции эмитента «Сбер» на 300, эмитента «Газпром» на 300 и без эмитента на 200 и 100
- WHEN User открывает разрез «Эмитенты» в RUB
- THEN по убыванию: «Газпром» 300, «Сбер» 300, «Эмитент не указан» 300 (две позиции), группа ранжируется наравне с другими
Scenario: Группа без сектора в «Прочее»
- GIVEN у шести секторов суммы 600, 500, 400, 300, 200 и 100, у позиций без сектора сумма 50
- WHEN User раскрывает «Прочее» в разрезе «Секторы»
- THEN «Прочее» содержит шестой сектор 100 ₽ и «Сектор не указан» 50 ₽
Requirement: Подписи секторов
Система SHALL показывать известное значение sector русской подписью по требованию «Русские подписи известных секторов», неизвестное — как получено, без перевода и пояснений, в списке и текстовом эквиваленте диаграммы. Система SHALL NOT придумывать подписи сверх таблицы и собственную классификацию и SHALL NOT объединять позиции с разными sector.
Источник (ненормативно): #48, подтверждено
Scenario: Неизвестное значение сектора
- GIVEN облигация имеет
sectorother, которого нет в таблице подписей - WHEN User открывает разрез «Секторы»
- THEN элемент назван
other
Requirement: Русские подписи известных секторов
Система SHALL показывать sector подписью по таблице.
| Значение | Подпись |
|---|---|
consumer |
Потребительский сектор |
energy |
Энергетика |
financial |
Финансы |
health_care |
Здравоохранение |
industrials |
Промышленность |
it |
Информационные технологии |
materials |
Материалы |
real_estate |
Недвижимость |
telecom |
Телекоммуникации |
utilities |
Коммунальные услуги |
government |
Государственный сектор |
Scenario: Известный сектор
- GIVEN позиция имеет
sectorit - WHEN User открывает разрез «Секторы»
- THEN элемент назван «Информационные технологии»
Scenario: Государственные облигации
- GIVEN облигация имеет
sectorgovernment - WHEN User открывает разрез «Секторы»
- THEN элемент назван «Государственный сектор»
Requirement: Диаграмма распределения разреза
Система SHALL показывать диаграмму разреза с теми же элементами, в том же порядке и с теми же долями, что в списке: для разреза не более чем из шести элементов — сегмент на каждый элемент, для разреза из семи и более — пять сегментов и один сегмент «Прочее», одинаково для свёрнутого и раскрытого списка. Для пустого разреза диаграмма SHALL NOT показываться. Не учтённые позиции SHALL NOT входить в диаграмму.
Scenario: Семь элементов
- GIVEN семь акций с суммами 400, 250, 150, 100, 50, 30 и 20 RUB
- WHEN User открывает разрез «Акции» и раскрывает «Прочее»
- THEN диаграмма состоит из шести сегментов с долями 40 %, 25 %, 15 %, 10 %, 5 %, 5 % в порядке списка, как и при свёрнутом «Прочее»
Scenario: Ровно шесть элементов
- GIVEN шесть акций с суммами 300, 250, 200, 150, 60 и 40 RUB
- WHEN User открывает разрез «Акции»
- THEN диаграмма состоит из шести сегментов с долями 30 %, 25 %, 20 %, 15 %, 6 %, 4 %
Requirement: Центр диаграммы
Система SHALL показывать в центре диаграммы сумму разреза — точную сумму учитываемых позиций в выбранной валюте, а над ней, когда показывается метрика «доля топ-5», подпись «Топ-5 · N %», где N — доля в формате «Показ долей». Без метрики показывается только сумма. Эти значения SHALL входить в текстовый эквивалент диаграммы.
Источник (ненормативно): #48
Scenario: Центр при семи акциях
- GIVEN в RUB семь акций с суммами 400, 250, 150, 100, 50, 30 и 20
- WHEN User открывает разрез «Акции»
- THEN в центре «Топ-5 · 95 %» и «1 000 ₽»
Scenario: Центр при пяти акциях
- GIVEN в RUB пять акций с суммами 300, 250, 200, 150 и 100
- WHEN User открывает разрез «Акции»
- THEN в центре только «1 000 ₽»
Requirement: Строки без переходов
Строка списка в любом разрезе SHALL NOT вести на другую страницу; единственное действие строки — раскрытие и сворачивание «Прочее». Строки разреза «Эмитенты» SHALL NOT содержать логотипов.
Источник (ненормативно): #48
Scenario: Нажатие на строку акции
- WHEN User нажимает на строку акции в разрезе «Акции»
- THEN страница не меняется
Scenario: Строка эмитента
- WHEN User открывает разрез «Эмитенты»
- THEN строки показаны без логотипов
Requirement: Доступность диаграммы без цвета
Информация диаграммы SHALL NOT передаваться только цветом: каждый сегмент SHALL быть сопоставим со строкой списка по названию и доле, доступным как текст. Диаграмма SHALL иметь текстовый эквивалент с названиями, суммами и долями сегментов в порядке списка, доступный вспомогательным технологиям.
Scenario: Сегменты различимы без цвета
- GIVEN показан разрез из шести строк
- WHEN User читает диаграмму вспомогательной технологией
- THEN доступны название, сумма и доля каждого сегмента в порядке списка, сопоставление со строкой не требует различения цветов
Requirement: Пустое состояние разреза
Если выбранный разрез не содержит учитываемых элементов, система SHALL показывать пустое состояние с названием разреза и выбранной валютой (если валюты доступны) вместо списка, суммарной доли и диаграммы. Выбор валюты, если он показывается, и сноска при N больше нуля SHALL оставаться доступными.
Scenario: Нет облигаций в выбранной валюте
- GIVEN есть акции в RUB и облигации только в USD
- WHEN User открывает разрез «Облигации» в RUB
- THEN показано пустое состояние, выбор валюты доступен (валют две)
Scenario: Все позиции разреза отрицательные
- GIVEN в RUB есть только одна акция со стоимостью -50
- WHEN User открывает разрез «Акции» в RUB
- THEN показано пустое состояние и сноска «Не учтено позиций: 1»
Requirement: Предупреждение о неполных данных
Если meta обозначает неполноту по «Результат личного обновления остаётся наблюдаемым» из tbank-data-sync, вкладка SHALL показывать предупреждение «Данные неполные» над разрезом, считая разрезы по доступным данным. Страница SHALL NOT дублировать его; позиции без оценки его не вызывают.
Источник (ненормативно): #48, #48
Scenario: Неполный Portfolio
- GIVEN
metaобозначает неполноту, акции стоят 600 и 400 RUB - WHEN User открывает разрез «Акции»
- THEN показаны предупреждение «Данные неполные» и доли 60 % и 40 %
Scenario: Предупреждение не дублируется
- GIVEN
metaобозначает неполноту - WHEN User открывает вкладку «Концентрация»
- THEN на странице одно сообщение о неполноте — «Данные неполные» на вкладке
Scenario: Полный Portfolio с неоценённой позицией
- GIVEN Portfolio полный, одна акция без
currentValue - WHEN User открывает разрез «Акции»
- THEN предупреждения «Данные неполные» нет, есть сноска «Не учтено позиций: 1»
Requirement: Состояния Portfolio на вкладке «Концентрация»
Загрузка, ошибка, устаревание и неполнота Portfolio на вкладке «Концентрация» SHALL соответствовать требованию «Состояния и ошибки Portfolio на клиенте» из portfolio-view, как на вкладке «Позиции». Отсутствие сектора или эмитента у позиций SHALL NOT скрывать вкладку и менять успешность и свежесть Portfolio.
Scenario: Устаревший Portfolio
- GIVEN клиент получает Portfolio с
isStale: true - WHEN User открывает вкладку «Концентрация»
- THEN разрезы рассчитаны по этому Portfolio, устаревание обозначено так же, как на вкладке «Позиции»
Scenario: Сектор и эмитент отсутствуют
- GIVEN у всех позиций
sector: nullиissuer: null, Portfolio успешен - WHEN User открывает разрезы «Секторы» и «Эмитенты»
- THEN каждый разрез содержит один элемент «Сектор не указан» или «Эмитент не указан» с долей 100 %