gendesign/tradein-mvp/backend/data/sql/108_clean_avito_addresses_v2.sql
bot-backend c6bfce3d1a
Some checks failed
CI / changes (push) Successful in 10s
CI / changes (pull_request) Successful in 10s
CI / frontend-tests (push) Successful in 1m22s
CI / openapi-codegen-check (push) Failing after 2m22s
CI / frontend-tests (pull_request) Successful in 1m5s
CI / openapi-codegen-check (pull_request) Failing after 1m45s
CI / backend-tests (push) Failing after 9m8s
CI / backend-tests (pull_request) Failing after 8m54s
fix(migrations): живые миграции для прод-фиксов #1361/#1419/#1364
Правки уже-применённых миграций (85/062/080) не долетают до прода через
_schema_migrations. Дописаны отдельные миграции на живых таблицах:
- 158: pzz_zones_ekb UNIQUE NULLS NOT DISTINCT (rosreestr_id) (#1361)
- tradein 108: повторный backfill Avito-адресов улучшенным regexp (#1419)
- tradein 109: пересчёт asking_to_sold_ratios secondary-only (#1364/#1186)

Все три dry-run (BEGIN..ROLLBACK) против прод-схемы: PSQL_RC=0.
2026-06-15 21:31:28 +03:00

27 lines
1.8 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 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;