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-7 | |
| S1: FR2.2-4 | Пользователь просматривает рекламные предложения. | Интерфейс отображает рекламный баннер с каруселью предложений. По нажатию на баннер интерфейс раскрывает полную информацию о выбранном предложении. | 2 | Реализовано | |
| 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.4 (текущая редакция) · репозиторий
booking.mobile.flutter(Flutter/Dart) · commit2b93d4f, веткаorigin/main· дата сверки 2026-09-08 · предыдущая сверка: 2026-07-15, commitdad0c65, веткаdev· якорь: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(модалка деталей баннера, список опций). Между сверками: коммитыd757e9c(03.08.26, “search params”),53bbb3a(07.08.26, “fix option range names + tests”),09af204(14.08.26, “new filters + my orders rehaul” — в основном 2.3, частично затронул общие виджеты),0d2c5cb(31.08.26, “dart format” — только форматирование, реальных изменений не вносит). Гайдбук не передавался — маршрутизация без сверки с гайдбуком. Статусы и адресация — предложение аудитора, требуют валидации человеком. Адресаты: бизнесовые → Бизнес (Герман), программные/технические → Разработка (Владислав); для новых вопросов этой сверки — просто «Бизнес»/«Разработка» без имён (см. правила прогона).
Открытые вопросы
| ID | Источник | Вопрос | Кому | Статус | Рекомендации | Итоговое решение |
|---|---|---|---|---|---|---|
| OQ2.2-7 | FR2.2-3 | Требование говорит (актуальная редакция FR2.2-3): диалог выбора времени открывается «без заголовка», подтверждение — «системная локализованная кнопка “ОК”», отмена — «Отмена». В коде (правки после 03.08.26, в комментариях прямо помечены как ответ на «BRD 2.2 FR-2.2-3 / OQ2.2-4») диалог теперь показывает заголовок «Выберите время» и жёстко заданную (не системную) кнопку подтверждения «Применить»; кнопка отмены тоже стала жёстко заданной «Отмена» вместо системной локализации. То есть разработка реализовала именно то, что просил OQ2.2-4 по состоянию на 15–16.07.26 — но текущая редакция FR2.2-3 (после правки BRD от 29.07.26) уже описывает противоположное поведение («без заголовка» + «ОК»). BRD и код снова разошлись, теперь в обратную сторону: похоже, правка BRD от 29.07 и правка кода в августе не были согласованы друг с другом. lib/src/core/utils/widgets/double_picker_dialog.dart:162-165 (заголовок «Выберите время»), :175-176 (жёсткая «Отмена»), :188-192 (жёсткое «Применить», комментарий со ссылкой на OQ2.2-4) | Бизнес | Open | Согласовать один вариант диалога и синхронизировать BRD с кодом: либо снова обновить FR2.2-3 под текущее поведение (заголовок «Выберите время» + кнопка «Применить», что и просил исходный OQ2.2-4), либо поручить разработке откатить диалог к варианту «без заголовка» + системная «ОК», который сейчас зафиксирован в тексте FR2.2-3. Заодно уточнить, нужна ли системная локализация кнопки «Отмена» (сейчас жёстко захардкожен русский текст). | |
| 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 |