-- Trade-In MVP — идемпотентный сид СДЕЛОК (deals).
--
-- ВАЖНО: этот файл применяется на КАЖДОМ деплое (deploy-tradein.yml гоняет
-- весь data/sql/*.sql). Поэтому:
--   1. НЕ трогает listings — реальные данные парсеров не должны затираться.
--   2. Вставляет сделки ТОЛЬКО если таблица deals пуста (WHERE NOT EXISTS).
--      На втором и последующих деплоях SELECT вернёт 0 строк → no-op.
--
-- 80 синтетических сделок (Росреестр/ДомКлик) в центре ЕКБ — для страницы 3
-- PDF-отчёта. Реальные сделки появятся когда подключим дамп rosreestr_deals.

INSERT INTO deals (
  source, dedup_hash, address, lat, lon, geom,
  rooms, area_m2, floor, total_floors, year_built,
  price_rub, price_per_m2, deal_date, days_on_market
)
SELECT
  CASE WHEN random() < 0.6 THEN 'rosreestr' ELSE 'domklik' END,
  md5('seed-deal:' || i::text || ':' || rooms_pick::text || ':' || area_pick::text),
  'Екатеринбург, реальная сделка',
  lat, lon,
  ST_SetSRID(ST_MakePoint(lon, lat), 4326),
  rooms_pick,
  area_pick,
  (1 + (random() * 15)::int),
  (3 + (random() * 15)::int),
  (1965 + (random() * 60)::int),
  (ppm2 * area_pick)::int,
  ppm2,
  NOW() - (random() * 365 || ' days')::interval,
  (15 + (random() * 90)::int)
FROM (
  SELECT
    i, lat, lon, rooms_pick,
    CASE rooms_pick
      WHEN 1 THEN (28 + random() * 17)::numeric(10,2)
      WHEN 2 THEN (40 + random() * 25)::numeric(10,2)
      WHEN 3 THEN (58 + random() * 30)::numeric(10,2)
    END AS area_pick,
    (110000 + random() * 70000)::int AS ppm2
  FROM (
    SELECT
      gs AS i,
      56.8354 + (random() - 0.5) * 0.026 AS lat,
      60.6172 + (random() - 0.5) * 0.050 AS lon,
      CASE
        WHEN random() < 0.3 THEN 1
        WHEN random() < 0.8 THEN 2
        ELSE 3
      END AS rooms_pick
    FROM generate_series(1, 80) gs
  ) random_lots
) generated
WHERE NOT EXISTS (SELECT 1 FROM deals LIMIT 1);
