gendesign/backend/app/api/v1
lekss361 c3bc96535d fix(scraper): диагностируем «кнопка не работает» — Redis lock + task_received log
Симптом: POST /admin/scrape/kn возвращает task_id, но run_id не появляется
в kn_scrape_runs. Причина: зомби-worker оставил Redis-lock с TTL=2h, новые
задачи скипаются с reason='lock_held' молча.

Backend:
- _LOCK_TTL_SECONDS 7200 → 1800 (full sweep ~25-30 мин — потолок).
- force_release_lock() helper + новый POST /api/v1/admin/scrape/release-lock.
- TriggerKnRequest +force: bool — при true перед apply_async удалить lock.
- _log_task_received() / _log_task_skipped() — kn_scrape_log пишет «task
  подхвачен/skip» с run_id=NULL до основного flow. Теперь UI показывает
  whether worker реально получил задачу.

Frontend:
- Чекбокс  Force в форме запуска.
- Кнопка 🔓 Снять Redis-lock (отдельный endpoint).
- Уведомление о результате release.
2026-04-28 23:17:42 +03:00
..
__init__.py init 2026-04-25 13:45:19 +03:00
admin_leads.py add anal4 2026-04-27 19:45:47 +03:00
admin_scrape.py fix(scraper): диагностируем «кнопка не работает» — Redis lock + task_received log 2026-04-28 23:17:42 +03:00
analytics.py fix: heartbeat-based zombie autoclean (10min) + Phase A heartbeats; ship recommend velocity calculator 2026-04-28 22:54:03 +03:00
concepts.py init 2026-04-25 13:45:19 +03:00
parcels.py init 2026-04-25 13:45:19 +03:00
photos.py fix ui 2026-04-27 20:42:18 +03:00