На странице загрузки медиапланов в PhotoVerifcator раньше случалась классика жанра: инвентарный Excel приходил как список поверхностей, а система пыталась засунуть его в роль кривого медиаплана. Теперь этот фокус сняли с программы.

В production добавлен preview-first сценарий с автоопределением типа Excel. Russ-подобные списки поверхностей теперь импортируются как обычный client layer в кампанию, а не как поломанный набор MediaPlanItem. Если у части строк нет координат, UI предупреждает об этом и предлагает догеокодировать пропуски перед импортом.

Параллельно backend parser сделали универсальнее: детекция inventory layer стала признаковой, а не шаблонной. Поддерживаются альтернативные заголовки вроде «Адрес», «Регион подробно», «Номер поверхности», «Паспорт», «Координаты», а также оба сценария — раздельные Широта/Долгота и одна колонка Координаты. У импортированных точек сохраняются исходный row payload и источник координат: provided или geocoded.

  • Russ-подобные inventory Excel теперь попадают в client layer, а не в кривой медиаплан
  • на upload-странице появился preview-first flow с автоопределением типа файла
  • parser научился переваривать разные vendor-форматы и плавающие служебные колонки
  • поддержаны альтернативные заголовки и оба варианта хранения координат
  • production rollout включал SQL-миграцию для client_layer_points и рестарт backend/frontend/nginx
  • smoke-check: /api/health → 200, /campaigns/8/media-plans → 200