Направление работ: Mobile Код раздела: 5.9 Раздел: Профиль > Ограничения Статус: черновик Ответственный: Панкова Л.А. Версия: 0.1 Обновлено: 13.07.26
1. Назначение
Раздел позволяет клиенту просматривать ограничения, установленные партнерами сервиса, и понимать последствия каждого ограничения.
Интерфейс показывает список ограничений по партнерским зонам, причину и сумму сбора, если она начислена, а также доступные действия с ограничением.
Раздел зависит от Back: 1.3.2 Характеристики клиента. Оспаривание ограничения описывается в соседних разделах Mobile 5.9.1 и 5.9.2.
2. Ключевые понятия
Ограничение — примененная партнером характеристика клиента, которая изменяет доступность бронирования или условия оказания услуг в конкретной партнерской зоне.
Блокировка клиента — ограничение, при котором клиент не может совершать заказы в конкретной партнерской зоне.
Сбор — начисленная клиенту сумма, связанная с нарушением условий партнера или заказа.
Карточка ограничения — представление ограничения в списке с данными партнера, причиной, суммой сбора и доступными действиями.
3. Scope
Входит
S1: Ограничения
S2: Виды карточек ограничений
S3: Дополнительные состояния экрана
Не входит
4. BR
Указаны в пункте 4 раздела Back: 1.3.2 Характеристики клиента.
5. Функциональные требования (UC + FR)
| ID | Сценарий | Функциональное требование | BR | Вес | Статус |
|---|---|---|---|---|---|
| S1: FR5.9-1 | Клиент открывает экран ограничений | Интерфейс открывает экран «Ограничения» и показывает список действующих ограничений клиента. | 1 | Реализовано · OQ5.9-12 | |
| S1: FR5.9-2 | Клиент просматривает ограничение | Интерфейс показывает в карточке ограничения партнера, площадку или область действия ограничения, дату и время применения ограничения, причину ограничения и сумму сбора, если она начислена. | 1 | Частично · OQ5.9-2 | |
| S2: FR5.9-3 | Клиент просматривает сбор, установленный вручную | Интерфейс показывает карточку с фотографией площадки, причиной «Установлен в ручном режиме сотрудником компании», суммой сбора и действиями «Оспорить» и «Оплатить». | 1 | Частично · OQ5.9-3 | |
| S2: FR5.9-4 | Клиент просматривает сбор, начисленный автоматически | Интерфейс показывает карточку с фотографией площадки, причиной «Нарушение правил отмены заказа», суммой сбора и действиями «Оспорить» и «Оплатить». | 1 | Частично · OQ5.9-3 | |
| S2: FR5.9-5 | Клиент просматривает автоматическую блокировку | Интерфейс показывает карточку с логотипом партнерской зоны, областью действия «Все объекты», причиной «Повторное нарушение правил отмены заказа», суммой сбора и действиями «Оспорить» и «Оплатить». | 1 | Частично · OQ5.9-4 | |
| S2: FR5.9-6 | Клиент просматривает блокировку без указанной причины | Интерфейс показывает карточку с логотипом партнерской зоны, областью действия «Все объекты», текстом «Блокировка по инициативе площадки» и пояснением «Причина: не указана», если партнер не указал причину блокировки. | 1 | Не реализовано · OQ5.9-5 | |
| S2: FR5.9-7 | Клиент выбирает действие с ограничением | Интерфейс позволяет перейти к оспариванию ограничения по действию «Оспорить» или начать оплату начисленного сбора по действию «Оплатить». | 1 | Частично · OQ5.9-6 | |
| S3: FR5.9-8 | Клиент открывает информацию об ограничениях | Интерфейс по информационному действию открывает панель «Информация о мерах, принятых партнерами сервиса Март, вследствие нарушения правил оказания услуг» и поясняет последствия ограничений: «Вы заблокированы, площадка недоступна для бронирования», «Вам начислен сбор. Стоимость бронируемых услуг у данного партнера увеличена согласно сумме сбора» и «Услуги данного партнера предоставляются только по предоплате». | 2 | Реализовано · OQ5.9-7 | |
| S3: FR5.9-9 | Загружается список ограничений | Интерфейс показывает состояние загрузки карточек до получения списка ограничений. | 2 | Не реализовано · OQ5.9-9 | |
| S3: FR5.9-10 | У клиента нет ограничений | Интерфейс показывает пустое состояние с сообщениями «У вас нет ограничений» и «Вам доступно бронирование у всех партнеров сервиса». | 1 | Реализовано · OQ5.9-13 |
6. Открытые вопросы
| ID | Источник | Вопрос | Кому | Статус |
|---|---|---|---|---|
| OQ5.9-1 |
Открытые вопросы
Пин: BRD 5.9 v0.1 · repo
booking.mobile.flutter(Flutter/Dart) · commitdad0c65/ веткаdev· 2026-07-15 · якорьlib/src/feature/profile_page/forfeits/Сводка: 12 вопросов — Open 7 (бизнесу 6 · разработке 1) · Закрывает PM 3 (разработка) · Подтверждено 2 · отрезано находок обратного прохода 3 (отладочные
| ID | Источник | Вопрос | Кому | Статус | Рекомендации |
|---|---|---|---|---|---|
| OQ5.9-2 | Код FR5.9-2 | Требование говорит: в карточке показывается дата и время применения ограничения. В коде карточка выводит вместо этого период брони заказа («от {начало}–{конец}»), а при отсутствии заказа — текст «Время заказа неизвестно»; поле даты создания ограничения в данных есть, но на экран не выводится вообще. forfeit_tile.dart:175, forfeit_tile.dart:187, forfeit_model.dart:49 | Разработка (Владислав) | Open | (А) выводить в карточке дату/время применения ограничения (поле createdAt), как требует BRD — рекомендуется, требование однозначно; (Б) если период брони показывается намеренно (полезнее клиенту) — зафиксировать это в BRD. |
| OQ5.9-3 | Код FR5.9-3, FR5.9-4 | Требование говорит: для сбора вручную причина «Установлен в ручном режиме сотрудником компании», для авто-сбора — «Нарушение правил отмены заказа»; предусмотрены разные виды карточек. В коде карточка одна универсальная, а причина берётся из фиксированного перечня, где таких формулировок нет — доступны только «Нормальная отмена без штрафа», «Поздняя отмена, ожидание/подтверждено/оплачено», «Штраф отменён/отклонён», «Причина штрафа неизвестна». forfeit_model.dart:107-116, forfeit_tile.dart:216 | Бизнес (Герман) | Open | (А) согласовать перечень причин с BRD и завести варианты карточек под виды ограничений — рекомендуется, если точная формулировка причины важна клиенту; (Б) привести BRD к фактическому перечню причин из данных. Разблокирует OQ5.9-4 и OQ5.9-5. |
| OQ5.9-4 | Код FR5.9-5 | Требование говорит: авто-блокировка показывается с логотипом партнёрской зоны, областью действия «Все объекты» и причиной «Повторное нарушение правил отмены заказа». В коде факт блокировки отражается только цветной иконкой (флаг «ban»); отдельного логотипа партнёрской зоны нет (используется то же фото площадки из файлов, при отсутствии — иконка «нет фото»); текста «Все объекты» нет нигде в приложении; такой причины в перечне нет. forfeit_model.dart:23, forfeit_tile.dart:63-81, forfeit_tile.dart:153; «Все объекты» — не найдено за обход lib/src | Бизнес (Герман) | Open | (А) реализовать вид карточки блокировки: логотип зоны, область «Все объекты», отдельная причина — рекомендуется для соответствия BRD; (Б) упростить BRD, если различие «фото/логотип» и «Все объекты» на данном этапе не нужно. Связать с OQ5.9-3. |
| OQ5.9-5 | Код FR5.9-6 | Требование говорит: если партнёр не указал причину блокировки — показывается текст «Блокировка по инициативе площадки» и пояснение «Причина: не указана». В коде этих текстов нет: для неизвестной причины перечень отдаёт «Причина штрафа неизвестна», а формулировок «Блокировка по инициативе площадки» и «Причина: не указана» нет нигде. forfeit_model.dart:116; обе строки — не найдено за обход lib/src | Бизнес (Герман) | Open | (А) добавить обработку блокировки без причины с текстами из BRD — рекомендуется, поведение полностью отсутствует; (Б) отказаться от отдельного текста и оставить «Причина штрафа неизвестна», обновив BRD. Связать с OQ5.9-3. |
| OQ5.9-6 | Код FR5.9-7 | Требование говорит: по действию «Оспорить» — переход к оспариванию ограничения (Mobile 5.9.1), по «Оплатить» — начало оплаты сбора. В коде «Оплатить» реализовано (создаётся ссылка на оплату и открывается во внешнем окне), а «Оспорить» открывает не экран оспаривания, а создание письма на support@musbooking.com с заранее подставленной темой. forfeit_tile.dart:250-252 (письмо), forfeit_tile.dart:339-346 + forfeit_repository.dart:39-65 (оплата) | Бизнес (Герман) | Open | (А) заменить письмо на переход в экран оспаривания 5.9.1, когда он готов — рекомендуется, соответствует BRD; (Б) зафиксировать письмо в поддержку как штатный канал оспаривания в BRD 5.9/5.9.1. |
| OQ5.9-7 | Код FR5.9-8 | Требование говорит: заголовок информационной панели — «…принятых партнерами сервиса Март…». В коде панель и все три пояснения реализованы и совпадают с BRD, но в заголовке используется название сервиса «MUSbooking», а не «Март». forfeit_screen.dart:68 (заголовок); forfeit_screen.dart:89, 110, 131 (пояснения совпадают) | Бизнес (Герман) | Open | (А) если сервис переименован в «Март» — обновить название в приложении (это часть ребрендинга) — рекомендуется, если «Март» финальное имя; (Б) если «Март» — рабочее имя в BRD, оставить «MUSbooking» и поправить BRD. |
| OQ5.9-8 | Код вне BRD | Что нашли: карточка ограничения показывает в правом верхнем углу три цветные иконки-индикатора — «предоплата», «сбор» и «блокировка», подсвеченные активным цветом по соответствующим признакам ограничения. В BRD (виды карточек 5.9-3…5.9-6) этот визуальный язык не описан. forfeit_tile.dart:122-166 | Бизнес (Герман) | Open | (А) описать индикаторы в BRD как часть карточки — рекомендуется, они несут смысл для клиента; (Б) признать их лишними и убрать, если тип ограничения передаётся текстом. |
| OQ5.9-9 | Код FR5.9-9 | Требование говорит: до получения списка показывается состояние загрузки карточек. В коде во время загрузки экран пустой (возвращается пустой виджет); заготовка индикатора загрузки объявлена, но нигде не вызывается (мёртвый код). forfeit_screen.dart:156-159, forfeit_screen.dart:40-53 | Разработка (Владислав) | Закрывает PM | Закрываю сам: добавить скелетон/индикатор загрузки карточек в состояние loading (задействовать существующую заготовку либо скелетон-плейсхолдеры) → тикет в Bitrix. |
| OQ5.9-10 | Код вне BRD | Проблема: перед оплатой сбора код проверяет наличие email у клиента и показывает окно ввода контактов, но затем безусловно выставляет «оплата разрешена» (canPay = true), из-за чего результат проверки игнорируется — похоже на незавершённую логику.forfeit_tile.dart:306-336 | Разработка (Владислав) | Закрывает PM | Закрываю сам: убрать принудительный canPay = true (строка 336) либо осознанно оформить требование подтверждённого email перед оплатой → тикет в Bitrix. |
| OQ5.9-11 | Код вне BRD | Проблема: состояние ошибки экрана отрисовывает экран ошибки с пустым текстом сообщения (errorText: ""), поэтому при сбое загрузки клиент не видит пояснения, что произошло. В BRD состояние ошибки как FR не описано, но это одно из состояний экрана.forfeit_screen.dart:196-198 | Разработка (Владислав) | Закрывает PM | Закрываю сам: передавать в экран ошибки понятный текст (напр. «Не удалось загрузить ограничения, повторите позже») → тикет в Bitrix. При необходимости согласовать текст с бизнесом. |
| OQ5.9-12 | Код FR5.9-1 | Что подтверждено: экран «Ограничения» открывается из профиля, зарегистрирован в роутере, при открытии грузит список через метод API ClientsService.GetAllForfeitsByClientMobile и отображает карточки списком. Оговорка: отбор именно «действующих» ограничений выполняется на бэкенде (метод отдаёт все сборы клиента) и из Flutter-кода не проверяется.forfeit_screen.dart:22-27, forfeit_screen.dart:56-58, app_router.dart:366, profile_screen.dart:536-539, forfeit_repository.dart:25-37 | — | Подтверждено | Расхождения нет. Отбор «действующих» — на стороне бэкенда, вне зоны этого раздела. |
| OQ5.9-13 | Код FR5.9-10 | Что подтверждено: пустое состояние показывается с точными текстами BRD — «У вас нет ограничений» и «Вам доступно бронирование у всех партнеров сервиса», с иконкой и pull-to-refresh. forfeit_screen.dart:161-169 | — | Подтверждено | Расхождения нет. |