fix(tradein/db): разовая чистка 1123 адресов Авито с приклеенным рейтингом (#2814) #2818

Merged
bot-backend merged 1 commit from fix/2814-address-backfill into main 2026-08-10 10:22:34 +00:00

1 commit

Author SHA1 Message Date
bot-backend
0a99555351 fix(tradein/db): разовая чистка 1123 адресов Авито с приклеенным рейтингом (#2814)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 13s
CI / changes (pull_request) Successful in 13s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
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 4m8s
Парсер починен в #2815, но уже записанные строки сами не вылечатся: апсерт пишет
address = COALESCE(listings.address, EXCLUDED.address) — при конфликте адрес
осознанно не перезаписывается (#2777). Миграция 254 режет хвост «·<цифра>» по
ДОСЛОВНО парсерному правилу _NOT_ADDRESS_TAIL_RE.

Паритет проверен не по глазам: все 1123 сырых адреса выгружены с прода и
прогнаны через живой _clean_address в боевом контейнере tradein-scraper —
rows=1123 mismatches=0. Dry-run на проде (BEGIN…ROLLBACK) экзактным файлом:
UPDATE 1123, загрязнённых после 0, районные хвосты «· р-н Академический»
сохранены 296/296.

Обратимость без новой таблицы: прежнее значение уже лежит в
raw_payload->>'address' (пишется на INSERT, отсутствует в ON CONFLICT DO UPDATE
SET, совпадает с address побайтово у 1123 из 1123). Откат-предикат в шапке
миграции проверен в dry-run: 1123 совпадения по всей таблице, все наши,
восстановление побайтовое; 10 строк с грязным raw_payload и уже нормализованным
адресом он не берёт.

geocode_tried_at сбрасывается: метка backoff'а привязана к тексту адреса, а
текст сменился. После миграции 1122 строки (854 пары) попадают в выборку
geocode_missing_listings; 245 строк закрываются мгновенно из geocode_cache.
2026-08-10 15:15:40 +05:00