gendesign/tradein-mvp/backend/app/api/v1
bot-backend d9d6caa044 fix(tradein): single-run guard на avito-city-sweep admin-endpoint
Параллельные avito-sweep'ы делят один прокси-IP → удвоенный rate → Avito бан.
Incident 2026-05-31: runs #26 (08:31-08:42) и #27 (08:38-08:43) шли
одновременно → оба banned (скомпрометировало delay-эксперимент). Scheduler
уже защищён (has_running_run + advisory lock в _claim_run), но ручной
admin-endpoint POST /scrape/avito-city-sweep guard'а не имел.

- admin.py: has_running_run('avito_city_sweep') → HTTPException 409 перед create_run.
- test: monkeypatch has_running_run→True → 409.
2026-05-31 11:53:51 +03:00
..
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
admin.py fix(tradein): single-run guard на avito-city-sweep admin-endpoint 2026-05-31 11:53:51 +03:00
brand.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
geocode.py feat(tradein): MapPicker snap marker — Phase 5 of #582 (#594) 2026-05-27 09:30:17 +00:00
me.py feat(rbac): role-based access control via X-Authenticated-User middleware (#585) 2026-05-26 06:18:40 +00:00
search.py feat(tradein): Phase 3.2 — /api/v1/search endpoint + Redis cache (#479) 2026-05-23 14:44:22 +00:00
trade_in.py fix(tradein): word-boundary street match + cian unescape robustness (Refs #769 A1+D) (#798) 2026-05-30 17:18:33 +00:00