You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(places): gate OSM snapping by item identity + manifest-driven scheme dispatch
Two related problems were letting unrelated OSM POI metadata leak onto data-
source items in the place panel:
1. lookupByOsmFilters snapped to the nearest amenity match regardless of
identity. A Dott bike station co-located with an optician kiosk would
inherit the optician's website, opening hours, wheelchair status, and
social tags. Bike-sharing, car-sharing, ev-charging, fuel, and parking
detail mappers now carry an OsmIdentity (ref / operator / network /
brand) on DataSourceDetail; the resolver passes it to lookupByOsmFilters
which only accepts candidates that match by at least one identity field.
Match is normalized + token-subset so "Shell" matches "Shell Deutschland
Oil GmbH" but not the optician.
2. The /api/places/:id route fell through to a generic name+coord lookup
for any scheme without a registered resolver, which produced the same
leak whenever an integration's setup() failed to register. The fallback
is now gated on isIntegrationScheme(): schemes owned by an installed
manifest must resolve via a registered resolver (404 otherwise);
non-integration freeform schemes (saved, label, stylePoi, streetView)
still get the name+coord lookup. The gate is data-driven from the
manifest registry — no allowlist to maintain.
0 commit comments