-- 108_clean_avito_addresses_v2.sql
-- #1419 — повторный backfill очистки listings.address (Avito) на СУЩЕСТВУЮЩЕМ проде.
--
-- ПОЧЕМУ ОТДЕЛЬНАЯ МИГРАЦИЯ. Правка regexp в 062_clean_avito_addresses.sql НЕ долетает
-- до прода: 062 уже в _schema_migrations → на деплое пропускается, ранее накопленные
-- «грязные» адреса (хвост «Площадь NN.N м²», «от N мин.») остаются. Эта миграция
-- прогоняет улучшенный UPDATE на живой таблице (062 — для fresh-install).
--
-- ЧТО ЧИНИТ. Старый паттерн `Площадь \d` отрезал только до первой цифры площади и
-- не покрывал десятичные/единицы → хвост «Площадь 45.3 м²» оставался в адресе. Новый
-- паттерн `Площадь \d+(\.\d+)?\s?(м²|м2|кв\.?\s?м)` срезает полностью.
-- Idempotent: regexp_replace на уже-чистой строке — no-op; WHERE отбирает только
-- ещё-грязные строки. Под gate _schema_migrations (ровно один раз).
-- Apply after: 107_scrape_schedules_seed_cian_city_sweep.sql

BEGIN;

UPDATE listings
   SET address = trim(both ' ,.' FROM
                       regexp_replace(
                         regexp_replace(address, '\.?css-[a-z0-9_-]+\s*\{[^}]*\}', '', 'gi'),
                         '\s*(Площадь \d+(\.\d+)?\s?(м²|м2|кв\.?\s?м)|от \d+\s?мин\.|css-[a-z0-9_-]+).*$', '', 'i'
                       ))
 WHERE source = 'avito'
   AND (address ~* 'css-[a-z0-9_-]+' OR address ~* 'Площадь \d+(\.\d+)?\s?(м²|м2|кв\.?\s?м)|от \d+\s?мин\.');

COMMIT;
