Публичная карта отключений

Публичная карта отключений для жителей: идущие и объявленные отключения теплоснабжения зонами на карте.

Где найти
адрес …/itwin-map/outages — открывается без входа.
Читаю как

Возможности

  • Смотреть без входа идущие и объявленные отключения теплоснабжения города: зоны на карте и список.
  • В списке у каждого отключения: «Идёт сейчас» или «Плановое, объявлено» («Аварийное — идёт сейчас», «Аварийное, объявлено»), сроки, текст для жителей, число потребителей и номер отключения.
  • Щелчок по строке списка или по зоне на карте — карта приближается к этой зоне; на телефоне список при этом сворачивается.
  • Страницу можно вставить на сайт акимата или городского портала через iframe — показ во фрейме ей разрешён.

Как это работает

Откуда данные. Страница раз в 5 минут запрашивает открытую ленту сервера /api/v1/public/outages. В ленту попадает отключение из окна «Отключения», если одновременно:

  • оно в статусе «Объявлено» или «Идёт» (запланированные, но не объявленные, завершённые и отменённые не видны);
  • у него отмечено «Показывать на публичной карте (зона, сроки и число потребителей, без их названий)»;
  • у него есть зона — то есть при планировании нашлись отключаемые участки.

Статус меняется только вручную в окне «Отключения»: объявленное отключение, срок которого прошёл, остаётся в ленте, пока диспетчер не переведёт его дальше.

Что видит житель. Номер, вид (плановое или аварийное), статус, плановые начало и конец, число потребителей и «Текст для жителей». Сроки — плановые и в часовом поясе браузера. Если начало и конец в один день — «02.11.2026 с 09:00 до 18:00», иначе «с … до …». Сначала идут текущие отключения, затем объявленные, внутри — по началу.

Что скрыто. Название и причина отключения, нагрузка, названия и адреса потребителей, задвижки, номера участков. Лента собирается из тех же данных, что окно «Отключения», но этих полей в ней нет.

Зона на карте — полоса 40 м вокруг отключаемых участков сети (и участков ниже по течению), упрощённая с шагом 10 м. Её строит сервер в момент планирования отключения или при «Пересчитать». Цвет: красный — идёт сейчас, оранжевый — объявлено. Здания по отдельности не выделяются: в зону попадает то, что рядом с трубой. Так и сказано в пояснении под списком отключений: зона — полоса вокруг отключаемых труб тепловой сети, а без отопления и горячей воды останутся дома, которые от них питаются, — даже если сам дом в полосу не попал. Сроки могут измениться; при аварии жителю нужно звонить в диспетчерскую службу своего города.

Подложка — улицы MapTiler. Если ключ MapTiler не задан или стиль не пришёл за 5 секунд, зоны рисуются на простом фоне без улиц.

Что нужно для работы

  • На сервере включена публичная лента: PUBLIC_OUTAGES_ENABLED=true. Без неё страница пишет, что карта не включена.
  • В окне «Отключения» у отключения отмечено «Показывать на публичной карте» и заполнен «Текст для жителей». Отметить и изменить это может пользователь с правом «Журналы» при включённой записи на сервере (MUTATIONS_ENABLED=true).
  • Для жителя — только браузер. Вход не нужен.

Шаги

1.

Публичная карта отключений: шаг 1

Примеры

Копия Алматы на стенде инструкции. Лента включена, но пуста: страница показывает «Сейчас плановых и аварийных отключений теплоснабжения нет.». В базе есть два учебных отключения по участку 133 («Замена задвижки в камере», 10.11.2026, 1001 потребитель), но оба отменены и без отметки «Показывать на публичной карте».

То же отключение, если его объявить и отметить для публикации. В списке появится строка «Плановое, объявлено», «10.11.2026 с 09:00 до 18:00» (в браузере с часовым поясом Алматы; в базе — 04:00–13:00 UTC), «1001 потребитель · О-2026-00010» и текст для жителей. Названий потребителей и причины в ленте не будет.

Если не получается

  • «Публичная карта отключений в этом городе пока не включена» — на сервере выключена публичная лента (PUBLIC_OUTAGES_ENABLED); включает администратор сервера.
  • «Не удалось загрузить отключения» — сервер недоступен; страница сама повторит загрузку через 5 минут, можно обновить и вручную.
  • Отключения нет на карте, хотя оно объявлено, — не отмечено «Показывать на публичной карте» или у отключения нет зоны (не нашлось отключаемых участков).
  • Отключение уже закончилось, а на карте ещё висит, — в окне «Отключения» его не перевели в «Завершено».
  • Карта без улиц — не задан ключ MapTiler или он не работает; зоны при этом видны.
  • Отключение появилось не сразу — страница обновляется раз в 5 минут; обновите её вручную.

Для администратора

  • Флаг API: PUBLIC_OUTAGES_ENABLED (true, 1, yes или on). Пока он выключен, лента отвечает 404, и страница, и слой отключений на встраиваемой карте пустые.
  • Лента и /api/v1/auth/config (название города в заголовке) открыты без входа даже при AUTH_REQUIRED_GET=true.
  • Подложка: NUXT_PUBLIC_MAPTILER_KEY у веба.
  • Показ во фрейме: веб отдаёт для /outages заголовок Content-Security-Policy: frame-ancestors *, для остальных страниц приложения — только свой сайт. Путь считается от NUXT_APP_BASE_URL.
  • Данные — таблица tgid_outage (поля public, public_note, area).

Для разработчика

  • API: GET /api/v1/public/outages (GeoJSON, без входа) — routers/outages.py, database/outages.py (map_geojson с public_only=True, PUBLIC_STATUSES, AREA_BUFFER, AREA_SIMPLIFY).
  • Веб: pages/outages.vue (без общего макета и без клиента API — адрес из runtimeConfig), правила порядка, подписей и цветов — utils/publicOutages.ts, заголовки фрейма — server/middleware/frameAncestors.ts, utils/frameAncestors.ts.
  • Тесты: vitest — tests/utils/publicOutages.spec.ts, tests/utils/frameAncestors.spec.ts; API — tests/test_outages.py. Отдельного e2e у страницы нет.
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо