-- 163_riasurt_sverdl.sql
-- РИАСУРТ Свердл (folderId 1224) — 14-слойный harvest по агломерации ЕКБ (#108).
-- Источник: NSPD aeggis/v4 WMS, региональный каталог РИАСУРТ Свердл. Покрывает ОКРАИНЫ
-- агломерации ЕКБ (Берёзовский, В.Пышма, Среднеуральск, Арамиль, Сысерть), НЕ ЕКБ-сити
-- (тот не интегрирован в ФГИС ТП). Foundation для multi-city scaling Site Finder.
--
-- Наполняется Celery task harvest_all_riasurt_sverdl (riasurt_sverdl_harvest.py).
-- Читается в analyze_parcel через riasurt_lookup.parcel_riasurt_overlaps (ST_Intersects).
--
-- Deploy order: apply after 162_drop_district_economics_sat_factor.sql.
-- Зависимости: PostGIS, spatial_ref_sys (МСК-66 srid=100000 заведён в 91_engineering_networks_191fz.sql).
--
-- geom — EPSG:3857 (НСПД отдаёт в Web Mercator); geom_msk66 — generated STORED ST_Transform
-- в МСК-66 (srid=100000), официальную проекцию Свердл для градостроительных документов.

BEGIN;

CREATE TABLE IF NOT EXISTS riasurt_sverdl (
    id              BIGSERIAL PRIMARY KEY,
    -- layerId РИАСУРТ Свердл (845274 Тер.зона, 846381 Функц.зоны, 844478 КРТ, ...).
    source_layer_id INTEGER NOT NULL,
    -- бакет слоя для analyze-gate: 'territorial_zone' | 'functional_zone' | 'red_lines' |
    -- 'szz' | 'szo' | 'flood_zone' | 'krt' | ... (см. nspd_client.riasurt_layer_topic).
    layer_topic     TEXT NOT NULL,
    -- МО агломерации, к которому привязан harvest-проход (Берёзовский / В.Пышма / ...).
    mo_name         TEXT,
    -- reg_numb_border / индекс зоны из properties фичи (когда есть).
    obshnz          TEXT,
    -- человекочитаемое описание / название фичи (label / name из properties).
    description     TEXT,
    -- сырые properties фичи WMS GetFeatureInfo — для будущего резолва без re-harvest.
    raw_props       JSONB NOT NULL DEFAULT '{}'::jsonb,
    -- геометрия в EPSG:3857 (как отдаёт НСПД).
    geom            GEOMETRY(MULTIPOLYGON, 3857) NOT NULL,
    -- МСК-66 (официальная проекция Свердл) — generated STORED из geom.
    geom_msk66      GEOMETRY(MULTIPOLYGON, 100000)
                    GENERATED ALWAYS AS (ST_Transform(geom, 100000)) STORED,
    fetched_at      TIMESTAMPTZ NOT NULL DEFAULT now()
);

-- GIST на обе геометрии — analyze делает ST_Intersects по geom (после трансформа участка
-- в 3857) либо по geom_msk66; индексируем обе чтобы планировщик имел выбор.
CREATE INDEX IF NOT EXISTS idx_riasurt_sverdl_geom
    ON riasurt_sverdl USING GIST (geom);
CREATE INDEX IF NOT EXISTS idx_riasurt_sverdl_geom_msk66
    ON riasurt_sverdl USING GIST (geom_msk66);

-- Фильтр по topic в analyze (tier / func zone / red_lines / szz / szo / flood / krt).
CREATE INDEX IF NOT EXISTS idx_riasurt_sverdl_layer_topic
    ON riasurt_sverdl (layer_topic);

COMMIT;
