From 43c7e64efbe2b27aab6253583ee55e49de37b679 Mon Sep 17 00:00:00 2001 From: Eugene Burmakin Date: Sat, 8 Mar 2025 19:40:28 +0100 Subject: [PATCH] Add osm_id, osm_key, osm_value, osm_type to places --- app/models/place.rb | 16 ++++++++++++++++ app/services/visits/detector.rb | 5 +++-- app/services/visits/place_finder.rb | 2 +- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/app/models/place.rb b/app/models/place.rb index c7cbacef..836358c8 100644 --- a/app/models/place.rb +++ b/app/models/place.rb @@ -31,4 +31,20 @@ class Place < ApplicationRecord def reverse_geocoded? geodata.present? end + + def osm_id + geodata['properties']['osm_id'] + end + + def osm_key + geodata['properties']['osm_key'] + end + + def osm_value + geodata['properties']['osm_value'] + end + + def osm_type + geodata['properties']['osm_type'] + end end diff --git a/app/services/visits/detector.rb b/app/services/visits/detector.rb index 9ea730cb..13a2d64b 100644 --- a/app/services/visits/detector.rb +++ b/app/services/visits/detector.rb @@ -5,7 +5,7 @@ module Visits class Detector MINIMUM_VISIT_DURATION = 3.minutes MAXIMUM_VISIT_GAP = 30.minutes - MINIMUM_POINTS_FOR_VISIT = 3 + MINIMUM_POINTS_FOR_VISIT = 2 attr_reader :points @@ -57,7 +57,8 @@ module Visits # Calculate distance from visit center distance = Geocoder::Calculations.distance_between( [visit[:center_lat], visit[:center_lon]], - [point.lat, point.lon] + [point.lat, point.lon], + units: :km ) # Dynamically adjust radius based on visit duration diff --git a/app/services/visits/place_finder.rb b/app/services/visits/place_finder.rb index adb9b65a..72a35e72 100644 --- a/app/services/visits/place_finder.rb +++ b/app/services/visits/place_finder.rb @@ -38,7 +38,7 @@ module Visits { main_place: main_place, - suggested_places: all_suggested_places.uniq { |place| place.name } + suggested_places: all_suggested_places.uniq(&:name) } end