Снятие устаревших объявлений работает только там, где есть пересбор #3526
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
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#3526
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/deactivate-only-collected-regions"
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?
Зачем
Джоба снятия читает молчание как «объявление ушло». Это верно только там, где есть регулярный обход: без пересбора «давно не видели свежим» неотличимо от «мы туда ни разу не ходили после разовой загрузки».
Регулярный сбор сегодня идёт только по Свердловской области. Объявления Москвы и области залиты вручную 10-12 сентября и с тех пор не обновлялись.
Пострадала бы не только Москва. Аварийный потолок стоит на 15 000, а прогон, упёршийся в него, не трогает ни одной строки. То есть чистка Екатеринбурга встала бы вместе с московской, молча, с одним счётчиком в логе.
Что сделано
Параметр
region_codesв джобе, значение по умолчанию — только код 66. ЗначениеNoneозначает «взять умолчание», а не «без фильтра»: отключить региональное ограничение целиком нельзя, можно только перечислить регионы явно.Предикат добавлен и в предварительный подсчёт кандидатов, и в сам UPDATE во всех трёх сегментных ветках, а значение биндится из одной переменной. Потолок считает ровно то, что снимает.
Гейт здоровья, пол переобхода и размер активного пула намеренно не тронуты: их пороги откалиброваны по источнику целиком.
Строки расписаний менять не нужно
Ни одна строка не содержит ключа
region_codes, поэтому после деплоя все действующие джобы сразу работают только по 66. Расширять список нужно вместе с появлением расписания сбора по региону, не раньше.Известное следствие
Строки с пустым регионом больше не снимаются: их 16 930, активных среди них 211. Это легаторые уральские записи, и полигональный резолв относит 2 462 из них к региону 66, так что бэкфилл региона их вернёт в охват.
Проверено
Новый файл тестов, 15 случаев. Фейковая сессия применяет предикат каждого запроса к одному набору строк, поэтому фильтр, потерянный в одной из веток, даёт расхождение чисел, а не проходит мимо. Покрыто: умолчание снимает только 66, чужие регионы не тронуты, число кандидатов совпадает с числом снятых, сто чужих строк не пробивают потолок в десять, а пустой список и нецелые значения дают ошибку до записи.
pytest -k "deactivate or product_handler"— 210 passed, 1 skipped. ruff check и format чисты.