BRD Mobile 4.2.3 Мои заказы > Список архивных заказов > Оценить и оставить отзыв
Направление работ: Mobile Код раздела: 4.2.3 Раздел: Мои заказы > Список архивных заказов > Оценить и оставить отзыв Статус: черновик Ответственный: Панкова Л.А. Версия: 0.1 Обновлено: 21.08.26
1. Назначение
Раздел обеспечивает клиенту мобильного приложения возможность оценить площадку и оставить отзыв после посещения в рамках архивного заказа.
Клиент выставляет оценку, при желании заполняет текстовое поле в рамках заданного ограничения, знакомится с правилами размещения и прикрепляет фотографии через системные средства мобильного устройства. После отправки интерфейс сообщает о передаче отзыва на модерацию либо показывает ошибку отправки.
Доступность оценки по состоянию заказа определяется в Back: 3.2 Процессинг заказов, состав и жизненный цикл отзыва — в Back: 3.4 Отзывы по заказам, а его проверка перед публикацией — в Back: 8.7.2 Отзывы.
2. Ключевые понятия
Экран «Оставить отзыв» — интерфейсный сценарий оценки площадки, ввода отзыва, добавления фотографий и отправки данных на модерацию.
Архивный заказ — завершенный или отмененный заказ, из информации о котором клиент переходит к оценке площадки.
Оценка и отзыв — связанные с заказом оценка площадки, текст и прикрепленные фотографии, которые клиент отправляет на модерацию.
Модерация отзыва — проверка отправленного отзыва перед публикацией; после отправки интерфейс показывает клиенту, что отзыв принят на модерацию.
3. Scope
Входит
S1: Открытие формы отзыва из архивного заказа и просмотр сведений о площадке
S2: Выставление оценки, ввод текста и проверка ограничений формы
S3: Просмотр правил размещения отзывов
S4: Добавление и удаление фотографий через системные средства мобильного устройства
S5: Отправка отзыва и отображение успешного и ошибочного результата
Не входит
- Mobile: 4.2.1 Информация об архивном заказе — просмотр состава и параметров завершенного или отмененного заказа.
- Mobile: 5.5 Профиль > Отзывы — просмотр и управление отзывами клиента в профиле.
- AdmLk: 3.6 Управление > Модерация отзывов — проверка и принятие решения по отправленному отзыву.
4. BR
Указаны в пункте 4 разделов Back: 3.2 Процессинг заказов, Back: 3.4 Отзывы по заказам и Back: 8.7.2 Отзывы. На момент подготовки Front BRD два последних Back-раздела не заполнены; необходимые уточнения зафиксированы в открытых вопросах.
5. Функциональные требования (UC + FR)
FR — functional requirements, что интерфейс должен уметь делать по определенному UC.
| ID | Сценарий | Функциональное требование | BR | Вес | Статус |
|---|---|---|---|---|---|
| S1: FR4.2.3-1 | Клиент нажимает «Оценить» в информации об архивном заказе | Интерфейс открывает форму «Оставить отзыв» поверх экрана Mobile: 4.2.1 Информация об архивном заказе и передает данные выбранного заказа, если по нему еще не был отправлен отзыв. Клиент может отправить не более одного отзыва по каждому заказу; отзыв по другому заказу на ту же площадку отправляется независимо. | 1 | Частично OQ4.2.3-2 | |
| S1: FR4.2.3-2 | Клиент просматривает форму отзыва | Интерфейс показывает заголовок «Оставить отзыв», название площадки и партнерской зоны, среднюю оценку площадки, пять звезд рейтинга и количество опубликованных отзывов. | 1 | Частично OQ4.2.3-3 | |
| S1: FR4.2.3-3 | Клиент нажимает кнопку возврата в форме отзыва | Интерфейс закрывает форму и возвращает клиента к Mobile: 4.2.1 Информация об архивном заказе. | 1 | Реализовано OQ4.2.3-8 | |
| S2: FR4.2.3-4 | Клиент выставляет оценку | Интерфейс позволяет выбрать целую оценку от 1 до 5 звезд и визуально отражает выбранное количество звезд. | 1 | Реализовано OQ4.2.3-9 | |
| S2: FR4.2.3-5 | Клиент вводит текст отзыва | Интерфейс показывает необязательное поле с подсказкой «Начните писать отзыв», принимает не более 1000 символов и отображает счетчик введенных символов в формате «{текущее количество}/1000». | 1 | Частично OQ4.2.3-4 | |
| S2: FR4.2.3-6 | Клиент не выставил оценку | Интерфейс не позволяет отправить отзыв: кнопка «Сохранить» остается неактивной. | 1 | Реализовано OQ4.2.3-9 | |
| S2: FR4.2.3-7 | Клиент выставил оценку и форма соответствует ограничениям | Интерфейс активирует кнопку «Сохранить» и позволяет отправить отзыв независимо от наличия текста. | 1 | Реализовано OQ4.2.3-9 | |
| S3: FR4.2.3-8 | Клиент нажимает «Правила размещения отзывов» | Интерфейс открывает отдельную панель «Правила размещения отзывов» для ознакомления с условиями публикации до отправки отзыва. Состав текста требует решения по OQ4.2.3-1. | 1 | Частично OQ4.2.3-1, OQ4.2.3-5 | |
| S3: FR4.2.3-9 | Клиент нажимает кнопку возврата в правилах размещения отзывов | Интерфейс закрывает правила и возвращает клиента к заполненной форме без сброса выбранной оценки, введенного текста и прикрепленных фотографий. | 1 | Реализовано OQ4.2.3-8 | |
| S4: FR4.2.3-10 | Клиент нажимает действие добавления фотографии | Интерфейс передает выбор фотографии стандартному системному сценарию мобильного устройства. При необходимости операционная система показывает стандартный запрос доступа к фотогалерее или камере. | 1 | Частично OQ4.2.3-6 | |
| S4: FR4.2.3-11 | Клиент разрешает доступ и выбирает фотографии | Интерфейс прикрепляет выбранные изображения к отзыву, показывает их миниатюры в форме и отображает ограничение «до 5 фото». | 1 | Реализовано OQ4.2.3-10 | |
| S4: FR4.2.3-12 | Клиент удаляет прикрепленную фотографию | Интерфейс удаляет выбранную фотографию из формы и снова позволяет добавить изображение в пределах лимита. | 1 | Реализовано OQ4.2.3-10 | |
| S4: FR4.2.3-13 | К отзыву прикреплено 5 фотографий | Интерфейс не позволяет прикрепить шестую фотографию. | 1 | Реализовано OQ4.2.3-10 | |
| S5: FR4.2.3-14 | Клиент нажимает активную кнопку «Сохранить» | Интерфейс отправляет оценку, прикрепленные фотографии и текст, если он заполнен, для выбранного заказа и показывает результат отправки. | 1 | Частично OQ4.2.3-7 | |
| S5: FR4.2.3-15 | Отзыв успешно отправлен | Интерфейс показывает подтверждение «Отзыв отправлен на модерацию» и кнопку «Отлично», после чего повторная отправка отзыва по этому же заказу становится недоступна. По нажатию кнопки интерфейс закрывает подтверждение и возвращает клиента в Mobile: 4.2.1 Информация об архивном заказе. | 1 | Реализовано OQ4.2.3-11 | |
| S5: FR4.2.3-16 | При отправке отзыва произошла ошибка | Интерфейс показывает состояние «Что-то пошло не так», сообщение «Проверьте соединение с интернетом или повторите попытку позднее» и действие «Повторить». По нажатию интерфейс повторно отправляет отзыв без сброса выбранной оценки, введенного текста и прикрепленных фотографий. | 1 | Частично OQ4.2.3-7 |
6. Открытые вопросы
Сверка с кодом: BRD 4.2.3 v0.1 · репозиторий
booking.mobile.flutter· commit9db8346/dev· 28.08.26 · якорьlib/src/feature/add_review/(такжеlib/src/feature/orders_tab/order_room/widget/actullity/buttons_panel_widget.dart,lib/src/feature/orders_tab/widget/tiles/order_tile.dart,lib/src/feature/orders_tab/data/reviewed_orders_storage.dart,lib/src/feature/orders_tab/utils/conditions_btns_util.dart,lib/src/core/utils/widgets/html_modal_sheet.dart) Сводка: 11 вопросов (Open 7 · Подтверждено 4) Маршрутизация без сверки с гайдбуком (гайдбук не передавался). Обход ограничен мобильным клиентом; бэкенд (booking-monorepo, Back 3.4 «Отзывы по заказам», 8.7.2 «Модерация») не проверялся — упоминания серверного поведения (отклонение дубликата отзыва, состав ответа сервиса) опираются на клиентский код и комментарии в нём, а не на прямую проверку бэкенда.
| ID | Источник | Вопрос | Кому | Статус | Рекомендации | Итоговое решение |
|---|---|---|---|---|---|---|
| OQ4.2.3-1 | Figma | Какой текст должен открываться по действию «Правила размещения отзывов»? В соответствующем экране макета сейчас размещены правила отмены заказа и начисления сбора, а не условия публикации отзывов. | Продукт / Дизайн | Open | Независимо от итогового текста, в коде сейчас на этом месте технический черновик, а не рабочий контент — см. OQ4.2.3-5: это стоит поправить уже сейчас, до готовности финального текста правил. | От Бизнеса: Текст будет позднее. |
| OQ4.2.3-2 | FR4.2.3-1 | Требование говорит: оценить заказ можно, нажав «Оценить» в информации об архивном заказе (раздел 4.2.1) — форма открывается поверх этого экрана. В коде та же форма отзыва открывается ещё и прямо с плитки заказа в списке архивных заказов, минуя экран 4.2.1, той же кнопкой «Оценить». У двух точек входа разные условия показа этой кнопки: на экране заказа она видна, пока с даты заказа прошло не больше 14 дней, а на плитке в списке — пока прошло не больше 7 дней. У формы, открытой из списка, вдобавок жёстко задана высота 80% экрана, а у формы, открытой с экрана заказа, ограничения высоты нет. \ buttons_panel_widget.dart:204-217 (вход из экрана заказа), app_config.dart:56 (окно 14 дней для этого входа), order_tile.dart:89-105 (вход из списка, высота 80% экрана), conditions_btns_util.dart:214-228 (окно 7 дней для входа из списка, строка 217), booking_list.dart:74-78 (эта же плитка используется для списка архивных заказов) | Разработка | Open | (А) Свести к одной точке входа: раз BRD описывает только сценарий из 4.2.1, самый дешёвый вариант — оставить кнопку «Оценить» только на экране заказа, а с плитки в списке вести сначала в него (рекоменд.) — тогда не нужно держать в согласии две копии условия показа кнопки. (Б) Если оба входа нужны намеренно — свести окно доступности к одному значению (сейчас 14 и 7 дней противоречат друг другу) и описать вход из списка отдельным FR в BRD. | |
| OQ4.2.3-3 | FR4.2.3-2 | Требование говорит: форма показывает заголовок «Оставить отзыв», название площадки и партнерской зоны, среднюю оценку и количество опубликованных отзывов. В коде заголовок экрана — «Отзывы», а не «Оставить отзыв»; вместо площадки и партнерской зоны показываются название площадки и название базы — поля с названием партнерской зоны в данных экрана нет вообще, хотя идентификатор партнерской зоны в запрос передаётся. Средняя оценка выводится корректно, а в строке с числом отзывов виден лишний фрагмент «(?)», прямо как есть, например «12 отзывов(?)». \ add_review_screen.dart:94 (заголовок «Отзывы»), :107-110 (площадка и база без партнерской зоны), :171 («(?)» в тексте числа отзывов), order_review_modal_cubit.dart:28,32 (идентификатор партнерской зоны передаётся в запрос), :36-42 (в модель экрана он не попадает), room_details_mobile.dart:12-37 (в ответе сервиса, которым пользуется этот экран, названия партнерской зоны нет вообще, есть только идентификатор) | Разработка | Open | Завести тикет в Bitrix: привести заголовок к «Оставить отзыв», убрать «(?)» из текста числа отзывов — это чистые правки клиента. Отдельно уточнить у бэкенда, можно ли добавить название партнерской зоны в ответ используемого метода (сейчас есть только идентификатор); похожая нехватка уже отмечена в Mobile 4.2.1: OQ4.2.1-8 — похоже на системный пробел, а не разовую ошибку. | |
| OQ4.2.3-4 | FR4.2.3-5 | Требование говорит: поле отзыва принимает не более 1000 символов и показывает счётчик «{текущее количество}/1000». В коде ограничение в 1000 символов работает (дальше ввод блокируется), а счётчик снизу поля явно отключён: полю задан пустой текст счётчика вместо стандартного, который Flutter показал бы сам при заданном лимите. Пользователь не видит, сколько символов уже набрал и сколько осталось. \ add_review_screen.dart:238 (пустой текст счётчика), :254 (лимит 1000 символов) | Разработка | Open | Завести тикет в Bitrix: убрать counterText: '' (или явно вывести «{count}/1000» рядом с полем) — счётчик уже фактически готов, дело в одной строке, которая его прячет. | |
| OQ4.2.3-5 | FR4.2.3-8 | Требование говорит: по «Правила размещения отзывов» открывается панель для ознакомления с условиями публикации. В коде панель действительно открывается, но её содержимое — не рабочий текст, а служебная заглушка разработчика: «Длинный html текст,который еше не приходит с ручки,поэтому его тут нет» (текст показывается пользователю как есть, с опечаткой «еше»). Это отдельный от OQ4.2.3-1 вопрос: там речь о том, каким должен быть текст по содержанию макета, здесь — о том, что сейчас в проде показывается техническая пометка вместо любого текста. \ add_review_screen.dart:267-271 | Разработка | Open | Завести тикет в Bitrix: до готовности реального текста (см. OQ4.2.3-1) заменить заглушку на нейтральный текст-плейсхолдер без упоминания «ручки» и разработки, либо скрывать пункт меню, пока текста нет. Служебные пометки не должны попадать к конечному пользователю независимо от решения по содержанию правил. | |
| OQ4.2.3-6 | FR4.2.3-10 | Требование говорит: интерфейс передаёт выбор фотографии стандартному системному сценарию устройства. В коде выбор в целом устроен так и работает, но обработка ошибки выбора фото рискованная: панель выбора «Галерея/Камера» закрывается сразу после запуска системного выбора фото, ещё до того как он завершился; если после этого выбор фото завершается ошибкой, уведомление об этой ошибке код пытается показать через контекст уже закрытой панели. К чему это приведёт на практике — не покажется уведомление или упадёт экран — по коду однозначно не определить, нужна проверка на устройстве. \ add_review_screen.dart:585-587 (панель закрывается до завершения выбора фото), :597-604 (уведомление об ошибке через контекст уже закрытой панели) | Разработка | Open | Проверить на устройстве сценарий, когда выбор фото завершается ошибкой уже после закрытия панели «Галерея/Камера» (например, отказ в доступе к камере). Если уведомление не показывается или экран падает — показывать ошибку через контекст самой формы отзыва, а не панели выбора фото. | |
| OQ4.2.3-7 | FR4.2.3-14, FR4.2.3-16 | Требование говорит: при ошибке отправки интерфейс показывает состояние «Что-то пошло не так» с действием «Повторить», которое повторно отправляет отзыв, не сбрасывая оценку, текст и фото (FR4.2.3-16); при нажатии «Сохранить» интерфейс отправляет оценку, фото и текст и показывает результат отправки (FR4.2.3-14). В коде заголовок и текст ошибки совпадают с BRD, но кнопка называется «Грустно 😢», и по нажатию она не повторяет отправку, а просто закрывает форму — оценка, текст и все фото при этом теряются безвозвратно. Отправка устроена в два шага: сначала создаётся сам отзыв (оценка и текст), и только потом отдельно загружаются фото; отметка «по этому заказу отзыв уже отправлен» проставляется сразу после первого шага, до начала загрузки фото. Если не удалась именно загрузка фото, пользователь всё равно видит общий экран «Что-то пошло не так», хотя сам отзыв уже принят, а кнопка «Оценить» для этого заказа после этого больше не появится ни на экране заказа, ни в списке — дозагрузить фото или узнать, что отзыв всё-таки принят, будет уже нельзя. Тем же общим экраном ошибки закрывается и редкий случай, когда сервер отклоняет отзыв как уже существующий. \ add_review_screen.dart:509-516 (кнопка «Грустно 😢» закрывает форму вместо повторной отправки); order_review_modal_cubit.dart:69 (отметка «отзыв отправлен» ставится до загрузки фото), :88-96 (неудача загрузки фото даёт тот же экран ошибки, что и полный отказ), :58-63 (дубликат на сервере тоже даёт тот же экран ошибки) | Разработка | Open | Завести тикет в Bitrix на два связанных исправления: (1) переименовать кнопку в «Повторить» и реализовать повторную отправку с сохранением введённых оценки, текста и фото, как того требует FR4.2.3-16 — сейчас кнопка только закрывает форму; (2) различать в интерфейсе два разных исхода ошибки: не создался сам отзыв (нужно повторить всё) и отзыв создан, но не загрузились фото (нужно повторить только загрузку фото, не показывая общее «Что-то пошло не так», раз отметка о принятом отзыве уже проставлена). Требование весом 1, и сейчас у пользователя после любой ошибки на этом экране нет рабочего способа завершить отправку. | |
| OQ4.2.3-8 | FR4.2.3-3, FR4.2.3-9 | Что подтверждено: кнопка возврата в шапке формы закрывает её стандартным возвратом назад; кнопка возврата в панели «Правила размещения отзывов» закрывает только эту панель отдельным экраном поверх формы — сама форма при этом не пересоздаётся, поэтому выбранная оценка, введённый текст и прикреплённые фото сохраняются автоматически, без дополнительного кода на этот случай. \ add_review_screen.dart:90-91 (возврат из формы), html_modal_sheet.dart:20-22 (возврат из правил, отдельный Navigator.pop), add_review_screen.dart:262-271 (правила открываются отдельной панелью поверх формы) | — | Подтверждено | Расхождений нет. | — |
| OQ4.2.3-9 | FR4.2.3-4, FR4.2.3-6, FR4.2.3-7 | Что подтверждено: оценка выставляется целым числом от 1 до 5 нажатием на звезду, выбранное количество звёзд закрашивается; кнопка «Сохранить» неактивна, пока оценка не выставлена, и становится активной сразу после выбора оценки — независимо от того, заполнено ли поле текста. \ add_review_screen.dart:200-219 (выбор оценки 1-5), :398 (кнопка активна при выставленной оценке, без проверки текста) | — | Подтверждено | Расхождений нет. | — |
| OQ4.2.3-10 | FR4.2.3-11, FR4.2.3-12, FR4.2.3-13 | Что подтверждено: выбранные фотографии прикрепляются к отзыву и показываются миниатюрами в форме, рядом есть подпись об ограничении в 5 штук; любую прикреплённую фотографию можно удалить отдельным действием, после чего снова становится доступно добавление; после пятой прикреплённой фотографии кнопка добавления блокируется, и шестую прикрепить нельзя. \ add_review_screen.dart:334-339 (кнопка добавления блокируется при 5 фото), :344-354 (миниатюры), :361-366 (удаление фото), :316 (подпись «до 5 штук»; в BRD — «до 5 фото», расхождение только в слове) | — | Подтверждено | Расхождений по сути нет; в подписи ограничения используется слово «штук» вместо «фото» из BRD — можно поправить заодно с другими текстовыми правками этого раздела (OQ4.2.3-3, OQ4.2.3-5). | — |
| OQ4.2.3-11 | FR4.2.3-15 | Что подтверждено: при успешной отправке интерфейс показывает «Отзыв отправлен на модерацию» и кнопку «Отлично», по нажатию которой форма закрывается и клиент возвращается на экран, с которого была открыта форма; повторная отправка отзыва по этому же заказу после этого недоступна — кнопка «Оценить» перестаёт показываться (см. также OQ4.2.3-7 о том, что эта же отметка проставляется и при неполном успехе). \ add_review_screen.dart:437-438 (текст успеха), :453-457 (кнопка «Отлично»), order_review_modal_cubit.dart:69 (отметка «отзыв отправлен» для заказа) | — | Подтверждено | Расхождений нет для сценария полного успеха. | — |