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
Правки уже-применённых миграций (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.
27 lines
1.8 KiB
PL/PgSQL
27 lines
1.8 KiB
PL/PgSQL
-- 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;
|