-- Backfill domrf_kn_objects.cad_quarter через ST_Contains spatial-join.
--
-- Логика: каждый ЖК с lat/lon → найти cad-квартал, в полигон которого попадает
-- точка. Если ЖК на границе двух кварталов — берём первый (ST_Contains
-- однозначен, ST_Intersects дал бы пересечения).
--
-- Запускать ПОСЛЕ 58_fetch_cad_quarters_nspd.py.

UPDATE domrf_kn_objects o
   SET cad_quarter = cq.cad_number
  FROM cad_quarters_geom cq
 WHERE o.region_cd = 66
   AND o.latitude IS NOT NULL
   AND o.longitude IS NOT NULL
   AND ST_Contains(
           cq.geom,
           ST_SetSRID(ST_MakePoint(o.longitude, o.latitude), 4326)
       )
   AND (o.cad_quarter IS NULL OR o.cad_quarter <> cq.cad_number);

-- Контрольные цифры: сколько ЖК привязано / без привязки.
SELECT
    COUNT(*) FILTER (WHERE cad_quarter IS NOT NULL) AS with_cad,
    COUNT(*) FILTER (WHERE cad_quarter IS NULL)     AS without_cad,
    COUNT(DISTINCT cad_quarter)                     AS unique_quarters_used
  FROM domrf_kn_objects
 WHERE region_cd = 66 AND district_name IS NOT NULL;
