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) · commit dad0c65, ветка 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-2FR2.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-3FR2.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-4FR2.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-5FR2.2-4Требование говорит: по нажатию на баннер интерфейс раскрывает полную информацию о выбранном предложении. В коде модалка деталей баннера при пустом тексте подставляет заглушку-«рыбу» (русский lorem ipsum: «Далеко-далеко за словесными горами…»), которая может уйти в прод как реальное описание акции. Сам просмотр деталей по тапу реализован (карусель → BannerDetailModal).
lib/src/core/utils/widgets/modal_bottom_sheet.dart:778-786
Разработка (Владислав)OpenЗаменить фолбэк-заглушку на нейтральный текст либо пустое состояние, чтобы у баннера без описания не показывалась «рыба».Заменить фолбэк-заглушку на пустое состояние перед релизом
OQ2.2-6FR2.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

0 items under this folder.