BRD Mobile 2.2 Параметры поиска
Направление работ: Mobile
Код раздела: 2.2
Раздел: Поиск > Параметры поиска
Статус: Готов
Ответственный: Панкова Л.А.
Версия: 0.4
Обновлено: 15.07.26
1. Назначение
Раздел описывает экран мобильного приложения, на котором пользователь указывает дату, время и дополнительные параметры для поиска подходящих площадок.
2. Ключевые понятия
Параметры поиска - дата, время и дополнительные опции, по которым пользователь выполняет поиск площадок.
Сфера и опции - выбранное направление и унаследованный им набор параметров поиска.
3. Scope
Входит
S1: Параметры поиска и переход к следующему шагу
S2: Выбор параметров в соответствии с опциями выбранной сферы
S3: Поиск по услугам (на будущую реализацию)
Не входит
4. BR
Указаны в пункте 4 разделов Back 8.2.1 Сферы и Опции, Back 2.2 Площадки партнеров, Back 2.6 Цены и Back 3.2 Процессинг заказов.
5. Функциональные требования (UC + FR)
| ID | Сценарий | Функциональное требование | BR | Вес | Статус |
|---|---|---|---|---|---|
| S1: FR2.2-1 | Пользователь выбрал сферу и переходит к настройке поиска. | Интерфейс открывает экран параметров поиска и отображает рекламные предложения, параметры выбранной сферы, календарь и действия “Пропустить” и “Найти”. | 1 | Реализовано | |
| S1: FR2.2-2 | Пользователь выбирает дату. | Интерфейс всегда отображает инлайн-календарь, по умолчанию выделяет текущую дату и позволяет выбрать доступную дату начиная с текущей, но не позднее окончания горизонта бронирования, установленного для выбранной сферы. Если лимиты бронирования для сферы не заданы, горизонт выбора даты составляет 360 дней. | 1 | Реализовано · #OQ2.2-2 | |
| S1: FR2.2-3 | Пользователь выбирает время. | При выборе поля “Время” интерфейс открывает диалог без заголовка, содержащий два барабана с часовыми значениями в формате HH:00 и панель действий. Пользователь задаёт время начала и окончания периода. Для подтверждения выбора интерфейс отображает системную локализованную кнопку “ОК”, для выхода без сохранения изменений — кнопку “Отмена”. | 1 | Частично · #OQ2.2-3 · #OQ2.2-4 | |
| S1: FR2.2-4 | Пользователь просматривает рекламные предложения. | Интерфейс отображает рекламный баннер с каруселью предложений. По нажатию на баннер интерфейс раскрывает полную информацию о выбранном предложении. | 2 | Реализовано · #OQ2.2-5 | |
| S1: FR2.2-5 | Пользователь пропускает выбор параметров. | По действию “Пропустить” интерфейс открывает раздел Mobile 2.3 “Список вариантов” без выбранной даты. | 1 | Реализовано | |
| S1: FR2.2-6 | Пользователь заполнил параметры поиска и запускает поиск. | По действию “Найти” интерфейс открывает раздел Mobile 2.3 “Список вариантов” с выбранными датой, временем и дополнительными параметрами. | 1 | Реализовано | |
| S2: FR2.2-7 | Пользователь выбрал сферу с одной опцией, предусматривающей ввод числового значения. | Интерфейс отображает поле для ввода числового значения и поле “Время”. Название поля для ввода значения определяется настройками выбранной сферы. | 1 | Частично · #OQ2.2-6 | |
| S2: FR2.2-8 | Пользователь выбрал сферу с несколькими опциями, одна из которых предусматривает ввод числового значения. | Интерфейс отображает поле выбора опции, поле для ввода числового значения и поле “Время”. Названия полей определяются настройками выбранной сферы. | 1 | Частично · #OQ2.2-6 | |
| S2: FR2.2-9 | Пользователь выбрал сферу с опцией, не предусматривающей ввод числового значения. | Интерфейс отображает поле выбранной опции и поле “Время”. Название поля опции определяется настройками выбранной сферы. | 1 | Частично · #OQ2.2-6 | |
| S2: FR2.2-10 | Пользователь выбирает опцию сферы. | Интерфейс открывает список опций, настроенных для выбранной сферы, позволяет выбрать один вариант и отображает выбранное значение. Название поля выбора определяется настройками сферы. | 1 | Реализовано · #OQ2.2-6 | |
| S3: FR2.2-11 | Пользователь выполняет поиск по услугам (на будущую реализацию). | Интерфейс отображает действие “Поиск по услугам” и позволяет найти услугу по поисковому запросу. | 3 | Не реализовано |
6. Открытые вопросы
| ID | Источник | Вопрос | Кому | Статус |
|---|---|---|---|---|
| OQ2.2-1 |
Сверка BRD ↔ код. BRD 2.2 v0.1 (обновлён 15.07.26) · репозиторий
booking.mobile.flutter(Flutter/Dart) · commitdad0c65, веткаdev· дата сверки 2026-07-15 · якорь:lib/src/feature/search/widget/search_parameters_sphere/sphere_search_screen.dart(экран сфер → открытие параметров),lib/src/feature/rooms_search/widget/search_parametres_modal/(шторка параметров: баннеры, календарь, опции, «Пропустить»/«Найти»),lib/src/feature/rooms_search/widget/search_parametres_modal/options_panel.dart(поля опций/кол-ва/время),lib/src/core/utils/widgets/double_picker_dialog.dart(барабан времени),lib/src/feature/search_params/{bloc,model,data}(состояние и хранение параметров),lib/src/feature/search/model/sphere.dart+sphere_option.dart(сфера и её опции),lib/src/core/utils/widgets/modal_bottom_sheet.dart(модалка деталей баннера, список опций). Гайдбук не передавался — маршрутизация без сверки с гайдбуком. Статусы и адресация — предложение аудитора, требуют валидации человеком. Адресаты: бизнесовые → Бизнес (Герман), программные/технические → Разработка (Владислав).
Открытые вопросы
| ID | Источник | Вопрос | Кому | Статус | Рекомендации | Итоговое решение |
|---|---|---|---|---|---|---|
| OQ2.2-2 | FR2.2-2 | Требование говорит: интерфейс «позволяет выбрать другую доступную дату» (без указания верхней границы). В коде инлайн-календарь ограничивает выбор снизу сегодняшним днём (minDate: DateTime.now()), а сверху — горизонтом бронирования сферы (maxDate: now + maxBookingDays, где maxBookingDays — максимум из defaultLimitDays и defaultLimitMonth*30; при отсутствии лимитов — 360 дней). Код накладывает ограничение на глубину выбора даты, которого в BRD нет. lib/src/feature/rooms_search/widget/search_parametres_modal/search_parametres_modal.dart:483-487; lib/src/feature/search/model/sphere.dart:52-56 | Бизнес (Герман) | Open | Подтвердить, что ограничение горизонта выбора даты лимитами сферы (и дефолт 360 дней при их отсутствии) — ожидаемое поведение, и при необходимости зафиксировать его в FR2.2-2. | Подтвердить, что ограничение горизонта выбора даты лимитами сферы (и дефолт 360 дней при их отсутствии) — ожидаемое поведение Об бизнеса: внесли уточнение в BRD |
| OQ2.2-3 | FR2.2-3 | Требование говорит: при выборе времени пользователь задаёт начало и окончание периода «в формате с HH:MM до HH:MM». В коде барабан времени состоит только из часовых значений (List<String>.generate(24, (index) => '$index:00')) — минуты выбрать нельзя, сохранённый период всегда кратен часу и отображается как H:00 - H:00 (без слов «с … до …»). lib/src/feature/rooms_search/widget/search_parametres_modal/options_panel.dart:158-178 | Бизнес (Герман) | Open | Уточнить требуемую гранулярность времени: если поиск должен поддерживать минуты (HH:MM) — доработать барабан; если достаточно целых часов — привести формулировку FR2.2-3 к фактическому HH:00. | достаточно целых часов — привести формулировку FR2.2-3 к фактическому HH:00Об бизнеса: внесли уточнение в BRD |
| OQ2.2-4 | FR2.2-3 | Требование говорит: интерфейс открывает барабан «Выберите время» и сохраняет выбор по действию «Применить». В коде у диалога барабана нет заголовка «Выберите время» (showDoublePicker рисует только два барабана + панель кнопок), а кнопка подтверждения — системная локализованная «ОК» (localizations.okButtonLabel), не «Применить»; вторая кнопка — «Отмена» (cancelButtonLabel). lib/src/core/utils/widgets/double_picker_dialog.dart:19-44,161-174 | Разработка (Владислав) | Open | Привести подписи барабана к BRD (заголовок «Выберите время», кнопка «Применить») либо согласовать текущие тексты («ОК»/без заголовка) как канонические и обновить FR2.2-3. | Привести подписи барабана к BRD Об бизнеса: внесли уточнение в BRD |
| OQ2.2-5 | FR2.2-4 | Требование говорит: по нажатию на баннер интерфейс раскрывает полную информацию о выбранном предложении. В коде модалка деталей баннера при пустом тексте подставляет заглушку-«рыбу» (русский lorem ipsum: «Далеко-далеко за словесными горами…»), которая может уйти в прод как реальное описание акции. Сам просмотр деталей по тапу реализован (карусель → BannerDetailModal). lib/src/core/utils/widgets/modal_bottom_sheet.dart:778-786 | Разработка (Владислав) | Open | Заменить фолбэк-заглушку на нейтральный текст либо пустое состояние, чтобы у баннера без описания не показывалась «рыба». | Заменить фолбэк-заглушку на пустое состояние перед релизом |
| OQ2.2-6 | FR2.2-7, FR2.2-8, FR2.2-9, FR2.2-10 | Требование говорит: в зависимости от опций сферы интерфейс показывает конкретные именованные поля — «Кол-во человек» (FR2.2-7), «Вид работ» + «Кол-во человек» (FR2.2-8) или «Вид работ» (FR2.2-9), а выбор вида работ ведётся из списка опций сферы (FR2.2-10). В коде фиксированных полей «Вид работ»/«Кол-во человек» нет: панель опций строится обобщённо от двух признаков — isOptionMoreThanOne (у сферы >1 опции) и selectedOption.isRange; подписи полей приходят из конфигурации сферы (optionRangeTrueName/optionRangeFalseName, option.name) с запасными хинтами «Выбрать кол-во человек» / «Выберите вид работ». Три сценария достигаются так: одна опция + range → числовое поле кол-ва (цифровая клавиатура, TextInputType.number) + время; >1 опции + range → выбор опции + числовое поле + время; опция без range → выбор/показ опции + время. Выбор вида работ реализован (OptionsModalView по sphereOptions). То есть именно тексты «Вид работ»/«Кол-во человек» кодом не гарантируются — зависят от настройки сферы в админке. lib/src/feature/rooms_search/widget/search_parametres_modal/options_panel.dart:36-206; lib/src/feature/search/model/sphere.dart:60-69; lib/src/feature/search_params/bloc/search_params_bloc.dart:316-339; lib/src/core/utils/widgets/field.dart:94-95; lib/src/core/utils/widgets/modal_bottom_sheet.dart:668-706 | Бизнес (Герман) | Open | Подтвердить, что обобщённый механизм опций сферы (признак range + подписи из админки) — ожидаемая реализация FR2.2-7…FR2.2-10, и что конкретные названия полей «Вид работ»/«Кол-во человек» задаются конфигурацией сферы, а не зашиты в приложении. При необходимости зафиксировать, какие подписи должны быть гарантированы независимо от настройки. | Подтвердить, что обобщённый механизм опций сферы (признак range + подписи из админки) — ожидаемая реализация FR2.2-7…FR2.2-10, и что конкретные названия полей «Вид работ»/«Кол-во человек» задаются конфигурацией сферы, а не зашиты в приложении. Об бизнеса: внесли уточнение в BRD |