gendesign/tradein-mvp/backend/app/api/v1
bot-backend e51722b3f1 feat(tradein): admin backfill endpoints — cian price-history (T8a) + yandex address (T10) + house IMV (T7)
T8a: POST /scrape/cian-price-history — fetches Cian detail pages (curl_cffi),
extracts priceChanges from _cianConfig defaultState, upserts offer_price_history.
Wraps existing cian_detail.fetch_detail + save_detail_enrichment.

T10: POST /scrape/yandex-address-backfill — enriches yandex listings.address
with house number from detail-page <title> regex; resets geocode_tried_at for
re-geocoding. Targets active EKB listings without a house number in address.

T7: POST /scrape/house-imv-backfill — bulk Avito IMV evaluation per house.
Picks median lot-params from linked listings, calls evaluate_via_imv, persists
house_imv_evaluations + house_placement_history + house_suggestions. Resumable
via imv_status markers. Runs in foreground (BackgroundTasks for long batches
can be added later if needed).

All three: NOT wired to scheduler (anti-rate-limit, intentional manual trigger).
All three: idempotent / graceful per-item error handling + counters response.
27 unit tests added in tests/test_backfill_wave2.py (all passing).
2026-05-31 09:34:41 +03:00
..
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
admin.py feat(tradein): admin backfill endpoints — cian price-history (T8a) + yandex address (T10) + house IMV (T7) 2026-05-31 09:34:41 +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