feat(tradein/scrapers): full_load пропускает листинги обновлённые сегодня при повторном прогоне #1828
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#1828
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/tradein-skip-seen-today"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Зачем
Повторный прогон
full_loadв рамках одного дня заново upsert'ил уже свежие листинги → лишние записи + холостые срабатывания price-change триггера (record_listing_price_change). Добавляем same-day skip.Что (
tradein-mvp/backend/)1.
save_listings(app/services/scrapers/base.py) — новый keyword-only параметрskip_seen_today: bool = False(backward-compat, прочие вызовы не затронуты).SELECT card_hash, last_seen_at FROM listings WHERE dedup_hash.skip_seen_todayИ строка уже существует Иlast_seen_at= сегодня по Europe/Moscow → лот пропускается (continue, без upsert и без snapshot), счётчикskipped. Лог:ins=N upd=M skipped_seen_today=K. Возврат(inserted, updated)не изменён.2. Settings (
app/core/config.py):scraper_skip_seen_today: bool = True(ENVSCRAPER_SKIP_SEEN_TODAY; False = всегда обновлять).3. Wire — только 3 full_load (
scrape_pipeline.py):run_avito_full_load/run_cian_full_load/run_yandex_full_loadв on_bucket-save передаютskip_seen_today=settings.scraper_skip_seen_today.НЕ затронуты
city_sweep/detail_backfill/newbuilding_sweep/domclick— там обновление каждый раз нужно (detail-обогащение).Поведение (самогейтирующееся)
Первый full_load дня:
last_seen=вчера→ не сегодня → обрабатывается (last_seen→сегодня). Повторный в тот же день:last_seen=сегодня→ пропуск. Новые листинги (нет строки) всегда вставляются. ФлагFalse→ старое поведение.Тесты
tests/test_base_save_listings.py(skip при last_seen=сегодня, обработка при вчера/новый, флаг False = старое, нет snapshot при skip).save_listings+scraper_settings+scheduler_main+sweep_imv_phase+pdf_security= 122 passed. Единственный реальный pre-existing fail —test_cian_valuationcache (не относится).NB:
save_listings— shared, поэтому менялся только аддитивно (default-False параметр); существующее поведение всех прочих вызовов сохранено.