← ко всем проблемам
Глобальная перезагрузка меню при каждом действии
Симптом (что видит пользователь / что реально происходит)
- При каждом открытии меню или выборе ресторана мобильное приложение запрашивает ПОЛНЫЙ список всех ресторанов сети.
- Параллельно запрашивается ПОЛНОЕ меню сразу по всем ресторанам (все позиции, все модификаторы, все опции).
- Т.е. не "дай меню ресторана 114", а "дай меню всей компании целиком" каждый раз.
Почему это больно бизнесу
- Пока филиалов мало — пользователь почти не замечает лаги.
- Когда сеть разрастается, объём ответа вырастает до мегабайт, и пользователь ждёт секунды.
- Чем больше точек открывается — тем медленнее работает приложение. Рост компании = деградация UX.
- Пользователь начинает воспринимать бренд как "тормозной" и может уйти до завершения заказа.
Техническая причина
- Нет выборочной загрузки меню по конкретному ресторану (нет эндпоинта вида /restaurants/{id}/menu).
- Нет кеширования меню на клиенте — меню заново тянется при каждом действии.
- Нет версионирования данных меню (menu_version), из-за этого приложение не может понять, что данные не поменялись и можно не качать снова.
Что надо сделать (технические шаги)
- Сделать backend-эндпоинт `/restaurants/{id}/menu`, который отдаёт меню только выбранного ресторана, а не всей сети.
- Добавить версионирование меню: backend вместе с меню отдаёт поле `menu_version` (timestamp или hash).
- На клиенте хранить кеш меню ресторана + версию. При повторном выборе того же ресторана сначала показывать кеш моментально, и только потом тихо проверять, не изменилась ли версия.
- Если версия такая же — не скачивать заново мегабайты, не блокировать UI пользователя.