gendesign/tradein-mvp/backend
bot-backend 8ffc2cb942
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 8s
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 3m6s
fix(tradein/scraper): дневной снимок узнаёт свой прогон (#2701)
Из девяти вызовов save_listings в pipeline.py три не передавали run_id.
У двух — run_avito_city_sweep:1113 и run_avito_newbuilding_sweep:1754 —
run_id лежал в той же функции (keyword-параметр, под которым идёт
runs.mark_done/heartbeat/is_cancelled) и просто не доезжал до вызова.
Передан.

run_avito_pipeline:570 — оставлен без run_id осознанно, решение записано
в код: у функции нет строки в scrape_runs, продуктовых вызывающих нет
(единственные — тесты), привязывать снимок не к чему.

Писатели вне pipeline.py проверены и тоже помечены: admin /scrape (ручной
скрейп без прогона) и scripts/ingest_domclick_jsonl.py (разовый ingest
файла). Второй и есть главная дыра замера — 129 908 снимков domklik без
run_id, а вовсе не Авито: по источникам заполнение yandex 100%, cian 98.8%,
avito 80.3%, domklik 2.9%. Дыра domklik историческая (ежедневный
run_domclick_city_sweep run_id передаёт), а вот у avito пустые строки
приходят КАЖДЫЙ день (944 за 2026-08-06, 635 за 2026-08-05 — все без run_id).

Бэкфилл 150 515 исторических строк невозможен, проверено:
  - привязки снимок→прогон в схеме больше нет;
  - по времени неоднозначно: на всех 36 днях с осиротевшими avito-снимками
    в сутках было >1 пишущего avito-прогона (до 29);
  - observed_at не спасает — ON CONFLICT перезаписывает его последним
    писателем дня, а не тем, кто строку создал.
Ложная атрибуция хуже пустоты — бэкфилл не делается.

Refs #2701
2026-08-06 11:45:04 +05:00
..
app fix(tradein/scraper): дневной снимок узнаёт свой прогон (#2701) 2026-08-06 11:45:04 +05:00
data/sql fix(tradein/domclick): sale_type перестаёт быть третьим словарём (#2674) (#2696) 2026-08-06 06:11:45 +00:00
scripts fix(tradein/scraper): дневной снимок узнаёт свой прогон (#2701) 2026-08-06 11:45:04 +05:00
tests fix(tradein/scraper): дневной снимок узнаёт свой прогон (#2701) 2026-08-06 11:45:04 +05:00
.dockerignore feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
Dockerfile chore(scraper-kit): docker-context wiring + restore backend workspace dep (#2137) 2026-07-02 14:21:38 +00:00
pyproject.toml feat(tradein/auth): password hashing + session config foundation (#2550) 2026-07-30 09:40:51 +03:00