feat(db): схема gas_grs_outlet_points — форма 6 Екатеринбурггаза (#2119 B2, PR-1/4) #2246

Merged
bot-backend merged 1 commit from feat/gas-outlet-schema into main 2026-07-03 02:15:51 +00:00
Collaborator

Summary

  • Фаза B2-остаток #2119: адресные точки выхода газораспределительной сети (форма 6 ФАС №960, АО «Екатеринбурггаз», ~1037 строк/мес; разведка живого источника 2026-07-03 — домен сменился на ekgas.ru apex, старый ekaterinburggaz.ru продаётся).
  • Таблица gas_grs_outlet_points: ГРС block-marker (grs_name_norm — связь с B1 gas_grs_capacity), точка выхода, тип потребителя, объёмы заявок/удовлетворено, свободная мощность млн.куб.м/МЕС (≠ тыс.м³/ч B1!), маркер 0.000*needs_calc (218 строк «требует гидрорасчёта» — не ноль!), address_extracted (~19% строк с адресом) + geom NULL до геокода PR-3.
  • UNIQUE обычный (все 4 ключевых NOT NULL — NULLS NOT DISTINCT был бы косметикой, отличие от 181/182 объяснено в шапке).
  • Валидация — реальный dry-run на эфемерном контейнере прод-образа postgis/postgis:16-3.4: идемпотентность (двойной прогон), geometry_columns POINT/4326, ON CONFLICT-цель для лоадера, факт+прогноз сосуществуют.

План: PR-2 лоадер → PR-3 DaData-геокод → PR-4 Celery+§3.

Test plan

  • dry-run на прод-образе (см. выше)
  • post-deploy: \d gas_grs_outlet_points на проде

Refs #2119

## Summary - Фаза B2-остаток #2119: адресные точки выхода газораспределительной сети (форма 6 ФАС №960, АО «Екатеринбурггаз», ~1037 строк/мес; разведка живого источника 2026-07-03 — домен сменился на **ekgas.ru** apex, старый ekaterinburggaz.ru продаётся). - Таблица `gas_grs_outlet_points`: ГРС block-marker (`grs_name_norm` — связь с B1 `gas_grs_capacity`), точка выхода, тип потребителя, объёмы заявок/удовлетворено, **свободная мощность млн.куб.м/МЕС** (≠ тыс.м³/ч B1!), маркер `0.000*` → `needs_calc` (218 строк «требует гидрорасчёта» — не ноль!), `address_extracted` (~19% строк с адресом) + `geom` NULL до геокода PR-3. - UNIQUE обычный (все 4 ключевых NOT NULL — NULLS NOT DISTINCT был бы косметикой, отличие от 181/182 объяснено в шапке). - **Валидация — реальный dry-run на эфемерном контейнере прод-образа `postgis/postgis:16-3.4`**: идемпотентность (двойной прогон), geometry_columns POINT/4326, ON CONFLICT-цель для лоадера, факт+прогноз сосуществуют. План: PR-2 лоадер → PR-3 DaData-геокод → PR-4 Celery+§3. ## Test plan - [x] dry-run на прод-образе (см. выше) - [ ] post-deploy: `\d gas_grs_outlet_points` на проде Refs #2119
bot-backend added 1 commit 2026-07-03 02:00:57 +00:00
feat(db): gas_grs_outlet_points — точки выхода ГРС форма 6 (#2119 B2 PR-1/4)
All checks were successful
CI / changes (pull_request) Successful in 9s
CI Trade-In / changes (pull_request) Successful in 10s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 1m51s
CI / backend-tests (pull_request) Successful in 14m12s
07f9f7c943
Миграция 184: адресные точки выхода газораспределительной сети (форма 6
приказа ФАС №960, раскрытие АО «Екатеринбурггаз», ~1037 строк/мес).

- grs_name_norm нормализуется как в gas_grs_capacity (181) → JOIN «точка
  выхода → свободная мощность ГРС» без FK (источники разные: ГТЕ vs ЕКгаз).
- Размерность млн. м³/МЕСЯЦ (НЕ тыс. м³/ч как в 181) — отражено в COMMENT.
- «0.000*» = требуется гидрорасчёт: free_capacity_mln_m3 NULL +
  free_capacity_needs_calc TRUE (не путать с настоящим 0).
- is_forecast разводит факт («за <месяц>») и прогноз («на <месяц>») одного
  period_month; логический UNIQUE(grs_name_norm, outlet_name, period_month,
  is_forecast) — все 4 колонки NOT NULL, обычный UNIQUE (без NULLS NOT DISTINCT).
- Индексы: GIST(geom), btree(grs_name_norm), btree(period_month DESC).
- geom NULL до PR-3 (геокод DaData) и навсегда у ~81% строк без адреса.

Идемпотентно (IF NOT EXISTS), BEGIN/COMMIT. Провалидировано dry-run в
ephemeral postgis/postgis:16-3.4 (prod-образ): двойной прогон,
fact+forecast coexist, ON CONFLICT upsert, отклонение дубля.

PR-план #2119 B2: PR-1 schema (этот) · PR-2 лоадер · PR-3 геокод · PR-4 §3.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
bot-backend merged commit 7c73bbfbeb into main 2026-07-03 02:15:51 +00:00
bot-backend deleted branch feat/gas-outlet-schema 2026-07-03 02:15:51 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
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#2246
No description provided.