chore(tradein/db): DROP listings_snapshots.position_in_serp — шаг 2 из 2 (#2697) #2728

Merged
bot-backend merged 1 commit from chore/2697-drop-position-in-serp into main 2026-08-06 11:41:40 +00:00

1 commit

Author SHA1 Message Date
d4c5cb84c4 chore(tradein/db): DROP listings_snapshots.position_in_serp — шаг 2 из 2 (#2697)
All checks were successful
CI / changes (pull_request) Successful in 10s
CI Trade-In / changes (pull_request) Successful in 10s
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 3m13s
Колонка признана невыразимой в этой таблице (#2674, диагноз в миграции 217): позиция
есть свойство пары «объявление × конкретный прогон выдачи с конкретными фильтрами», а
PRIMARY KEY (listing_id, snapshot_date) держит одну строку на объявление в сутки —
за 2026-08-03 по этому ключу писали 13 разных run_id и четыре SERP-источника.

Шаг 1 (правка писателя) уже на проде, поэтому окна «SQL применяется до перезапуска
контейнеров» больше нет. Предусловие проверено по коду В КОНТЕЙНЕРАХ, а не по зелёному
деплою: grep по /app в tradein-scraper и tradein-backend находит имя колонки ровно в
четырёх строках docstring'а snapshot_writer.py и ни в одном SQL; сигнатура
upsert_listing_snapshot колонку не содержит; второй писатель
(deactivate_stale_avito._STALE_SNAPSHOT_TAIL) перечисляет колонки явно и этой в списке
не имеет.

Читателей нет: 0 непустых значений из 397 217 строк на проде, 0 зависимых view/matview
(pg_depend → pg_rewrite), ни индексов, ни триггеров, ни foreign table над таблицей;
в коде нет ни одного SELECT-читателя (SELECT * по таблице отсутствует), фронт,
экспортёры и админка колонку не упоминают.

Refs #2697
2026-08-06 16:21:17 +05:00