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'ы.
91 lines
4.2 KiB
PL/PgSQL
91 lines
4.2 KiB
PL/PgSQL
-- 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;
|