-- 130_ekb_geoportal_buildings.sql
-- Полный реестр зданий ЕКБ из городского геопортала (геопортал.екатеринбург.рф,
-- слой WFS portal:portal_geo_topo_build). Намного полнее чем NSPD cad_buildings
-- (который пропускает ~70% зданий ЕКБ) — используется как ПЕРВЫЙ локальный tier
-- геокодера для разрешения «улица + дом» → координаты.
--
-- Наполняется лоадером app.tasks.ekb_geoportal_ingest (python -m). UPSERT по
-- (street_norm, house_norm); координаты = центроид футпринта здания.
--
-- Нормализация (ДОЛЖНА совпадать с matcher'ом в geocoder._geoportal_house_match):
--   street_norm = lower(trim(street))
--   house_norm  = lower(house) с удалёнными внутренними пробелами («7 б» → «7б»)
--
-- Idempotent: CREATE TABLE IF NOT EXISTS + CREATE INDEX IF NOT EXISTS,
-- безопасно при повторном применении.

BEGIN;

CREATE TABLE IF NOT EXISTS ekb_geoportal_buildings (
    id           bigserial PRIMARY KEY,
    street       text NOT NULL,
    house        text NOT NULL,
    street_norm  text NOT NULL,
    house_norm   text NOT NULL,
    lat          double precision NOT NULL,
    lon          double precision NOT NULL,
    floors       integer,
    purpose      text,
    material     text,
    source_keys  bigint[],
    updated_at   timestamptz NOT NULL DEFAULT now(),
    UNIQUE (street_norm, house_norm)
);

CREATE INDEX IF NOT EXISTS ix_ekb_geoportal_buildings_street_house
    ON ekb_geoportal_buildings (street_norm, house_norm);

COMMIT;
