diff --git a/tradein-mvp/backend/data/sql/238_listings_ceiling_height_unify.sql b/tradein-mvp/backend/data/sql/238_listings_ceiling_height_unify.sql index b9247c2e..32220153 100644 --- a/tradein-mvp/backend/data/sql/238_listings_ceiling_height_unify.sql +++ b/tradein-mvp/backend/data/sql/238_listings_ceiling_height_unify.sql @@ -31,7 +31,8 @@ -- 3. numeric(5,2) против numeric(3,2): у 019-колонки потолок 9.99, и запись -- out-of-range роняет ВЕСЬ батч DataError'ом (per-lot SAVEPOINT ловит только -- IntegrityError) — это уже приходилось обходить инлайн-гейтом в yandex SERP. --- 4. После переноса она — надмножество: 14 824 + 879 = 15 703 против 8 554. +-- 4. После переноса она — надмножество: 15 591 против 8 554 (посчитано +-- симуляцией на проде: 14 824 − 110 мусорных + 877 перенесённых). -- -- ── ЧТО ДЕЛАЕТ ЭТА МИГРАЦИЯ ───────────────────────────────────────────────── -- 1. Чистит невозможные значения в ОБЕИХ колонках (вне 2.0–6.0 м). @@ -62,9 +63,12 @@ UPDATE listings AND ceiling_height NOT BETWEEN 2.0 AND 6.0; -- ── 2. Перенос уникальных значений в канон ────────────────────────────────── --- Ожидаемо 879 строк: 855 cian (писал только в 019-колонку) + 24 yandex (detail --- записал, а SERP по этой карточке значения не дал). Пересечение переносить --- нечего — значения там тождественны (см. замер выше), поэтому только IS NULL. +-- Ожидаемо 877 строк: 855 cian (писал только в 019-колонку) − 2 мусорных, +-- отсеянных шагом 1, + 24 yandex (detail записал, а SERP по этой карточке +-- значения не дал). Пересечение переносить нечего — значения там тождественны +-- (см. замер выше), поэтому только IS NULL. +-- Итог после миграции (симуляция на проде 2026-08-07): ceiling_height_m = 15 591 +-- непустых, из них 0 вне диапазона 2.0–6.0. UPDATE listings SET ceiling_height_m = ceiling_height WHERE ceiling_height_m IS NULL