gendesign/tradein-mvp/backend/app
bot-backend 2e4a82dd46 Упавший прогон финализирует общий runs.mark_crashed: и ручные запуски из админки, и без дубля алерта (#1940)
Ревью PR #3561, две находки.

1. Ручные запуски из админки (avito/cian city sweep, cian_full_load,
   yandex_full_load, yandex_city_sweep) идут мимо scheduler._dispatch: в except
   был только logger.exception, и отказ «пул пуст» до try-финализатора пайплайна
   оставлял строку running до zombie. Логика финализации переехала из
   планировщика в runs.mark_crashed; её зовут планировщик и все пять ручек.

2. Обычный путь пайплайна — mark_failed и raise; планировщик звал mark_failed
   второй раз. UPDATE — no-op, но _alert_on_run_id срабатывал снова с тем же
   стриком, и на вехе лестницы в Sentry уходил дубль (+ WARNING «no-op»).
   mark_crashed сначала читает статус и финализирует только running.

Тесты по значению над двойником строки scrape_runs и боевыми mark_*:
статус banned/infra или failed после планировщика и после каждой из пяти ручек,
одна отправка в Sentry на неудаче пайплайна.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 13:57:34 +05:00
..
api Упавший прогон финализирует общий runs.mark_crashed: и ручные запуски из админки, и без дубля алерта (#1940) 2026-09-17 13:57:34 +05:00
core Коэффициент asking→sold приводится к сегодняшнему дню (#3544) 2026-09-16 20:05:18 +00:00
observability Merge pull request 'Продуктовые счётчики и дашборд воронки' (#3491) from feat/3471-product-metrics-dashboard into main 2026-09-12 11:45:49 +00:00
schemas fix(tradein): подпись коридора говорит про выборку, а не про алгоритм 2026-09-12 14:36:29 +05:00
services Регулярный сбор ДомКлика по Москве и области (#3545) 2026-09-17 04:46:37 +00:00
tasks Коэффициент asking→sold приводится к сегодняшнему дню (#3544) 2026-09-16 20:05:18 +00:00
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
main.py fix(obs): убрать шум выключенных платежей и трейсы health-проб proxy_pool 2026-09-12 14:03:39 +03:00
scheduler_main.py fix(obs): убрать шум выключенных платежей и трейсы health-проб proxy_pool 2026-09-12 14:03:39 +03:00
tgbot_main.py fix(tgbot): honest H1 rejection, per-role H2 budget, M1/M2/L1 cleanup (#3471 review) 2026-09-12 15:28:16 +03:00