Направление работ: Mobile

Код раздела: 2.3

Раздел: Поиск > Список вариантов

Статус: Готов

Ответственный: Панкова Л.А.

Версия: 0.4

Обновлено: 15.07.26


1. Назначение

Раздел описывает экран мобильного приложения со списком площадок, соответствующих параметрам поиска пользователя.

Экран позволяет просмотреть найденные варианты, выполнить поиск по названию или метро, изменить порядок выдачи и параметры поиска, а также перейти к карточке площадки, фильтрации или просмотру результатов на карте.

2. Ключевые понятия

Список вариантов - экран мобильного приложения с площадками, доступными по заданным или пропущенным параметрам поиска.

Площадка партнера - помещение, доступное пользователю для просмотра и последующего заказа.

3. Scope

Входит

S1: Поиск списка вариантов

S2: Список вариантов, если не заполняли параметры поиска

S3: Дополнительные состояния

Не входит

4. BR

Указаны в пункте 4 разделов Back 2.2 Площадки партнеров, Back 2.6 Цены и Back 3.2 Процессинг заказов.

5. Функциональные требования (UC + FR)

IDСценарийФункциональное требованиеBRВесСтатус
S1: FR2.3-1Пользователь переходит к результатам поиска площадок.Интерфейс открывает экран “Список вариантов” и отображает найденные площадки с учетом заданных параметров поиска.1Реализовано \ OQ2.3-12
S1: FR2.3-2Пользователь просматривает найденные площадки.Интерфейс отображает для каждой площадки фото, действие добавления в избранное, название, объект, площадь, расстояние, метро, рейтинг, условие предоплаты или работы по заявке и цену.

Интерфейс показывает процент стоимости, который пользователь может оплатить M-баллами, и размер кэшбэка M-баллами.

Для горящего предложения интерфейс отображает плашку “Горящее предложение” с размером скидки и цену до и после применения скидки.
1Частично \ OQ2.3-2, OQ2.3-3
S1: FR2.3-3Пользователь просматривает результаты по выбранным параметрам.Интерфейс отображает выбранные параметры над списком и показывает найденные варианты.1Частично \ OQ2.3-5
S1: FR2.3-4Пользователь выбирает площадку из списка.Интерфейс открывает раздел услуге” для выбранной площадки.1Реализовано \ OQ2.3-13
S1: FR2.3-5Пользователь выбирает фильтрацию или просмотр результатов на карте.Интерфейс переводит пользователя в раздел Mobile 2.3.1 “Фильтрация списка” или Mobile 2.3.2 “Отображение на карте” в зависимости от выбранного действия.1Реализовано \ OQ2.3-14
S2: FR2.3-6Пользователь пропустил заполнение параметров поиска.Интерфейс отображает экран “Список вариантов” без выбранных параметров, действие “Выбрать дату” и цену каждой площадки в формате “От N ₽“.1Частично \ OQ2.3-6
S2: FR2.3-7Пользователь выполняет поиск внутри списка.При выборе поля “Название или метро” интерфейс активирует его, открывает клавиатуру и обновляет список в соответствии с введенным названием площадки или метро.1Частично \ OQ2.3-7
S2: FR2.3-8Пользователь изменяет порядок выдачи.Интерфейс открывает окно “Какие площадки показывать сначала?” с вариантами “Стоимость по возрастанию”, “Стоимость по убыванию”, “По популярности”, “По рейтингу” и “Рядом со мной” и применяет выбранный порядок к списку.2Реализовано
S2: FR2.3-9Пользователь меняет дату или опции поиска.Интерфейс открывает окно параметров поиска с рекламным баннером, выбором количества человек, времени и даты, а также действиями “Пропустить” и “Найти”.1Реализовано \ OQ2.3-15
S2: FR2.3-10Пользователь применяет выбранные дату, время или опции.По действию “Найти” интерфейс обновляет список, отображает выбранные параметры над ним, а в карточках - наличие строгого промежутка и конкретные цены.1Частично \ OQ2.3-4
S3: FR2.3-11Выбранный временной промежуток занят на всех площадках.Интерфейс отображает окно “Нет доступных площадок” с ближайшим доступным временным промежутком и вопросом о продолжении поиска, а также действия “Назад” и “Да”.1Не реализовано \ OQ2.3-1
S3: FR2.3-12Выполняется загрузка списка вариантов.До получения данных интерфейс отображает скелетоны карточек площадок. Элементы управления отображаются без плейсхолдеров и доступны пользователю сразу.1Частично \ OQ2.3-8

6. Открытые вопросы

Пин контекста. BRD 2.3 «Список вариантов» v0.1 · репозиторий booking.mobile.flutter (Flutter/Dart) · commit dad0c65 / ветка dev · дата сверки 2026-07-15 · якорь: lib/src/feature/rooms_search/ (экран widget/rooms_search_screen.dart, карточка widget/room_card.dart, модели model/room.dart, model/room_price.dart, model/sort_options.dart, блок bloc/rooms_search_bloc.dart, модалка параметров widget/search_parametres_modal/), смежные lib/src/feature/search_params/, lib/src/feature/map_search/ (переход на карту — точка перехода 2.3.2). Маршрутизация без сверки с гайдбуком (гайдбук не передан) — вопросы «как должно быть» уходят в Бизнес со статусом Open, чистые дефекты/техуборка — «Закрывает PM». Адресаты: бизнес → Герман, разработка → Владислав. Сводка: открытых вопросов 11 (Open бизнесу 4 · Open разработке 5 · Закрывает PM 2) · подтверждено веса 1 — 4 (OQ2.3-12…15) · отрезано находок обратного прохода ~4 (закомментированный легаси-код и экспериментальные виджеты). Вопросы веса 1 по нереализованному/частичному — в начале таблицы.

IDИсточникВопросКомуСтатусРекомендацииИтоговое решение
OQ2.3-1Код FR2.3-11Требование говорит: если выбранный промежуток занят на всех площадках, показать окно «Нет доступных площадок» с ближайшим доступным временем и вопросом о продолжении поиска (кнопки «Назад» и «Да»). В коде такого окна на экране списка нет. Пустой список показывает заглушку-«рыбу»: картинка + текст «Дизайн в пути… Дениска сделает очень скоро!)». Окно «Нет доступных площадок» есть только на экране карты (другой раздел), причём без ближайшего слота и кнопок «Назад»/«Да». \ rooms_search_screen.dart:616-626; окно на карте — map_search/widget/map_search_screen.dart:936Разработка (Владислав)Open(А) Реализовать окно «Нет доступных площадок» на экране списка: ближайший доступный промежуток + «Назад»/«Да» — рекомендуется (иначе сценарий S3 не работает, пользователь видит текст-заглушку). (Б) Оставить как есть — не годится для релиза. Бизнесу подтвердить текст и логику «ближайшего промежутка».Вопрос к бизнесу и бэку, мобильный клиент не обладает достаточной инфорацией для реализации этого требования
От бизнеса: инициировать вопрос к Бэку
OQ2.3-2Код FR2.3-2Требование говорит: для горящего предложения в карточке показать плашку «Горящее предложение», размер скидки и цену до и после применения скидки. В коде карточка показывает только плашку с текстом скидки вида «-20%» и иконкой огня; слова «Горящее предложение» нет, цена показывается одна (итоговая), «цены до скидки» на карточке нет. Поле с ценой до скидки (priceBeforeDiscount) приходит из API, но нигде в карточке не выводится. \ room_card.dart:179-224 (плашка), room_card.dart:522 (единственная цена); признак горящего — rooms_search_screen.dart:589-592Бизнес (Герман)Open(А) Достроить карточку под BRD: подпись «Горящее предложение» + старая/новая цена — рекомендуется, если это утверждённый вид карточки. (Б) Признать текущий вид (бейдж «-N%») достаточным и привести BRD в соответствие коду. Нужно продуктовое решение о составе карточки горящего предложения.Все там есть в карточке, и старая цена и иконка огня
OQ2.3-3Код FR2.3-2Требование говорит: в карточке площадки показывать «условие предоплаты или работы по заявке». В коде карточка списка этого не показывает. Данные у модели есть (mightBePrepay, onlinePrepaymentPercent), но выводятся только на экране деталей площадки (раздел 2.4), а в карточке списка не рендерятся. \ карточка — room_card.dart:130-601 (поля не используются); поля модели — model/room.dart:73,83; вывод в 2.4 — room_details/widget/room_details_screen.dart:1537-1541Бизнес (Герман)Open(А) Добавить в карточку списка индикатор «предоплата / работа по заявке» — рекомендуется, если это влияет на выбор до входа в карточку. (Б) Убрать требование из карточки списка (оставить только в 2.4) и поправить BRD. Нужно решение продукта.добавить в карточку списка индикатор «предоплата / работа по заявке»
OQ2.3-4Код FR2.3-10Требование говорит: после «Найти» в карточках отображается «наличие строгого промежутка» и конкретные цены. В коде конкретные цены показываются (priceDisplayText), а индикатор «строгого промежутка» на карточках списка никогда не выводится: параметр time карточки при построении списка всегда передаётся null с пометкой «Not available in room search». В самой карточке верстка под этот бейдж есть, но данными он не наполняется. \ rooms_search_screen.dart:570,641 (time: null), верстка бейджа — room_card.dart:386-421Разработка (Владислав)Open(А) Прокинуть в карточку признак/значение строгого промежутка из данных поиска — рекомендуется (верстка уже готова, не хватает данных). (Б) Если строгий промежуток не показывается на карточке списка сознательно — уточнить у бизнеса и поправить BRD. Бизнесу подтвердить, что именно показывает индикатор.верстка уже готова, не хватает данных
От бизнеса: инициировать вопрос к Бэку
OQ2.3-5Код FR2.3-3Требование говорит: над списком отображаются выбранные параметры. В коде над списком рендерится только один чип — дата+время (или «Выбрать дату» / «Поиск без даты»). Чипы остальных выбранных параметров (цена, площадь, характеристики, выбранная опция/кол-во человек) отключены — код их построения закомментирован. \ активный чип даты — rooms_search_screen.dart:684-729,881-909; закомментированные чипы параметров — rooms_search_screen.dart:733-879Разработка (Владислав)Open(А) Включить отображение остальных выбранных параметров над списком — рекомендуется, если BRD трактует «параметры» шире даты/времени. (Б) Если для 2.3 достаточно чипа даты/времени (а фильтры — раздел 2.3.1) — сузить формулировку BRD. Нужно решение по объёму «параметров».Включить отображение остальных выбранных параметров над списком
OQ2.3-6Код FR2.3-6Требование говорит: при пропуске параметров показать действие «Выбрать дату» и цену «От N ₽». В коде цена «От N ₽» показывается корректно (priceDisplayText), но при пропуске параметров чип над списком подписан «Поиск без даты», а не «Выбрать дату» (текст «Выбрать дату» появляется только когда дата вообще не выбиралась и режим пропуска не включён). Нажатие на чип всё равно открывает выбор даты. \ «От N ₽» — model/room_price.dart:62-73; подпись чипа — model/search_params.dart:85-92, rooms_search_screen.dart:1385-1405Бизнес (Герман)Open(А) Привести подпись действия в режиме пропуска к «Выбрать дату» — рекомендуется, если BRD фиксирует именно этот текст. (Б) Оставить «Поиск без даты» и поправить BRD. Расхождение только в тексте действия, поведение (открытие календаря) работает.Привести подпись действия в режиме пропуска к «Выбрать дату»
OQ2.3-7Код FR2.3-7Требование говорит: при выборе поля поиска оно активируется с подсказкой «Найти». В коде поле поиска по названию/метро работает (ввод с задержкой 300 мс обновляет список, клавиатура открывается штатно), но подсказка (placeholder) всегда «Название или метро»; отдельной подсказки «Найти» при активации нет, кнопки/действия «Найти» на клавиатуре тоже не задано. \ rooms_search_screen.dart:366-402 (поле, hint «Название или метро»), rooms_search_screen.dart:376-386 (обновление списка)Бизнес (Герман)Open(А) Добавить подсказку/действие «Найти» при активации поля — если это утверждённое поведение. (Б) Признать текущую подсказку достаточной и убрать «Найти» из BRD — рекомендуется (расхождение косметическое). Нужно решение дизайна/продукта по тексту.Признать текущую подсказку достаточной и убрать «Найти» из BRD — рекомендуется (расхождение косметическое)
От бизнеса: внесли изменения в BRD
OQ2.3-8Код FR2.3-12Требование говорит: при загрузке показывать плейсхолдеры элементов управления и карточек. В коде при первичной загрузке показываются скелетоны только карточек (6 «пустых» карточек через Skeletonizer); элементы управления (строка поиска, кнопки сортировки/фильтра, чип даты) при этом отрисованы обычным образом, без плейсхолдеров. \ rooms_search_screen.dart:601-611 (скелетоны карточек), панель управления — rooms_search_screen.dart:322-543 (без скелетонов)Разработка (Владислав)Open(А) Добавить плейсхолдеры и для элементов управления — если BRD требует буквально. (Б) Признать скелетон карточек достаточным и поправить BRD — рекомендуется (элементы управления доступны сразу, что удобнее).Признать скелетон карточек достаточным и поправить BRD
От бизнеса: внесли изменения в BRD
OQ2.3-9Код вне BRDЧто нашли: состояния «пусто» и «ошибка» на экране списка используют временные/отладочные тексты вместо продуктовых. Ошибка загрузки показывает англоязычную строку failed to fetch posts; пустой список — заглушку «Дизайн в пути… Дениска сделает очень скоро!)». Оба текста попадают в продуктовую ветку экрана. \ ошибка — rooms_search_screen.dart:551; пусто — rooms_search_screen.dart:616-626Закрывает PMЗакрывает PMЗакрываю сам: завести тикет в Bitrix на замену отладочных текстов состояний «ошибка»/«пусто» продуктовыми (связать с OQ2.3-1 — пустое состояние S3). Продуктового выбора нет, это дефект-заглушка.От бизнеса: ожидаем реализации после Back: 7.1
OQ2.3-10Код вне BRDЧто нашли: пагинация («бесконечный скролл») работает на «зашитых» значениях, а не на данных пагинации от бэкенда. Общее число элементов жёстко задано 10000, флаг «показать догрузку» жёстко false; реальные значения pagination.itemsCount закомментированы. Догрузка по скроллу (порог 90% списка) шлёт запросы до тех пор, пока сервер не вернёт пусто. \ rooms_search_bloc.dart:210,218 (хардкод), rooms_search_bloc.dart:255,270; триггер скролла — rooms_search_screen.dart:966-977Разработка (Владислав)Open(А) Вернуть пагинацию на реальные itemsCount/флаг догрузки от ответа сервера — рекомендуется (иначе индикатор догрузки и условие «загружены все варианты» некорректны). (Б) Осознанно оставить «до пустого ответа» — тогда описать это поведение. Вопрос о корректности механизма пагинации.Исправить когда будет пагинация
OQ2.3-11Код вне BRDЧто нашли: в карточке есть неактивная кнопка (область), которая по нажатию только печатает в лог «кнопка купить» и ничего не делает. Отдельно: расстояние в карточку передаётся посчитанным (distance/1000 + «km»), но сама карточка это значение игнорирует и рисует room.distance напрямую с суффиксом «км» — единица измерения и значение могут расходиться. \ мёртвая кнопка — room_card.dart:507-510; расстояние — rooms_search_screen.dart:572-574 (проп) vs room_card.dart:452-453 (показ)Закрывает PMЗакрывает PMЗакрываю сам: тикет в Bitrix — убрать мёртвую кнопку «купить» и согласовать единицу/источник расстояния (проп vs room.distance). Техуборка, продуктового решения не требует.убрать мёртвую кнопку «купить»
OQ2.3-12Код FR2.3-1Что подтверждено: при переходе к результатам открывается экран «Список вариантов» и загружает площадки. Экран при создании шлёт события updateRooms + updateRoomsPrices; список запрашивается по выбранной сфере и городу, цены — по дате/времени/опции. Найденные площадки рендерятся списком карточек. \ rooms_search_screen.dart:37-91 (инициализация), rooms_search_bloc.dart:195-222 (запрос по сфере/городу), список — rooms_search_screen.dart:556-599. Нюанс: сам список фильтруется по сфере+городу, дата/время влияют на расчёт цены, а не на состав списка.Подтверждено
OQ2.3-13Код FR2.3-4Что подтверждено: нажатие на карточку открывает раздел 2.4 «Информация о площадке/услуге» для выбранной площадки — навигация на RoomDetailsRoute с передачей площадки и параметров поиска. \ room_card.dart:143-161Подтверждено
OQ2.3-14Код FR2.3-5Что подтверждено: есть оба перехода — кнопка фильтров открывает модалку фильтрации (2.3.1), плавающая кнопка карты ведёт на экран карты (2.3.2). \ фильтры — rooms_search_screen.dart:495-538; карта — rooms_search_screen.dart:942-945. Детально разделы 2.3.1/2.3.2 не сверялись (вне scope).Подтверждено
OQ2.3-15Код FR2.3-9Что подтверждено: окно параметров поиска содержит все элементы из требования — рекламный баннер (карусель из репозитория баннеров), выбор количества человек/вида работ, выбор времени, выбор даты (календарь), кнопки «Пропустить» и «Найти». \ баннер — search_parametres_modal.dart:261-405; кнопки — search_parametres_modal.dart:541,546; кол-во человек — options_panel.dart:93-106; время — options_panel.dart:147-204; дата — search_parametres_modal.dart:437-513. Также подтверждено (FR2.3-8, вес 2): окно «Какие площадки показывать сначала?» с 5 вариантами сортировки один-в-один с BRD — rooms_search_screen.dart:428-479, model/sort_options.dart:3-8.Подтверждено

2 items under this folder.