gendesign/tradein-mvp/backend/app/services
lekss361 fdfb74ca88 fix(tradein): geocode backfill + remove Avito exclusion from estimator
После C-5 fix (PR #487) Avito coords либо NULL либо реальные. Estimator
исключал source='avito' из radius search потому что раньше там был jitter
(±0.005°) от 5 anchor cron'ов. Сейчас:
- 3580 Avito + 641 Yandex + 106 N1 + 38 Cian listings без coords
- estimator._fetch_analogs ловил только cian/yandex/n1 = ~30% эффективной базы

Bundled fix:
1. app/tasks/geocode_missing.py — batch geocoder (Nominatim 1/s, dedup по address)
2. POST /admin/scrape/geocode-missing-listings + GET status — manual trigger
3. estimator.py: убран AND source <> 'avito' — после backfill Avito включён в radius

Result: после backfill +4166 Avito listings в radius search = +40% эффективной
data. Confidence "high" будет в ~70% случаев вместо ~30%.

Tests: 11 новых tests/tasks/test_geocode_missing.py — all pass.
2026-05-23 22:54:49 +03:00
..
exporters fix(tradein): security hotfix — C-3 config default + C-4 empty estimate persist + C-6 PDF URL allowlist (#435) 2026-05-23 09:38:23 +00:00
matching feat(tradein): cross-source matching service (3-tier: cadastr / fingerprint / geo / composite) (#470) 2026-05-23 14:12:16 +00:00
scrapers feat(tradein): global scraper delay setting (applies across all scrapers) (#485) 2026-05-23 15:43:28 +00:00
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
brand.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
cache.py feat(tradein): Phase 3.2 — /api/v1/search endpoint + Redis cache (#479) 2026-05-23 14:44:22 +00:00
cian_session.py fix(tradein): CIAN_REQUIRED_COOKIES — add real auth cookies (DMIR_AUTH + Cian session) (#480) 2026-05-23 14:52:24 +00:00
estimator.py fix(tradein): geocode backfill + remove Avito exclusion from estimator 2026-05-23 22:54:49 +03:00
geocoder.py fix(tradein): map-picker подставляет уличный адрес, а не название POI 2026-05-22 13:32:39 +05:00
house_metadata.py feat(tradein): кадастр зданий как источник house_metadata (#393) 2026-05-22 10:54:42 +05:00
scheduler.py feat(tradein): in-app scheduler — UI-managed schedule (replaces SSH crontab) (#482) 2026-05-23 14:54:25 +00:00
scrape_pipeline.py feat(tradein): city sweep — auto ЕКБ pipeline (#477) 2026-05-23 14:38:07 +00:00
scrape_runs.py feat(tradein): city sweep — auto ЕКБ pipeline (#477) 2026-05-23 14:38:07 +00:00
scraper_settings.py feat(tradein): global scraper delay setting (applies across all scrapers) (#485) 2026-05-23 15:43:28 +00:00
search_query.py feat(tradein): Phase 3.2 — /api/v1/search endpoint + Redis cache (#479) 2026-05-23 14:44:22 +00:00