Направление работ: Mobile Код раздела: 5.9.1 Раздел: Профиль > Ограничения > Оспорить ограничение Статус: Готов Ответственный: Панкова Л.А. Версия: 0.1 Обновлено: 13.07.26
1. Назначение
Раздел позволяет клиенту выбрать действие для ограничения и перейти к его оспариванию.
В текущем сценарии интерфейс открывает системное почтовое приложение с адресом партнера. Для будущей реализации предусмотрен встроенный чат с отправкой сообщения и вложений.
Раздел зависит от Back: 1.3.2 Характеристики клиента и использует ограничения из Mobile 5.9.
2. Ключевые понятия
Ограничение — примененная партнером характеристика клиента, которая изменяет доступность бронирования или условия оказания услуг в конкретной партнерской зоне.
Оспаривание ограничения — обращение клиента к партнеру по выбранному ограничению.
Чат для оспаривания — интерфейс отправки партнеру сообщения и вложений по выбранному ограничению.
3. Scope
Входит
S1: Ограничения и действия с ними
S2: Чат для оспаривания ограничения (на будущую реализацию)
Не входит
4. BR
Указаны в пункте 4 раздела Back: 1.3.2 Характеристики клиента.
5. Функциональные требования (UC + FR)
| ID | Сценарий | Функциональное требование | BR | Вес | Статус |
|---|---|---|---|---|---|
| S1: FR5.9.1-1 | Клиент просматривает доступные действия с ограничением | Интерфейс показывает в карточке ограничения действия «Оспорить» и «Оплатить», если они доступны для выбранного ограничения. | 1 | Реализовано — OQ5.9.1-3 | |
| S1: FR5.9.1-2 | Клиент оспаривает ограничение | Интерфейс по действию «Оспорить» открывает системное почтовое приложение с адресом электронной почты партнера. | 1 | Реализовано — OQ5.9.1-1, OQ5.9.1-2 | |
| S1: FR5.9.1-3 | Клиент оплачивает начисленный сбор | Интерфейс по действию «Оплатить» начинает сценарий оплаты начисленного сбора. | 1 | Реализовано — OQ5.9.1-4 | |
| S2: FR5.9.1-4 | Клиент переходит к оспариванию в приложении (на будущую реализацию) | Интерфейс по действию «Оспорить» открывает чат с адресом электронной почты партнера, полем «Сообщение…» и действиями добавления вложения и отправки. | 3 | — OQ5.9.1-6 | |
| S2: FR5.9.1-5 | Клиент отправляет сообщение партнеру (на будущую реализацию) | Интерфейс позволяет ввести текст сообщения и отправить его партнеру по выбранному ограничению. | 3 | — OQ5.9.1-6 | |
| S2: FR5.9.1-6 | Клиент добавляет вложения (на будущую реализацию) | Интерфейс позволяет прикрепить до пяти файлов как «Изображение» или «Документ», показывает добавленные изображения и позволяет удалить вложение до отправки. | 3 | — OQ5.9.1-6 | |
| S2: FR5.9.1-7 | Сообщение успешно отправлено (на будущую реализацию) | Интерфейс показывает подтверждение отправки, сообщает, что дальнейшее оспаривание сборов осуществляется по электронной почте клиента, и позволяет закрыть состояние по действию «Закрыть». | 3 | — OQ5.9.1-6 | |
| S2: FR5.9.1-8 | Сообщение не отправлено (на будущую реализацию) | Интерфейс показывает экран «Ошибка» с сообщениями «Что-то пошло не так» и «Проверьте соединение с интернетом или повторите попытку позднее» и позволяет повторить отправку по действию «Попробовать еще раз». | 3 | — OQ5.9.1-6 |
6. Открытые вопросы
Пин-контекст. BRD 5.9.1 v0.1 · репо
booking.mobile.flutter(Flutter/Dart) · commit1c4ad0e/origin/main· дата 2026-09-08 · якорьlib/src/feature/profile_page/forfeits/(точка входа — Профиль → «Ограничения»,profile_screen.dart:539→ForfeitsRoute). Сводка. 6 вопросов (Open — 2 · Закрывает PM — 1 · Подтверждено — 3) · отрезано находок обратного прохода — 3 (принадлежат разделу Mobile 5.9 «Ограничения», не 5.9.1). Статусы OQ ниже не менялись (правило дельта-сверки); фактическая картина по коду на1c4ad0e— см. досверку ниже и5.9.1-mobile.changes.md. Маршрутизация без сверки с гайдбуком — гайдбук на вход не передавался; спорные вопросы отнесены бизнесу как «подтвердить нечем». Повторная сверка по итогам дейликов (08.09.26, commit2b93d4f). Предыдущая сверка — 14.07.26, commitdad0c65. Междуdad0c65и2b93d4fякорьlib/src/feature/profile_page/forfeits/тронул только один коммит —0d2c5cb "dart format"(31.08.26), без изменения логики;forfeit_tile.dartне изменился ни на строку. Все статусы были оставлены без изменений. Досверка по дельте2b93d4f→1c4ad0e(08.09.26, влитdevвorigin/main, merge1c4ad0e). Якорьforfeits/теперь содержит реальные функциональные изменения вforfeit_tile.dartиforfeit_screen.dart(соответствует дейликам Андрея «закрывал доработки 5.9.1», 31.08). По коду закрыты: OQ5.9.1-1 и OQ5.9.1-2 — письмо оспаривания теперь адресуетсяforfeit.partnerEmail(с запасным вариантомsupport@musbooking.com, если бэкенд не прислал e-mail партнёра) и содержит тему/текст с причиной, площадкой, периодом заказа и суммой сбора, а не фиксированную заглушку —forfeit_tile.dart:38-63(buildDisputeMailtoUri),:350-351(вызов из обработчика «Оспорить»). OQ5.9.1-5 — безусловныйcanPay = trueпосле проверки e-mail убран,forfeit_tile.dart:410-434(тот же фикс, что закрывает OQ5.9-10 в разделе 5.9). Раздел S2 (встроенный чат оспаривания) по-прежнему полностью закомментирован (support_chat_screen.dart), маршрутSupportChatRouteпо-прежнему выключен вapp_router.dart:368— без изменений, соответствует пометке BRD «на будущую реализацию» (OQ5.9.1-6). Существующие строки таблицы вопросов ниже не редактировались; изменения отражены в колонке «Статус» раздела 5 и в5.9.1-mobile.changes.md. Новых открытых вопросов не заведено.
| ID | Источник | Вопрос | Кому | Статус | Рекомендации | Итоговое решение |
|---|---|---|---|---|---|---|
| OQ5.9.1-1 | Код FR5.9.1-2 | Требование говорит: «Оспорить» открывает почтовое приложение с адресом партнёра. В коде адрес получателя жёстко задан как служебная почта сервиса support@musbooking.com — письмо уходит в поддержку MUSbooking, а не партнёру. При этом e-mail партнёра приходит с бэкенда и доступен на карточке, но не используется. \ forfeit_tile.dart:250-254, поле есть: forfeit_model.dart:44 (partnerEmail) | Бизнес (Герман) | Open | (А, реком.): подтвердить, что оспаривание должно идти партнёру, и подставить forfeit.partnerEmail — данные уже приходят, правка на стороне разработки минимальна. (Б): если по продукту оспаривание намеренно маршрутизируется через поддержку MUSbooking — зафиксировать это в BRD (заменить «адрес партнёра» на «поддержку сервиса»). Разблокирует OQ5.9.1-2. | Доработка, вес 1, вариант А |
| OQ5.9.1-2 | Код FR5.9.1-2 | Требование говорит: клиент оспаривает выбранное ограничение. В коде тема и текст письма — фиксированные заглушки («Оспорить ограничение площадки» / «Укажите название ограничения и ссылку на проблему»); ни название ограничения, ни площадка, ни заказ в письмо не подставляются, хотя эти данные есть на карточке. Получатель не понимает, о каком именно ограничении речь. \ forfeit_tile.dart:250-254 (данные доступны: forfeit_model.dart:43-52) | Разработка (Владислав) | Open | (А, реком.): подставлять в тему/текст название площадки, комнаты, причину и период заказа из карточки — так письмо станет адресным. (Б): оставить заглушку и попросить клиента заполнять вручную (хуже для партнёра). Зависит от OQ5.9.1-1 (сначала адрес получателя). | Вариант А, доработка, вес 1 |
| OQ5.9.1-5 | Код (сверх BRD, область FR5.9.1-3) | Проблема: перед оплатой сбора код проверяет, указан ли e-mail клиента, и показывает форму ввода, если почты нет. Но сразу после этой проверки результат принудительно перезаписывается на «можно платить» — форма ввода почты фактически ни на что не влияет, оплата продолжается в любом случае. Похоже на забытую отладочную строку. \ forfeit_tile.dart:336 (перекрывает проверку из forfeit_tile.dart:306-334) | Разработка (Владислав) | Закрывает PM | Закрываю сам: убрать безусловное canPay = true и оставить результат реальной проверки e-mail (или явно отказаться от требования почты, если оно не нужно) → тикет в Bitrix. Продуктового выбора нет — либо проверка нужна и должна работать, либо её надо удалить целиком. | Доработка, вес 1 |
| OQ5.9.1-3 | Код FR5.9.1-1 | Что подтверждено: карточка ограничения показывает оба действия. «Оспорить» отображается всегда; «Оплатить» — только когда сбор начислен (сумма > 0) и у ограничения есть платёжная настройка — это и есть «если доступны». Примечание: у действия «Оспорить» отдельного условия доступности нет (показывается для любого ограничения) — если по продукту оно должно иногда скрываться, это уточняется отдельно. \ «Оспорить»: forfeit_tile.dart:246-287; «Оплатить» + условие: forfeit_tile.dart:288-289 | — | Подтверждено | Расхождения по наличию действий нет. При необходимости — уточнить у бизнеса, всегда ли доступно «Оспорить». | Всё ок, кнопка «Оспорить» всегда доступна |
| OQ5.9.1-4 | Код FR5.9.1-3 | Что подтверждено: действие «Оплатить» запускает сценарий оплаты сбора: приложение запрашивает у бэкенда ссылку на оплату (метод CreatePaymentLinkForForfeitMobile) и открывает её во внешнем окне оплаты. \ forfeit_tile.dart:295-347 → forfeit_cubit.dart:45-71 → forfeit_repository.dart:39-65 | — | Подтверждено | Расхождения нет. Технический дефект в этом же потоке — см. OQ5.9.1-5. | Ок |
| OQ5.9.1-6 | Код FR5.9.1-4 … FR5.9.1-8 | Что подтверждено: встроенный чат оспаривания (S2 — форма сообщения, вложения, экраны успеха/ошибки) в коде отсутствует: экран чата полностью закомментирован, маршрут к нему выключен. Это соответствует пометке BRD «на будущую реализацию» — расхождения нет, реализовывать пока нечего. \ support_chat/widget/support_chat_screen.dart:1-106 (весь файл закомментирован), маршрут выключен: app_router.dart:374 | — | Подтверждено | Расхождения нет — S2 намеренно отложен. Проверить повторно при старте работ по чату оспаривания. | Ок |