gendesign/data/sql/96_ekburg_construction_permits.sql
lekss361 59d7300c9c feat(permits): ЕКБ РНС/РВЭ xlsx parser + schema + ETL (#105 PR A)
Phase 1+2: parser + schema + Celery ETL. xlsx структура live-verified
по всем 5 файлам 2022-2026. 24 unit tests pass.

Phase 3 (geocoding), 4 (beat), 5 (analyze integration) — отдельные PR'ы.
2026-05-16 14:34:20 +03:00

91 lines
4.2 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 96_ekburg_construction_permits.sql
-- Issue #105 — РНС/РВЭ ЕКБ 2022-2026 (xlsx от екатеринбург.рф, Форма 3 и 4 Росстата).
--
-- Источник: https://xn--80acgfbsl1azdqr.xn--p1ai/дляработы/гиз/градостроительство/разрешение
-- Формат: XLSX с двумя листами:
-- «реестр разрешений на строительс» — Таблица 3 (РНС)
-- «реестр разрешений на ввод» — Таблица 4 (РВЭ)
--
-- Refresh: monthly via tasks.ekburg_permits_sync.refresh_all
-- Geocoding: raw_coord_x / raw_coord_y — местная СКФ-66 (Свердловская обл.),
-- geocoded_lat / geocoded_lon заполняются отдельной задачей (Phase 3).
BEGIN;
CREATE TABLE IF NOT EXISTS ekburg_construction_permits (
id BIGSERIAL PRIMARY KEY,
permit_type TEXT NOT NULL CHECK (permit_type IN ('RNS', 'RVE')),
-- Реквизиты разрешения
permit_number TEXT NOT NULL,
issue_date DATE,
expiry_date DATE,
-- Застройщик
developer_inn TEXT,
developer_name TEXT,
-- Объект
object_name TEXT,
object_type TEXT, -- из Справочника: многоквартирные жилые дома; и т.д.
construction_address TEXT,
cadastral_number TEXT, -- кадастровый номер ЗУ (колонка 6)
-- Площади
total_area_sqm NUMERIC, -- общая площадь по проекту, м²
living_area_sqm NUMERIC, -- площадь жилых помещений по проекту, м²
living_area_fact_sqm NUMERIC, -- площадь жилых помещений фактически (только РВЭ)
-- Координаты (местная СКФ-66 Свердловской обл. — CRS TBD Phase 3)
raw_coord_x TEXT,
raw_coord_y TEXT,
-- РВЭ-специфичные поля
rve_number TEXT, -- номер разрешения на ввод
rve_date DATE, -- дата разрешения на ввод
-- Геокодирование (Phase 3)
geocoded_lat NUMERIC,
geocoded_lon NUMERIC,
geom GEOMETRY(POINT, 4326),
-- Метаданные загрузки
source_year INT NOT NULL,
source_url TEXT,
raw_row JSONB,
fetched_at TIMESTAMPTZ DEFAULT NOW(),
UNIQUE (permit_type, permit_number)
);
CREATE INDEX IF NOT EXISTS gist_ekburg_permits_geom
ON ekburg_construction_permits USING GIST (geom);
CREATE INDEX IF NOT EXISTS idx_ekburg_permits_issue_date
ON ekburg_construction_permits (issue_date);
CREATE INDEX IF NOT EXISTS idx_ekburg_permits_developer
ON ekburg_construction_permits (developer_inn);
CREATE INDEX IF NOT EXISTS idx_ekburg_permits_year
ON ekburg_construction_permits (source_year);
CREATE INDEX IF NOT EXISTS idx_ekburg_permits_type_year
ON ekburg_construction_permits (permit_type, source_year);
COMMENT ON TABLE ekburg_construction_permits IS
'РНС/РВЭ ЕКБ 2022-2026 (Форма 3/4 Росстата). '
'Source: екатеринбург.рф xlsx. Refresh: monthly via tasks/ekburg_permits_sync. '
'Координаты raw_coord_x/y в местной СКФ-66 (CRS TBD). '
'Геокодирование через Nominatim — Phase 3 (отдельный PR).';
COMMENT ON COLUMN ekburg_construction_permits.raw_coord_x IS
'X-координата характерной точки ЗУ (местная система координат СКФ-66 / СНСК-66).';
COMMENT ON COLUMN ekburg_construction_permits.raw_coord_y IS
'Y-координата характерной точки ЗУ (местная система координат СКФ-66 / СНСК-66).';
COMMENT ON COLUMN ekburg_construction_permits.living_area_fact_sqm IS
'Заполняется только для РВЭ (Таблица 4, колонка 15).';
COMMIT;