fix(tradein): вернуть фотографии подсказок Avito IMV задним числом (#2674) #2693

Merged
bot-backend merged 1 commit from fix/2674-parsed-but-not-stored into main 2026-08-06 05:40:03 +00:00

1 commit

Author SHA1 Message Date
521d35fe49 fix(tradein): вернуть фотографии подсказок Avito IMV задним числом (#2674)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / changes (pull_request) Successful in 10s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 3m1s
Класс «площадка прислала, парсер разобрал, до базы не доехало». Правка #2682
починила ПУТЬ (парсер отдаёт imageLink, INSERT его перечисляет), но только для
будущих строк — исторические так и остались с NULL.

Прод 2026-08-06, точные count(*):
  house_suggestions            25 055 строк, image_link заполнен у 0
  house_imv_evaluations         2 685 строк, raw_response есть у 2 685,
                                suggestions.items[0].imageLink есть у 2 685

Сырьё сохранено целиком, поэтому исторические ВОССТАНОВИМЫ: ключ подсказки
(house_id, ext_item_id) однозначно ложится на (e.house_id, item->>'id').
SELECT-прогон того же JOIN на проде: 21 480 из 25 055 (85.7%) восстановимо.

Остальные 3 575 невосстановимы в принципе, и это не недоделанный бэкфилл:
house_imv_evaluations имеет UNIQUE(house_id) и ON CONFLICT DO UPDATE, поэтому
повторная оценка дома перетирает raw_response — старый набор подсказок остаётся
без своего сырья. Пишу это в комментарий к колонке, чтобы следующий читатель
не искал баг в разнице 25 055 vs 21 480.

Идемпотентно: WHERE image_link IS NULL — повтор не трогает заполненное и не
перетирает то, что напишет живой скрейпер.
2026-08-06 05:57:00 +05:00