-- 100_user_weight_profiles_default_seed.sql -- Системные preset-профили весов POI для Site Finder. -- Per #114 (Макс feedback): садики и Мегамарт должны иметь разные веса. -- -- Apply order: после 90_user_weight_profiles.sql (таблица уже существует) -- Dependencies: user_weight_profiles table -- -- Sentinel owner: '__system__' — не является реальным user_id, -- используется только для системных presets. -- UI: dropdown показывает system presets всем пользователям через -- GET /api/v1/admin/site-finder/weight-profiles?user_id=__system__ -- или include_system=true (добавлен в #114 seed PR). -- -- Idempotent: ON CONFLICT (user_id, profile_name) DO UPDATE — обновляет -- веса если preset уже существует (safe re-apply на prod). BEGIN; INSERT INTO user_weight_profiles (user_id, profile_name, weights, is_default, description) VALUES ( '__system__', 'Эконом', '{ "school": 1.2, "kindergarten": 1.0, "pharmacy": 0.8, "hospital": 0.5, "shop_mall": 0.8, "shop_supermarket": 1.5, "shop_small": 1.0, "park": 1.2, "bus_stop": 1.0, "metro_stop": 0.8, "tram_stop": 0.5 }'::jsonb, FALSE, 'Эконом-класс: доступность магазинов и транспорта важнее премиальной инфраструктуры' ), ( '__system__', 'Комфорт', '{ "school": 1.5, "kindergarten": 1.8, "pharmacy": 0.8, "hospital": 0.6, "shop_mall": 1.0, "shop_supermarket": 1.2, "shop_small": 0.5, "park": 1.8, "bus_stop": 0.5, "metro_stop": 1.2, "tram_stop": -0.3 }'::jsonb, FALSE, 'Комфорт-класс: парки, детсады и школы в приоритете — семейная аудитория' ), ( '__system__', 'Бизнес', '{ "school": 1.0, "kindergarten": 0.8, "pharmacy": 0.6, "hospital": 0.5, "shop_mall": 2.0, "shop_supermarket": 0.8, "shop_small": 0.3, "park": 2.0, "bus_stop": 0.2, "metro_stop": 2.5, "tram_stop": -0.5 }'::jsonb, FALSE, 'Бизнес-класс: метро, ТЦ и парки в приоритете — платёжеспособная аудитория' ) ON CONFLICT (user_id, profile_name) DO UPDATE SET weights = EXCLUDED.weights, description = EXCLUDED.description, updated_at = NOW(); COMMENT ON TABLE user_weight_profiles IS 'POI weight profiles для site_finder. Per #114 (Макс feedback). ' 'weights = {"school": 1.5, "kindergarten": 1.5, "shop_mall": 1.2, ...}. ' 'Системные presets: user_id = ''__system__'' (3 preset: Эконом/Комфорт/Бизнес).'; COMMIT;