fix(tradein): вернуть фотографии подсказок Avito IMV задним числом (#2674) (#2693)
All checks were successful
Deploy Trade-In / changes (push) Successful in 11s
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / build-browser (push) Has been skipped
Deploy Trade-In / test (push) Successful in 2m54s
Deploy Trade-In / build-backend (push) Successful in 28s
Deploy Trade-In / deploy (push) Successful in 1m7s
All checks were successful
Deploy Trade-In / changes (push) Successful in 11s
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / build-browser (push) Has been skipped
Deploy Trade-In / test (push) Successful in 2m54s
Deploy Trade-In / build-backend (push) Successful in 28s
Deploy Trade-In / deploy (push) Successful in 1m7s
This commit is contained in:
parent
e1c26c212a
commit
a7ca0e9ee8
1 changed files with 44 additions and 0 deletions
|
|
@ -0,0 +1,44 @@
|
|||
-- 221_backfill_house_suggestions_image_link.sql
|
||||
-- Purpose (#2674, класс «площадка прислала, парсер разобрал, до базы не доехало»):
|
||||
-- вернуть фотографии подсказок Avito IMV задним числом.
|
||||
--
|
||||
-- Контекст. Колонка house_suggestions.image_link существует с миграции 064; до
|
||||
-- PR #2682 (2026-08-06) парсер выбрасывал suggestions.items[].imageLink, а INSERT
|
||||
-- её не перечислял. Правка #2682 чинит только БУДУЩИЕ строки. На проде на момент
|
||||
-- этой миграции: 25 055 строк house_suggestions, image_link заполнен у 0 (count
|
||||
-- точный, не reltuples).
|
||||
--
|
||||
-- Почему исторические ВОССТАНОВИМЫ. Полный ответ /web/1/realty-imv/get-data
|
||||
-- сохраняется целиком в house_imv_evaluations.raw_response (jsonb) — 2 685 строк,
|
||||
-- у ВСЕХ 2 685 присутствует suggestions.items[0].imageLink. Ключ подсказки
|
||||
-- (house_id, ext_item_id) однозначно соответствует (e.house_id, item->>'id').
|
||||
--
|
||||
-- Прод-замер ДО (SELECT-прогон этого же JOIN, 2026-08-06):
|
||||
-- всего 25 055 · восстановимо 21 480 (85.7%) · не восстановимо 3 575 (14.3%).
|
||||
-- 3 575 — это подсказки, чей house_id переоценивался позже: house_imv_evaluations
|
||||
-- имеет UNIQUE(house_id) и ON CONFLICT DO UPDATE перетирает raw_response свежим
|
||||
-- ответом, поэтому старый набор подсказок остаётся без своего сырья. Эти строки
|
||||
-- невосстановимы в принципе — не «недоделанный бэкфилл», а утраченный источник.
|
||||
--
|
||||
-- Идемпотентно: WHERE hs.image_link IS NULL — повторный прогон не трогает уже
|
||||
-- заполненные строки и не перетирает то, что напишет живой скрейпер.
|
||||
--
|
||||
-- Apply after: 216_dead_code_sweep.sql
|
||||
|
||||
BEGIN;
|
||||
|
||||
UPDATE house_suggestions hs
|
||||
SET image_link = j.item ->> 'imageLink'
|
||||
FROM house_imv_evaluations e
|
||||
CROSS JOIN LATERAL jsonb_array_elements(e.raw_response -> 'suggestions' -> 'items') AS j(item)
|
||||
WHERE e.house_id = hs.house_id
|
||||
AND j.item ->> 'id' = hs.ext_item_id
|
||||
AND hs.image_link IS NULL
|
||||
AND nullif(j.item ->> 'imageLink', '') IS NOT NULL;
|
||||
|
||||
COMMENT ON COLUMN house_suggestions.image_link IS
|
||||
'Ссылка на фото лота (suggestions.items[].imageLink). Пишется скрейпером с #2682; '
|
||||
'исторические строки восстановлены из house_imv_evaluations.raw_response миграцией 221 '
|
||||
'(21 480 из 25 055; остальные потеряли сырьё при перезаписи оценки дома).';
|
||||
|
||||
COMMIT;
|
||||
Loading…
Add table
Reference in a new issue