feat(sf): подзоны ПАТ Кольцово → pat_subzones (#1065) #1150

Merged
bot-reviewer merged 1 commit from feat/koltsovo-pat-subzones into main 2026-06-07 14:43:07 +00:00
Collaborator

Summary

Фаза-2 пайплайна ПАТ Кольцово (#1065 / эпик #1067): построение геометрии подзон из извлечённых координат.

  • 142_pat_subzones.sql — таблица pat_subzones (MultiPolygon 4326, UNIQUE aerodrome+subzone_no, GIST)
  • koltsovo_367p_subzones.json — входные данные Фазы-1
  • pat_subzones_load.py — Celery-task: репроекция МСК-66→WGS84, MultiPolygon с дырками, UPSERT, валидация
  • pat_lookup.py — parcel_pat_subzones graceful read-side
  • celery_app.py — регистрация task
  • test_pat_subzones.py — 16 тестов (transform + axis-swap + polygon + holes + lookup graceful)
## Summary Фаза-2 пайплайна ПАТ Кольцово (#1065 / эпик #1067): построение геометрии подзон из извлечённых координат. - **142_pat_subzones.sql** — таблица pat_subzones (MultiPolygon 4326, UNIQUE aerodrome+subzone_no, GIST) - **koltsovo_367p_subzones.json** — входные данные Фазы-1 - **pat_subzones_load.py** — Celery-task: репроекция МСК-66→WGS84, MultiPolygon с дырками, UPSERT, валидация - **pat_lookup.py** — parcel_pat_subzones graceful read-side - **celery_app.py** — регистрация task - **test_pat_subzones.py** — 16 тестов (transform + axis-swap + polygon + holes + lookup graceful)
bot-backend added 1 commit 2026-06-07 14:39:33 +00:00
feat(sf): подзоны ПАТ Кольцово из приказа 367-П → pat_subzones (#1065)
All checks were successful
CI / changes (push) Successful in 6s
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (push) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (push) Successful in 6m19s
CI / backend-tests (pull_request) Successful in 6m17s
8803d41c29
lekss361 added the
GG-форсайт
scope/backend
site-finder
ИРД
labels 2026-06-07 14:40:10 +00:00
bot-reviewer approved these changes 2026-06-07 14:42:58 +00:00
bot-reviewer left a comment
Collaborator

APPROVE — ПАТ Кольцово подзоны → pat_subzones (#1065). МСК-66 transform проверен.

Verified prod: миграция 142_pat_subzones.sql — таблица отсутствует, 142 не в _schema_migrations → один раз. Idempotent (BEGIN/COMMIT, IF NOT EXISTS, guarded UNIQUE(aerodrome, subzone_no), GIST geom).

МСК-66 transform проверен живьём (после #1124 — критично):

  • Использует #1124-калиброванные параметры x_0=1496944 y_0=-5911077 (не сырой x_0=1500000) → нет 3км-сдвига. ✓
  • Axis-order корректен: JSON [northing, easting] (pt[0]=3.8e5=northing, pt[1]=1.5e6=easting); код easting=pt[1], northing=pt[0], transform(easting, northing) always_xy.
  • Прогнал sample-точку через PostGIS ST_Transform: [381550.81, 1547094.51] → lon 60.818, lat 56.752 = аэропорт Кольцово ✓ (in_koltsovo=True).

ОК: MultiPolygon с дырками (внутренн-секторы → holes), make_valid + unary_union; SAVEPOINT (SAVEPOINT/RELEASE/ROLLBACK TO) per-subzone; ON CONFLICT(aerodrome, subzone_no); CAST psycopg v3; ST_Multi(ST_GeomFromText). Валидация centroid_in_koltsovo + area-ratio (warn-not-block, но прогнал — centroid_ok=True). Manual task (no beat). 16 тестов (transform/axis-swap/holes/lookup).

🟡 MINOR → follow-up (не блокер): врезка parcel_pat_subzones в analyze (приаэродром-ограничения) + прогон load_koltsovo_pat на проде. p2.

Merging (squash).

<!-- gendesign-review-bot: sha=8803d41 verdict=approve --> ✅ **APPROVE** — ПАТ Кольцово подзоны → pat_subzones (#1065). МСК-66 transform проверен. **Verified prod:** миграция `142_pat_subzones.sql` — таблица отсутствует, `142` не в `_schema_migrations` → один раз. Idempotent (BEGIN/COMMIT, IF NOT EXISTS, guarded UNIQUE(aerodrome, subzone_no), GIST geom). **МСК-66 transform проверен живьём (после #1124 — критично):** - Использует **#1124-калиброванные параметры** `x_0=1496944 y_0=-5911077` (не сырой x_0=1500000) → нет 3км-сдвига. ✓ - Axis-order корректен: JSON `[northing, easting]` (pt[0]=3.8e5=northing, pt[1]=1.5e6=easting); код `easting=pt[1], northing=pt[0]`, transform(easting, northing) always_xy. - **Прогнал sample-точку через PostGIS ST_Transform: [381550.81, 1547094.51] → lon 60.818, lat 56.752 = аэропорт Кольцово ✓** (in_koltsovo=True). **ОК:** MultiPolygon с дырками (внутренн-секторы → holes), make_valid + unary_union; SAVEPOINT (SAVEPOINT/RELEASE/ROLLBACK TO) per-subzone; ON CONFLICT(aerodrome, subzone_no); CAST psycopg v3; ST_Multi(ST_GeomFromText). Валидация centroid_in_koltsovo + area-ratio (warn-not-block, но прогнал — centroid_ok=True). Manual task (no beat). 16 тестов (transform/axis-swap/holes/lookup). 🟡 MINOR → follow-up (не блокер): врезка `parcel_pat_subzones` в analyze (приаэродром-ограничения) + прогон `load_koltsovo_pat` на проде. p2. Merging (squash).
bot-reviewer merged commit 9736192359 into main 2026-06-07 14:43:07 +00:00
bot-reviewer deleted branch feat/koltsovo-pat-subzones 2026-06-07 14:43:07 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1150
No description provided.