lekss361
|
8e4dea74dd
|
feat(tradein): estimator — Yandex Valuation as on-demand 6th source
Stage 8 of YandexRealtyScraper v1 (Wave 6).
Adds Yandex Valuation tool (anonymous, no cookies) as on-demand enrichment
source in estimate_quality. Mirrors the Avito IMV pattern with 24h cache,
graceful degradation, and idempotent history persistence.
estimator.py:
- _yandex_valuation_cache_key(address, category, type) -> sha256
- _get_or_fetch_yandex_valuation_cached(db, address, ...) -> cache via
external_valuations(source='yandex_valuation'). Any error -> None +
log warning + estimator continues.
- _save_yandex_history_items(db, result) -> INSERT into
house_placement_history(source='yandex_valuation') with synthesized
ext_item_id (sha256 of address+date+area+floor+prices, first 32 chars).
Idempotent via UNIQUE (source, ext_item_id). house_id stays NULL -
estimator doesn't compute target_house_id yet (matching pipeline TBD).
- estimate_quality: call after IMV block, BEFORE deals fetch. Adds
'yandex_valuation' to sources_used if Yandex returned a result.
Tests: 11 unit tests (cache key determinism, hit/miss, fetch error,
empty result, history item save / dedup / partial error). All pass.
Ruff clean (no new errors introduced).
Constants: YANDEX_VALUATION_CACHE_TTL_HOURS=24, default category=APARTMENT,
default type=SELL.
|
2026-05-23 17:10:07 +03:00 |
|