Направление работ: Mobile Код раздела: 5.7 Раздел: Профиль > Мбаллы Статус: черновик Ответственный: Панкова Л.А. Версия: 0.1 Обновлено: 29.07.26


1. Назначение

Раздел описывает экран мобильного приложения, на котором пользователь просматривает историю начислений и списаний Мбаллов.

Пользователь может отфильтровать операции по типу, выбрать период их отображения и открыть справку о балансе, правилах начисления и использования Мбаллов.

Раздел зависит от Back: 2.7.3 Объекты и предложения > Скидки > Скидки баллами в части правил оплаты заказа Мбаллами и от Back: 8.4.2 Администрирование > Параметры системы > Настройки балльной системы в части правил начисления и списания Мбаллов.

2. Ключевые понятия

Мбаллы — баллы лояльности пользователя, которые начисляются за предусмотренные правилами действия и могут использоваться при оплате заказа.

История операций с Мбаллами — список начислений и списаний Мбаллов пользователя, сгруппированный по месяцам.

Период операций — интервал дат, за который интерфейс отображает историю операций с Мбаллами.

Тип операции — категория записи в истории: начисление или списание.

3. Scope

Входит

S1: Мбаллы — открытие экрана, просмотр истории операций и справки о Мбаллах.

S2: Фильтрация истории операций.

S3: Выбор периода отображения операций.

S4: Дополнительные состояния экрана.

Не входит

4. BR

Указаны в пункте 4 раздела Back 2.7.3 Объекты и предложения > Скидки > Скидки баллами.

Правила начисления и списания Мбаллов относятся к разделу Back 8.4.2 Администрирование > Параметры системы > Настройки балльной системы.

5. Функциональные требования (UC + FR)

IDСценарийФункциональное требованиеBRВесСтатус
S1: FR5.7-1Пользователь открывает раздел “Мбаллы”.Интерфейс открывает экран “Мбаллы” и отображает действие возврата, выбранный период, действия фильтрации и открытия справки, а также историю операций пользователя.1Реализовано
S1: FR5.7-2Пользователь просматривает историю операций с Мбаллами.Интерфейс группирует доступные операции по месяцам. Для текущего месяца интерфейс отображает группу “В этом месяце”, для предыдущих месяцев — название месяца, например “В апреле”.1Не реализовано
OQ5.7-1
S1: FR5.7-3Пользователь просматривает отдельную операцию.Интерфейс отображает для операции название объекта, логотип объекта, тип “Начисление” или “Списание”, сумму Мбаллов со знаком ”+” для начисления или ”-” для списания и дату. Для списания по подписке интерфейс отображает назначение “Оплата подписки”.1Частично
OQ5.7-2, OQ5.7-3, OQ5.7-16
S1: FR5.7-4Пользователь возвращается с экрана “Мбаллы”.По действию возврата интерфейс закрывает экран “Мбаллы” и возвращает пользователя на предыдущий шаг.1Реализовано
OQ5.7-21
S1: FR5.7-5Пользователь открывает справку о Мбаллах.По действию открытия справки интерфейс показывает нижнюю панель.

В справке интерфейс отображает блок “У вас” с текущим балансом Мбаллов и блок “Мбаллы” со справочной информацией о Мбаллах.
2Реализовано
OQ5.7-19, OQ5.7-20, OQ5.7-22
S1: FR5.7-6Пользователь сворачивает справочную информацию.По действию сворачивания интерфейс закрывает нижнюю панель справки и возвращает пользователя на экран “Мбаллы”.2Реализовано
OQ5.7-21
S2: FR5.7-7Пользователь открывает фильтрацию истории операций.По действию фильтрации интерфейс показывает нижнюю панель “Что показывать?” с вариантами единичного выбора “Все”, “Начисления” и “Списания”. По умолчанию выбран вариант “Все”.1Частично
OQ5.7-4
S2: FR5.7-8Пользователь выбирает тип операций.Интерфейс позволяет выбрать только один вариант фильтра и отображает в истории операции выбранного типа либо все операции для варианта “Все”. После выбора панель фильтрации остаётся открытой до действия пользователя по её сворачиванию.1Частично
OQ5.7-5, OQ5.7-6, OQ5.7-14
S3: FR5.7-9Пользователь открывает выбор периода.По действию добавления периода интерфейс показывает нижнюю панель выбора периода с действиями “Сбросить” и “Готово”, полями “Дата начала” и “Дата Окончания” и календарём.2Частично
OQ5.7-7
S3: FR5.7-10Пользователь задаёт период операций.Интерфейс позволяет выбрать дату начала и дату окончания в календаре. Выбранный диапазон выделяется в календаре, а его границы отображаются в полях дат.2Реализовано
OQ5.7-17, OQ5.7-22
S3: FR5.7-12Пользователь сбрасывает выбранный период.По действию “Сбросить” интерфейс очищает заданный диапазон и возвращает выбор периода к исходному состоянию.2Частично
OQ5.7-7, OQ5.7-8
S3: FR5.7-13Пользователь применяет выбранный период.По действию “Готово” интерфейс применяет даты начала и окончания, закрывает панель выбора периода и обновляет историю операций за выбранный интервал.2Частично
OQ5.7-6, OQ5.7-13, OQ5.7-15
S4: FR5.7-14История операций загружается.До получения данных интерфейс отображает плейсхолдеры выбранного периода, заголовков месяцев и строк операций.2Не реализовано
OQ5.7-9, OQ5.7-11
S4: FR5.7-15В выбранном месяце нет операций с Мбаллами.Интерфейс отображает название месяца и пустое состояние с текстом “В этом месяце не было операций с баллами”. Если доступны операции предыдущих месяцев, интерфейс продолжает отображать их ниже пустого состояния.2Не реализовано
OQ5.7-10

6. Открытые вопросы

Сверка с кодом: BRD 5.7 v0.1 · репозиторий booking.mobile.flutter · commit b44cfa2 / origin/dev · 31.07.26 · якорь lib/src/feature/profile_page/mpoints/ Сводка: 22 вопроса (Open 20 · Подтверждено 2) Маршрутизация без сверки с гайдбуком (гайдбук не передавался).

IDИсточникВопросКомуСтатусРекомендацииИтоговое решение
OQ5.7-1Код FR5.7-2Требование говорит: история операций группируется по месяцам, для текущего месяца заголовок “В этом месяце”, для прошлых — название месяца, например “В апреле”. В коде никакой группировки нет: операции выводятся одним сплошным списком в том порядке, в каком их вернул сервер. Заголовков месяцев в приложении не существует вовсе — ни текста “В этом месяце”, ни чего-либо похожего по коду не найдено. Пользователь видит подряд идущие записи без разделителей, и понять границу месяца можно только по дате справа. \ mpoints_screen.dart:279-291 (плоский ListView.builder по всему списку без секций), поиск по всему lib/ по строкам “этом месяце” и “В апреле” не даёт совпаденийРазработкаOpenЗавести тикет в Bitrix: добавить группировку списка по месяцам с заголовками секций и правилом именования текущего и прошлых месяцев, тексты заголовков сверить с макетом.добавить группировку списка по месяцам
OQ5.7-2Код FR5.7-3Требование говорит: для каждой операции отображается название объекта. В коде первой строкой плитки выводится текстовое описание, которое приходит с сервера, а не название объекта. Название объекта в ответе сервера есть, но интерфейс его нигде не использует — из объекта берётся только картинка для логотипа. Если сервер описание не прислал, вместо названия показывается заглушка “Нет описания”. \ m_point_tile.dart:37-42 (выводится description, иначе “Нет описания”), m_point_tile.dart:21-31 (из объекта берётся только urlImage), mpoint_model.dart:58 (поле name у объекта есть и не читается)БизнесOpen(А) оставить описание с сервера как основной текст и поправить формулировку BRD (рекоменд.) — описание уже содержит человекочитаемую фразу и покрывает операции без объекта; (Б) выводить название объекта первой строкой, а описание второй.Жду решения бизнеса.
OQ5.7-3Код FR5.7-3Требование говорит: для списания по подписке в операции показывается назначение “Оплата подписки”. В коде такого текста нет вообще. В справочнике причин есть пункт “Оплата тарифа”, но он помечен комментарием “В разработке”, и ни один текст причины на экран не выводится — вместо него всегда показывается описание с сервера. Поэтому проверить, как выглядит списание за подписку, сейчас невозможно. \ mpoint_model.dart:79 (tariffPayment “Оплата тарифа” с пометкой “В разработке”), m_point_tile.dart:37-51 (текст причины не используется, выводится description и подпись “Начисление” или “Списание”), поиск по lib/ по строке “Оплата подписки” пустБизнесOpenПодтвердить, попадают ли списания за подписку в эту историю и каким текстом их подписывать. После ответа передать в разработку задачу на вывод назначения операции, сейчас справочник причин на экране не задействован.Пока что не реализовано, жду ответа от бизнеса.
OQ5.7-4Код FR5.7-7Требование говорит: панель фильтрации называется “Что показывать?”. В коде заголовок другой — “Какие действия показывать сначала?”. Формулировка в коде обещает сортировку (что показывать сначала), хотя панель на самом деле фильтрует список, а не меняет порядок. Сами варианты выбора совпадают с BRD: “Все”, “Начисления”, “Списания”, по умолчанию выбран вариант “Все”. \ mpoints_screen.dart:100 (заголовок “Какие действия показывать сначала?”), sort_options.dart:47-50 (варианты Все, Начисления, Списания), mpoint_cubit.dart:142 (значение по умолчанию all)БизнесOpen(А) привести заголовок в приложении к формулировке BRD “Что показывать?” (рекоменд.) — текущий текст вводит в заблуждение, обещая сортировку; (Б) зафиксировать в BRD текущую формулировку из приложения.привести заголовок в приложении к формулировке BRD
OQ5.7-5Код FR5.7-8Требование говорит: после выбора типа операций панель фильтрации остаётся открытой, пока пользователь сам её не свернёт. В коде панель закрывается сразу по нажатию на любой вариант: закрытие зашито в общий компонент списка вариантов и срабатывает раньше, чем применяется фильтр. Увидеть отмеченный вариант после выбора пользователь не успевает. Этот же компонент используется и на других экранах, поэтому изменение поведения затронет их тоже. \ filter_selector.dart:79-84 (панель закрывается сразу при нажатии, затем вызывается обработчик выбора), mpoints_screen.dart:105-126 (экран использует общий компонент FilterSelector)БизнесOpen(А) зафиксировать в BRD фактическое поведение, панель закрывается сразу после выбора (рекоменд.) — это общий шаблон приложения и правка компонента затронет другие экраны; (Б) оставить панель открытой только на экране Мбаллов, что потребует отдельной реализации.зафиксировать в BRD фактическое поведение, панель закрывается сразу после выбора
OQ5.7-6Код FR5.7-8, FR5.7-13Проблема: если пользователь сначала задал период, а затем сменил тип операций, период молча перестаёт действовать. При смене типа список пересобирается от полного набора данных, а не от того, что осталось после применения периода. При этом кнопка периода продолжает показывать выбранные даты, то есть интерфейс сообщает пользователю неправду. Обратный порядок действий работает корректно: если сначала выбрать тип, а потом период, применяются оба ограничения. \ mpoint_cubit.dart:93 (источником всегда становится полный исходный список, если отфильтрованный не передан явно), mpoints_screen.dart:121-123 (экран вызывает фильтр без передачи списка, отфильтрованного по периоду), mpoint_cubit.dart:49-56 (при выборе периода отфильтрованный список передаётся явно)РазработкаOpenЗавести тикет в Bitrix: хранить период и тип как два независимых условия в состоянии экрана и всегда пересобирать список от исходных данных с учётом обоих, а не от полного списка.хранить период и тип как два независимых условия в состоянии экрана и всегда пересобирать список от исходных данных с учётом обоих, а не от полного списка
OQ5.7-7Код FR5.7-9, FR5.7-12Требование говорит: в панели выбора периода есть действия “Сбросить” и “Готово”. В коде правая кнопка называется “Готово” и совпадает с BRD, а левая называется “Очистить”. Поля дат и календарь на месте и названы так же, как в BRD: “Дата начала” и “Дата Окончания”. Расхождение только в названии кнопки сброса. \ modal_bottom_sheet.dart:465 (кнопка “Очистить”), modal_bottom_sheet.dart:499 (кнопка “Готово”), modal_bottom_sheet.dart:527 и modal_bottom_sheet.dart:544 (поля “Дата начала” и “Дата Окончания”)БизнесOpen(А) зафиксировать в BRD фактическое название “Очистить” (рекоменд.) — панель общая для нескольких экранов, переименование затронет их все; (Б) переименовать кнопку в “Сбросить” в соответствии с BRD.зафиксировать в BRD фактическое название “Очистить”
OQ5.7-8Код FR5.7-12Требование говорит: по действию сброса интерфейс очищает диапазон и возвращает выбор периода к исходному состоянию. В коде нажатие на кнопку сброса не очищает панель, а сразу закрывает её и снимает период с истории операций. Панель с пустым календарём пользователь увидит, только если откроет её заново. При этом в коде есть готовая функция очистки полей и календаря прямо внутри панели, но она нигде не вызывается — то есть поведение “очистить и остаться” когда-то задумывалось, но не подключено. \ modal_bottom_sheet.dart:460-464 (кнопка закрывает панель с результатом сброса), mpoint_cubit.dart:60-84 (сброс периода и возврат полного списка), modal_bottom_sheet.dart:412-441 (функция очистки не вызывается ниоткуда)БизнесOpenОпределить ожидаемое поведение: (А) очищать поля и календарь, оставляя панель открытой (рекоменд.) — соответствует формулировке BRD и уже частично написано в коде; (Б) зафиксировать в BRD, что сброс закрывает панель. Отдельно попросить разработку убрать неиспользуемую функцию очистки.Жду решения бизнеса.
OQ5.7-9Код FR5.7-14Требование говорит: пока история грузится, показываются плейсхолдеры периода, заголовков месяцев и строк операций. В коде во время загрузки экран пустой: тело экрана отрисовывает заглушку нулевого размера, а кнопка фильтрации в шапке скрыта, пока данные не пришли. Скелетонов и мерцающих плашек на этом экране не заводили. Пользователь видит белый экран с заголовком “Мбаллы” и не понимает, идёт загрузка или данных нет. \ mpoints_screen.dart:295-297 (для всех состояний кроме загруженного возвращается пустая заглушка), mpoints_screen.dart:93 (кнопка фильтрации рисуется только в состоянии “загружено”), поиск Shimmer по разделу профиля совпадений не даётРазработкаOpenЗавести тикет в Bitrix: добавить состояние загрузки со скелетонами кнопки периода, заголовков месяцев и строк операций по макету, кнопку фильтрации при этом не скрывать.обавить состояние загрузки
OQ5.7-10Код FR5.7-15Требование говорит: если в месяце нет операций, показывается название месяца и текст “В этом месяце не было операций с баллами”, а операции прошлых месяцев продолжают выводиться ниже. В коде пустого состояния нет ни в каком виде: когда список пуст, экран показывает просто ничего — ни текста, ни иконки. Это напрямую связано с отсутствием группировки по месяцам: без секций месяца показывать “пусто” негде. Заметнее всего это после применения фильтра или периода, под который не попала ни одна операция. \ mpoints_screen.dart:278-292 (список строится без ветки для пустого результата), поиск по lib/ по строке “не было операций” не даёт совпаденийРазработкаOpenЗавести тикет в Bitrix: реализовать пустое состояние месяца вместе с группировкой по месяцам (см. OQ5.7-1) и отдельно пустое состояние для случая, когда под фильтр или период не попало ни одной операции.реализовать пустое состояние месяца
OQ5.7-11Код (обратный проход)Что нашли: у экрана есть третье состояние, которого нет в BRD, — ошибка загрузки. Если сервер не ответил или вернул пустой результат, экран показывает ровно то же, что и во время загрузки: пустое белое поле без сообщения, без объяснения и без кнопки повтора. Отличить ошибку от “операций нет” пользователь не может. В разделе S4 “Дополнительные состояния экрана” описаны только загрузка и пустой месяц. \ mpoint_cubit.dart:15-26 (состояние ошибки создаётся и при пустом ответе, и при исключении), mpoints_screen.dart:295-297 (состояние ошибки отрисовывается той же пустой заглушкой)БизнесOpenОписать в BRD состояние ошибки загрузки: текст, иконку и наличие повторной попытки. (А) показывать сообщение об ошибке с кнопкой повтора (рекоменд.) — иначе пользователь считает, что операций нет; (Б) показывать то же пустое состояние, что и при отсутствии операций.показывать сообщение об ошибке с кнопкой повтора
OQ5.7-12Код (обратный проход)Что нашли: в нумерации функциональных требований пропущен FR5.7-11 — таблица идёт подряд с FR5.7-1 по FR5.7-10, а затем сразу FR5.7-12. На реализацию это не влияет, но мешает ссылаться на требования из тикетов и тест-кейсов: непонятно, требование удалили осознанно или потеряли при редактировании. По расположению пропуск приходится на сценарий S3 “Выбор периода”, между “пользователь задаёт период” и “пользователь сбрасывает период”. Возможно, там было требование о валидации диапазона или о поведении при выборе только одной даты — в коде такое поведение как раз не описано и работает молча. \ раздел 5 BRD, соседние строки FR5.7-10 и FR5.7-12БизнесOpenВосстановить пропущенное требование или явно пометить номер как изъятый, чтобы не возникало сомнений при трассировке. Отдельно проверить, не потерялось ли требование о поведении при выборе одной даты в календаре.-
OQ5.7-13Код (обратный проход)Что нашли: дата, по которой операция попадает в выбранный период, и дата, которую пользователь видит в строке операции, считаются по-разному. В списке дата показывается с поправкой на часовой пояс устройства, а при фильтрации по периоду поправка не применяется — берётся дата в исходном виде. Из-за этого операция, совершённая поздно вечером, может отображаться одним днём, а фильтроваться как совершённая накануне. Для пользователя это выглядит так: выбрал период, включающий видимую дату операции, а операция из списка пропала. \ m_point_tile.dart:87-91 вместе с utils.dart:924-933 (при выводе к дате прибавляется смещение часового пояса), mpoint_cubit.dart:37 (при фильтрации берутся год, месяц и день без поправки)РазработкаOpenЗавести тикет в Bitrix: привести к одному правилу дату отображения и дату фильтрации, приводя обе к местному времени устройства перед сравнением.ривести к одному правилу дату отображения и дату фильтрации
OQ5.7-14Код (обратный проход)Что нашли: операции с нулевым количеством баллов попадают в фильтр “Начисления”. Разделение построено на знаке числа: всё, что меньше нуля, считается списанием, всё остальное, включая ноль, — начислением. В BRD тип операции описан только как начисление или списание, нулевого случая нет. Бывают ли такие операции в реальных данных, неизвестно, но в тестовых данных приложения запись на ноль баллов есть. \ mpoint_cubit.dart:108-124 (списание при сумме меньше нуля, начисление при сумме больше либо равной нулю), m_point_tile.dart:16 (тот же признак для подписи в строке), mock_mpoints_repository.dart (тестовая запись point_003 с суммой 0)БизнесOpenПодтвердить у бэкенда и продукта, возможны ли операции на ноль баллов. (А) если возможны — скрывать их из истории (рекоменд.), поскольку они ничего не сообщают пользователю; (Б) если невозможны — зафиксировать это как ограничение и передать в разработку задачу перестать определять тип операции по знаку суммы.Вопрос к бизнесу, но мне кажется, что невозможны
OQ5.7-15Код (обратный проход)Что нашли: приложение забирает всю историю операций одним запросом без параметров — ни период, ни тип, ни постраничная загрузка серверу не передаются. Оба фильтра работают только на уже скачанном списке. Значит, при большой истории экран будет долго грузиться и держать всё в памяти, а “обновление истории за выбранный интервал” из FR5.7-13 фактически не запрос к серверу, а пересборка списка на устройстве. Подгрузки при прокрутке и обновления жестом “потянуть вниз” на экране тоже нет. \ mpoints_repository.dart:21-31 (вызов метода истории с пустым телом запроса), mpoint_cubit.dart:35-43 и mpoint_cubit.dart:86-127 (период и тип применяются к уже загруженному списку)РазработкаOpenОценить максимальный объём истории на реальных аккаунтах. При риске деградации — Завести тикет в Bitrix: перевести период и тип на параметры серверного метода и добавить постраничную загрузку.Я согласен, по-хорошему переделать ручку надо. Вопрос к бизнесу.
OQ5.7-16Код (обратный проход)Проблема: строка операции может уронить экран, если сервер пришлёт причину начисления, которой нет в справочнике приложения, или не пришлёт её вовсе. Приложение по причине решает, чей логотип показывать — площадки или самого приложения, — и для неизвестной причины вместо запасного варианта выбрасывает ошибку. При отсутствии причины подставляется значение “Неизвестная причина”, которое тоже не обработано и приводит к той же ошибке. В справочнике при этом три причины помечены как “В разработке”, то есть появление новых значений с сервера вполне вероятно. \ mpoint_model.dart:99-120 (для значения вне двух перечисленных списков выбрасывается исключение), mpoint_model.dart:83 (значение по умолчанию noReason не входит ни в один список), m_point_tile.dart:15 (вызов происходит при отрисовке каждой строки)РазработкаOpenЗавести тикет в Bitrix: заменить выброс исключения на безопасное поведение по умолчанию (логотип приложения) и убедиться, что неизвестный код причины не ломает разбор ответа сервера.Прямое вытекающее из OQ5.7-15 я бы переделал ручку. Жду решения бизнеса.
OQ5.7-17Код (обратный проход)Что нашли: календарь выбора периода не даёт выбрать будущие даты — верхняя граница жёстко ограничена сегодняшним днём. В BRD ограничений на период не описано, сказано только, что пользователь выбирает дату начала и дату окончания. Для истории операций такое ограничение выглядит логично, но его стоит зафиксировать, чтобы оно не считалось дефектом. Нижней границы при этом нет — уйти в прошлое можно сколь угодно далеко. \ modal_bottom_sheet.dart:567 (верхняя граница календаря равна текущему моменту), modal_bottom_sheet.dart:656 (режим выбора диапазона)БизнесOpenЗафиксировать в BRD ограничение периода сегодняшним днём и решить, нужна ли нижняя граница, например дата регистрации аккаунта.Ну, в будущем и операций нет, но тем не менее жду решения бизнеса.
OQ5.7-18Код (обратный проход)Что нашли: у каждой операции с сервера приходит признак “в архиве”, но интерфейс его никак не использует — архивные операции показываются в истории наравне с обычными. Более того, если сервер этот признак не пришлёт, приложение по умолчанию считает операцию архивной, что говорит о неотлаженной договорённости с бэкендом. В BRD понятие архивной операции не описано вовсе, поэтому непонятно, должна ли такая запись быть видна пользователю. \ mpoint_model.dart:31 (поле isArchived со значением по умолчанию “да”), поиск по lib/ показывает, что на экране Мбаллов это поле не читаетсяБизнесOpenУточнить у бэкенда смысл архивной операции и решить, показывать ли такие записи. Если скрывать — описать правило в BRD и передать в разработку вместе с просьбой убрать небезопасное значение по умолчанию.Вопрос к бизнесу. Я не знаю, что такое архивная операция.
OQ5.7-19Код (обратный проход)Что нашли: весь справочный текст о Мбаллах зашит прямо в код приложения, а не приходит с сервера, и рядом стоит пометка разработчика “перенести”. Там же зашиты конкретные числа: минимум 10 баллов к списанию, 1 процент за стандартный заказ, от 5 до 10 процентов за площадки с повышенным начислением, 100 баллов за заполнение профиля, 300 за приглашение друга и 100 за регистрацию. Эти числа никак не связаны с настройками балльной системы из раздела 8.4.2, на который ссылается BRD, поэтому при изменении правил текст в приложении устареет молча и до следующего релиза. В самом BRD содержание справки не зафиксировано — сказано только “справочная информация о Мбаллах”. \ mpoints_screen.dart:20-54 (два варианта текста заданы константами с пометкой “Перенести”), mpoints_screen.dart:364-406 (свёрнутый и развёрнутый варианты в справке)БизнесOpenСверить зашитые числа с действующими настройками балльной системы и зафиксировать текст справки в BRD. Далее выбрать: (А) отдавать текст справки с сервера (рекоменд.) — изменение правил перестанет требовать релиза; (Б) оставить текст в коде, но ввести регламент сверки при каждом изменении настроек.Жду решения бизнеса.
OQ5.7-20Код (обратный проход)Что нашли: баланс в блоке “У вас” берётся не из истории операций, а из данных профиля, загруженных ранее. Экран Мбаллов эти данные не перезапрашивает, поэтому если баланс изменился с момента загрузки профиля, в справке будет показано устаревшее число. Сложить историю и получить тот же баланс тоже нельзя: история отдаётся отдельным методом и остатка не содержит. В BRD источник баланса не оговорён. \ mpoints_screen.dart:262-267 (баланс берётся из данных профиля), profile_screen.dart:458 (тот же источник на главном экране профиля), mpoints_repository.dart:21-31 (метод истории баланс не возвращает)РазработкаOpenПроверить, как часто перезагружается профиль при переходах внутри приложения. Если реже, чем открывается экран Мбаллов — Завести тикет в Bitrix: обновлять баланс при открытии экрана Мбаллов.Вроде не очень критично, но жду решения бизнеса.
OQ5.7-21Код FR5.7-4, FR5.7-6Что подтверждено: возврат с экрана и закрытие панелей работают так, как описано в BRD. В шапке экрана есть кнопка возврата, которая закрывает экран “Мбаллы” и возвращает пользователя на предыдущий шаг. Панель справки открывается как нижняя шторка с полоской-ручкой и закрывается свайпом вниз или касанием вне неё, возвращая пользователя на экран “Мбаллы”. Заголовок экрана — “Мбаллы”, как и в BRD. \ appbar_with_back_icon.dart:19-36 (кнопка возврата закрывает экран), mpoints_screen.dart:88-91 (заголовок “Мбаллы”), modal_bottom_sheet.dart:196-251 (нижняя шторка с ручкой и закрытием жестом)—ПодтвержденоДополнительных действий не требуется.—
OQ5.7-22Код FR5.7-5, FR5.7-10Что подтверждено: состав справки и выбор диапазона в календаре соответствуют BRD. Справка открывается нижней шторкой с блоком “У вас”, где показан текущий баланс, и блоком “Мбаллы” со справочным текстом, который можно развернуть и свернуть. В панели периода есть поля “Дата начала” и “Дата Окончания”, выбранный в календаре диапазон подсвечивается, а его границы подставляются в поля. В строке операции тип подписан как “Начисление” или “Списание”, сумма выводится со знаком плюс или минус, рядом стоит дата. \ mpoints_screen.dart:258-268 (шторка с заголовком “У вас”), mpoints_screen.dart:302-460 (баланс и разворачиваемый блок “Мбаллы”), modal_bottom_sheet.dart:616-655 (подсветка диапазона и подстановка дат в поля), m_point_tile.dart:43-91 (подпись типа, знак суммы и дата)—ПодтвержденоДополнительных действий не требуется.—

0 items under this folder.