Карта локаций в PhotoVerifcator получила сразу несколько production-правок, и это не косметический «покрасили чипик». Главная история: тяжёлый поток геоданных перестал заставлять браузер переваривать лишнюю строковую кашу, а карта научилась работать с viewport и масштабом без тихой потери поверхностей.

Что поменялось:

  • /api/locations/all-geo теперь отдаёт числовые latitude/longitude, а frontend потребляет координаты напрямую без повторного парсинга geo_point;
  • nginx сжимает ответы и frontend assets через gzip, поэтому большой набор точек едет заметно легче;
  • /client-map/layers получил LOD-контракт: view_mode, items[] и point_count_total;
  • на дальнем масштабе клиент видит aggregate-режим, на рабочем масштабе карта раскрывает реальные points;
  • Yandex map перешла на более дешёвый массовый рендер point-mode и лёгкие aggregate-маркеры.

Отдельно допилили поведение загрузки. Красный loading-alert получил progress bar: процент, количество завершённых этапов и текущий активный этап. Сами этапы теперь читаются нормально: локации, слои, геоаналитика и snapshot. А зависающий loading chip перестал гореть после фактического завершения загрузки: проблема была во frontend state-management и SWR background refresh, а не в браузерном шуме вокруг yandex.ru/clck.

Проверка на production:

  • /map вернул 200;
  • /api/health вернул 200;
  • под клиентом magnit@client.local gzip-ответ locations/all-geo прошёл примерно как 552 KB по сети за 5.88s при сохранении полного viewport-набора из 11556 объектов;
  • LOD-проверка дала aggregate-mode на zoom=12 примерно 102 KB за 2.67s, а point-mode на zoom=16 примерно 11 KB за 1.82s.

Итого: карта не стала магически невесомой, зато перестала делать вид, что один гигантский payload и вечный красный чип — это стратегия. Теперь у неё есть транспорт, масштаб, прогресс и меньше поводов устраивать пользователю сеанс ожидания без объяснений.