gendesign/tradein-mvp/backend
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
..
app fix(tradein): feed raw payload.address to same-building anchor (geocode-independent) 2026-05-30 02:07:38 +03:00
data/sql feat(tradein): white-label branded page for client «Практика» (#657) (#672) 2026-05-29 16:09:23 +00:00
scripts feat(backtest): per-rooms asking→sold correction block (#648 S1) (#650) 2026-05-29 13:11:55 +00:00
tests fix(tradein): harden same-building anchor address normalizer for prod formats (#677) (#679) 2026-05-29 22:21:29 +00:00
.dockerignore feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
Dockerfile feat(tradein): persistent infra для backfill scripts (PR F) (#592) 2026-05-27 06:59:54 +00:00
pyproject.toml feat(rbac): role-based access control via X-Authenticated-User middleware (#585) 2026-05-26 06:18:40 +00:00