Обработчик landing_showcase_deals безусловно ставил прогону done. У счётчиков витрины (considered/eligible/written) нет результатного ключа кита, поэтому сводка просроченных судит её только по статусу: прогон с written=0 обнулял часы свежести так же, как удачный, а страница тем временем теряла таблицу. Теперь written=0 — mark_failed с причиной и logger.error. Тест идёт путём сводки: обработчик -> freshness_rows -> stale_sources; пустой последний прогон при старом непустом даёт витрину в тревоге, непустой — нет. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| api | ||
| core | ||
| observability | ||
| schemas | ||
| services | ||
| tasks | ||
| __init__.py | ||
| main.py | ||
| scheduler_main.py | ||
| tgbot_main.py | ||