-- Cad-quarter polygons (NSPD) + obj_id ↔ cad_quarter mapping.
--
-- Purpose: связать domrf_kn_objects (lat/lon) и rosreestr_deals (quarter_cad_number)
-- через PostGIS spatial-join. Это даёт per-ЖК аппроксимацию rosreestr-сделок
-- (распределение пропорционально flat_count внутри квартала).
--
-- Source: NSPD nspd.gov.ru thematicSearchId=1 (кадастровые кварталы).
-- Coverage: ~674 кварталов в ЕКБ с ДДУ-сделками на квартиры (см. 58_fetch_cad_quarters_nspd.py).

CREATE EXTENSION IF NOT EXISTS postgis;

CREATE TABLE IF NOT EXISTS cad_quarters_geom (
    cad_number    TEXT PRIMARY KEY,
    geom          geometry(MultiPolygon, 4326) NOT NULL,
    raw_props     jsonb,
    fetched_at    timestamptz NOT NULL DEFAULT NOW(),
    source        TEXT NOT NULL DEFAULT 'nspd'
);

CREATE INDEX IF NOT EXISTS cad_quarters_geom_gist
    ON cad_quarters_geom USING GIST (geom);

-- На domrf_kn_objects добавляем cad_quarter (заполняется backfill-скриптом
-- 59_backfill_obj_cad_quarter.sql через ST_Contains по lat/lon).
ALTER TABLE domrf_kn_objects
    ADD COLUMN IF NOT EXISTS cad_quarter TEXT;

CREATE INDEX IF NOT EXISTS domrf_kn_objects_cad_quarter_idx
    ON domrf_kn_objects(cad_quarter);

COMMENT ON TABLE cad_quarters_geom IS
    'Кадастровые кварталы РФ (полигоны NSPD). Используется для spatial-join '
    'rosreestr_deals (по quarter_cad_number) → domrf_kn_objects (по lat/lon → ST_Contains).';

COMMENT ON COLUMN domrf_kn_objects.cad_quarter IS
    'Кадастровый квартал, в который попадают координаты ЖК. Заполняется '
    '59_backfill_obj_cad_quarter.sql через ST_Contains(cad_quarters_geom.geom, lat/lon).';
