gendesign/tradein-mvp/backend/app
lekss361 3a25e2c4b8 fix(tradein): feed raw payload.address to same-building anchor (geocode-independent)
The #677/#679 same-building anchor was fed geo.full_address (the GEOCODED
canonical address). On prod the geocoder frequently returns None (lat/lon/
canonical all None), so geo.full_address was empty → _normalize_building_key
got nothing → Tier A (same building) never fired → fell back to the radius
tier for every geocode-failing address. That is why live golden coverage was
67/58% (and flaky run-to-run) while the offline sim (which fed the raw address)
showed 95%: Ткачёва 13 / Хохрякова 48 etc. geocode-fail on prod.
Fix: pass payload.address (raw user input, always present, exactly what the
normalizer is validated on) with geo.full_address as fallback. Makes the
same-building anchor independent of geocode success. ruff clean; 30 anchor tests.

Refs #651 #677 #679
2026-05-30 02:07:38 +03:00
..
api fix(tradein): time-budget estimate enrichment + observable errors to stop opaque 502 (#654) (#673) 2026-05-29 17:22:02 +00:00
core feat(tradein): same-building anchor estimator (#651/#652 v2) behind flag (#677) 2026-05-29 21:01:21 +00:00
observability feat(tradein): enrich GlitchTip SDK init — integrations + PII scrub (#396) (#643) 2026-05-29 09:23:17 +00:00
schemas feat(tradein): blend Avito IMV anchor into estimate + ДКП corridor advisory (#651, #652) (#674) 2026-05-29 17:42:06 +00:00
services fix(tradein): feed raw payload.address to same-building anchor (geocode-independent) 2026-05-30 02:07:38 +03:00
tasks feat(tradein): daily asking→sold ratio refresh (#648 S4) (#663) 2026-05-29 13:49:36 +00:00
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
main.py feat(tradein): enrich GlitchTip SDK init — integrations + PII scrub (#396) (#643) 2026-05-29 09:23:17 +00:00