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 |
||
|---|---|---|
| .. | ||
| api | ||
| core | ||
| observability | ||
| schemas | ||
| services | ||
| tasks | ||
| __init__.py | ||
| main.py | ||