michael-bohr
8a0932df72
fix(collections): stop findDuplicateCollectionPlace merging places by coordinates alone
...
Three places answered "is this a place the trip already has?", not two:
PlacesService.findDuplicatePlace and isPlaceDuplicate got the shared strategy
list in #2130 ; CollectionsService.findDuplicateCollectionPlace was missed and
kept its own hand-rolled copy of the pre-#2130 order.
Unlike findDuplicatePlace, this one had no isPlaceDuplicate() guard in front of
it — savePlace calls it directly — so the coordinate fallback for a NAMED
candidate was live, not latent: two distinct places sharing an address (a
restaurant and the bar upstairs) would report each other as duplicates the
moment their coordinates round to the same ~11 m box, regardless of name.
It also never read google_place_id/google_ftid/osm_id at all, even though
every collection_places row stores them, so a place renamed since it was
saved could be saved again instead of being recognised by its provider id.
Now walks placeMatchStrategies() from @trek/shared, same as
findMatchingPlaceId: provider id, then name, then coordinates only when there
is no name. savePlace passes the provider id fields through since they are
already on the request body; the two bulk call sites (importablePlaces,
saveFromTripPlaces) are unchanged, since their source rows don't carry
provider ids to pass.
Closes #2137
2026-08-29 16:04:36 +02:00
..
2026-08-07 21:07:14 +02:00
2026-08-07 22:18:14 +02:00
2026-08-25 15:22:38 +02:00
2026-08-07 16:00:12 +02:00
2026-08-28 14:25:08 +02:00
2026-08-22 11:33:55 +02:00
2026-08-22 11:33:55 +02:00
2026-08-07 19:58:12 +02:00
2026-08-17 14:48:23 +02:00
2026-08-22 11:33:55 +02:00
2026-08-11 20:28:49 +02:00
2026-08-23 11:59:12 +02:00
2026-08-23 11:59:12 +02:00
2026-08-13 14:06:35 +02:00
2026-08-13 14:06:35 +02:00
2026-08-10 17:08:54 +02:00
2026-06-16 22:22:45 +02:00
2026-08-10 19:54:46 +02:00
2026-08-15 16:42:27 +02:00
2026-08-15 16:42:27 +02:00
2026-08-09 20:54:39 +02:00
2026-08-10 19:54:46 +02:00
2026-08-25 15:22:38 +02:00
2026-08-23 11:59:12 +02:00
2026-08-22 11:33:55 +02:00
2026-06-16 22:22:45 +02:00
2026-07-25 15:12:38 +02:00
2026-08-16 23:17:50 +02:00
2026-08-16 23:17:50 +02:00
2026-08-17 14:48:23 +02:00
2026-08-13 14:06:35 +02:00
2026-08-28 20:11:28 +02:00
2026-07-27 22:34:41 +02:00
2026-08-23 11:59:12 +02:00
2026-08-07 18:01:24 +02:00
2026-08-28 15:23:05 +02:00
2026-08-07 15:14:14 +02:00
2026-08-22 11:33:55 +02:00
2026-08-22 11:33:55 +02:00
2026-08-22 11:33:55 +02:00
2026-08-22 11:33:55 +02:00
2026-08-09 19:46:00 +02:00
2026-08-13 14:06:35 +02:00
2026-08-20 17:44:21 +02:00
2026-08-16 23:17:50 +02:00
2026-08-22 11:33:55 +02:00
2026-08-28 14:25:08 +02:00
2026-08-10 19:54:46 +02:00
2026-07-26 15:28:55 +02:00
2026-08-11 21:13:32 +02:00
2026-08-10 19:54:46 +02:00
2026-08-12 14:14:37 +02:00
2026-08-27 12:03:04 +02:00
2026-08-27 12:03:04 +02:00
2026-08-22 11:33:55 +02:00
2026-08-29 16:04:36 +02:00
2026-08-25 19:26:38 +02:00
2026-06-16 22:22:45 +02:00
2026-08-10 21:49:27 +02:00
2026-07-25 18:14:37 +02:00
2026-07-25 18:14:37 +02:00
2026-08-11 22:14:12 +02:00
2026-08-11 22:14:12 +02:00
2026-08-11 09:58:37 +02:00
2026-08-07 18:42:53 +02:00
2026-08-11 22:23:51 +02:00
2026-08-22 11:33:55 +02:00
2026-08-11 16:42:49 +02:00
2026-08-11 22:23:51 +02:00
2026-08-11 11:15:32 +02:00
2026-08-23 11:59:12 +02:00
2026-08-23 11:59:12 +02:00
2026-08-11 09:58:37 +02:00
2026-08-12 12:45:29 +02:00
2026-08-23 11:59:12 +02:00
2026-08-22 11:33:55 +02:00
2026-08-23 11:59:12 +02:00
2026-08-25 11:02:39 +02:00
2026-08-27 12:06:55 +02:00
2026-08-20 15:43:27 +02:00
2026-08-19 23:36:42 +02:00
2026-08-20 15:43:27 +02:00
2026-08-23 11:59:12 +02:00
2026-08-25 11:02:39 +02:00
2026-08-15 16:42:27 +02:00
2026-08-15 16:42:27 +02:00
2026-08-27 12:06:55 +02:00
2026-08-15 16:42:27 +02:00
2026-08-15 16:42:27 +02:00
2026-08-22 11:33:55 +02:00
2026-08-10 12:24:15 +02:00
2026-08-10 12:24:15 +02:00
2026-08-23 11:59:12 +02:00
2026-08-11 22:44:20 +02:00
2026-08-11 23:11:34 +02:00
2026-08-23 11:59:12 +02:00
2026-08-08 22:27:56 +02:00
2026-08-10 19:54:46 +02:00
2026-08-08 22:27:56 +02:00
2026-08-10 13:38:26 +02:00
2026-08-22 11:33:55 +02:00
2026-08-23 11:59:12 +02:00
2026-08-02 11:36:36 +02:00
2026-08-08 12:09:56 +02:00
2026-08-22 11:33:55 +02:00
2026-08-29 12:22:59 +02:00
2026-08-23 11:59:12 +02:00
2026-08-12 17:43:22 +02:00
2026-08-15 16:42:27 +02:00
2026-08-15 22:48:03 +02:00
2026-08-28 20:11:28 +02:00
2026-08-09 19:13:21 +02:00
2026-08-16 23:17:50 +02:00
2026-08-22 11:33:55 +02:00
2026-08-23 11:59:12 +02:00
2026-08-23 11:59:12 +02:00
2026-08-10 17:08:54 +02:00
2026-08-22 11:33:55 +02:00
2026-08-10 19:54:46 +02:00
2026-08-10 12:24:15 +02:00
2026-08-10 19:54:46 +02:00
2026-08-23 11:59:12 +02:00
2026-08-22 11:33:55 +02:00
2026-07-30 17:07:12 +02:00
2026-08-12 17:43:22 +02:00
2026-08-29 12:22:46 +02:00
2026-08-22 11:33:55 +02:00
2026-08-28 15:23:05 +02:00
2026-08-28 15:23:05 +02:00
2026-08-28 15:23:05 +02:00
2026-08-23 11:59:12 +02:00
2026-08-19 23:36:42 +02:00
2026-08-10 19:54:46 +02:00
2026-08-09 22:43:05 +02:00
2026-08-10 21:49:27 +02:00
2026-08-23 11:59:12 +02:00
2026-08-28 14:25:08 +02:00
2026-08-23 11:59:12 +02:00
2026-08-15 22:48:16 +02:00
2026-08-15 16:42:27 +02:00
2026-08-27 12:06:55 +02:00
2026-08-22 11:33:55 +02:00
2026-08-28 14:25:08 +02:00
2026-08-25 19:26:38 +02:00
2026-08-10 21:49:27 +02:00
2026-06-16 22:22:45 +02:00
2026-08-15 16:42:27 +02:00
2026-08-10 19:54:46 +02:00
2026-07-26 15:28:55 +02:00
2026-08-22 11:33:55 +02:00
2026-08-09 19:13:21 +02:00
2026-08-16 23:17:50 +02:00
2026-08-28 15:23:05 +02:00
2026-08-01 12:45:35 +02:00
2026-07-29 21:39:51 +02:00
2026-08-20 18:40:21 +02:00
2026-08-22 11:33:55 +02:00
2026-08-18 22:24:29 +02:00
2026-08-19 23:36:42 +02:00
2026-08-09 19:13:21 +02:00
2026-08-10 19:54:46 +02:00
2026-08-10 13:38:26 +02:00
2026-08-11 16:42:49 +02:00
2026-08-10 13:38:26 +02:00
2026-08-27 12:03:04 +02:00
2026-08-23 11:59:12 +02:00
2026-08-28 14:25:08 +02:00
2026-08-10 21:49:27 +02:00
2026-08-11 16:42:49 +02:00
2026-08-22 11:33:55 +02:00
2026-08-12 00:38:41 +02:00
2026-08-28 20:11:28 +02:00
2026-08-23 11:59:12 +02:00
2026-08-15 16:42:27 +02:00
2026-08-18 22:24:29 +02:00
2026-08-08 11:14:24 +02:00
2026-08-23 11:59:12 +02:00
2026-08-10 13:38:26 +02:00
2026-08-11 09:58:37 +02:00
2026-06-16 22:22:45 +02:00