gendesign/data/sql/85_pzz_zones_ekb.sql
Light1YT 86e9ea2937 fix(week-review): автофиксы код-ревью — 169 issue (label «week ревью 1»)
Многоагентный аудит + имплементация: один воркер на файл, точечные правки.
Верификация: py_compile (47/47 .py) + tsc --noEmit (0 ошибок). Unit-тесты
не прогонялись (окружение не поднято: rollup native dep / нет pytest-venv).

Полностью исправлено (169): #1336, #1337, #1339, #1340, #1341, #1342, #1343, #1345, #1346, #1348, #1349, #1350, #1351, #1354, #1356, #1358, #1359, #1360, #1362, #1364, #1365, #1366, #1367, #1368, #1369, #1370, #1371, #1372, #1373, #1374, #1375, #1376, #1377, #1378, #1379, #1380, #1381, #1382, #1384, #1385, #1386, #1387, #1388, #1389, #1390, #1391, #1392, #1394, #1395, #1396, #1397, #1399, #1400, #1401, #1402, #1403, #1404, #1408, #1409, #1410, #1411, #1412, #1413, #1414, #1415, #1416, #1417, #1418, #1420, #1423, #1425, #1426, #1427, #1428, #1429, #1430, #1431, #1432, #1433, #1434, #1435, #1437, #1438, #1439, #1440, #1441, #1442, #1443, #1444, #1445, #1446, #1447, #1448, #1449, #1450, #1451, #1452, #1453, #1454, #1455, #1456, #1457, #1458, #1459, #1460, #1461, #1462, #1463, #1464, #1465, #1466, #1467, #1468, #1469, #1471, #1472, #1473, #1474, #1476, #1478, #1479, #1481, #1482, #1483, #1484, #1485, #1487, #1488, #1489, #1490, #1491, #1492, #1493, #1494, #1495, #1496, #1497, #1499, #1500, #1501, #1502, #1504, #1505, #1506, #1507, #1510, #1514, #1515, #1516, #1517, #1518, #1519, #1521, #1522, #1523, #1524, #1525, #1526, #1527, #1528, #1529, #1531, #1532, #1533, #1534, #1535, #1536, #1537, #1538

Частично (9, in-file часть, остаток cross-file): #1361, #1419, #1422, #1424, #1470, #1475, #1477, #1480, #1498
Требуют cross-file (3, не тронуты): #1338, #1363, #1421
Пропущено (1): #1539

Не входило в партию: 22 needs-Leha issue (нужны решения владельца).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 20:21:11 +05:00

39 lines
2.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.

-- 85_pzz_zones_ekb.sql
-- Таблица территориальных зон ЕКБ из Росреестр PKK6 (Публичная кадастровая карта).
--
-- Данные: ArcGIS REST https://pkk.rosreestr.ru/arcgis/rest/services/PKK6/ZONES/MapServer/5/query
-- Загружается через Celery task tasks.pzz_sync.sync_pzz_zones_ekb
-- (ad-hoc: POST /api/v1/admin/scrape/pzz-sync).
--
-- Зависимости: PostGIS (уже установлен); PostgreSQL 15+ для UNIQUE NULLS NOT
-- DISTINCT на rosreestr_id (prod — PG16, postgis/postgis:16-3.4).
-- Применять: psql gendesign < data/sql/85_pzz_zones_ekb.sql
BEGIN;
CREATE TABLE IF NOT EXISTS pzz_zones_ekb (
id BIGSERIAL PRIMARY KEY,
rosreestr_id BIGINT, -- OBJECTID из PKK6
zone_code TEXT, -- "Ж-2.1", "ОД-1" и т.д.
zone_name TEXT, -- полное наименование зоны
description TEXT,
raw_props JSONB DEFAULT '{}'::jsonb,
geom GEOMETRY(MultiPolygon, 4326) NOT NULL,
fetched_at TIMESTAMPTZ NOT NULL DEFAULT now(),
-- NULLS NOT DISTINCT (PG15+): rosreestr_id nullable (PKK6 при f=geojson иногда
-- кладёт OBJECTID в feature-level id, а не в properties → loader получает NULL).
-- Без этого NULL != NULL в обычном UNIQUE → ON CONFLICT (rosreestr_id) НЕ матчит
-- существующие NULL-строки → каждый повторный sync копит дубли зон (#1361).
-- Прецедент в репо: м.110 (uq_infra_dedupe), м.125, м.140.
UNIQUE NULLS NOT DISTINCT (rosreestr_id)
);
CREATE INDEX IF NOT EXISTS pzz_zones_ekb_geom_idx ON pzz_zones_ekb USING GIST(geom);
CREATE INDEX IF NOT EXISTS pzz_zones_ekb_code_idx ON pzz_zones_ekb (zone_code);
COMMENT ON TABLE pzz_zones_ekb IS
'Территориальные зоны ЕКБ из Росреестр PKK6 (Public Cadastral Map). '
'Содержит границы зон + код/имя. '
'Регламенты (max_height, FAR) — отдельно через pzz_regulations.';
COMMIT;