Часто задаваемые вопросы

Общие вопросы

Что такое Seatmap.pro?

Seatmap.pro — корпоративная платформа для создания, управления и отрисовки интерактивных схем рассадки на площадках. Она включает визуальный Editor для проектирования схем рассадки, высокопроизводительный Booking Renderer SDK (@seatmap.pro/renderer в npm) для выбора мест на базе WebGL и Booking API v2 для интеграции данных о доступности и продажах в реальном времени. Seatmap.pro — это только слой визуализации: платформа никогда не хранит ваши цены, данные о продажах или платёжную информацию. Ваша система продажи билетов остаётся единственным источником истины.

Какие типы площадок поддерживает Seatmap.pro?

Seatmap.pro поддерживает площадки любых размеров и конфигураций: концертные залы, стадионы, театры, арены, конференц-центры, спортивные объекты и любые пространства с нумерованными местами или входными зонами. Editor работает с нумерованными местами, входными зонами (GA), столами, зонами для стоящих зрителей и смешанными схемами. Вы можете импортировать существующие SVG-планы помещений и наложить рассадку поверх них.

Сколько мест может обработать Seatmap.pro?

Booking Renderer использует ускорение WebGL и отрисовывает 10 000+ мест с частотой 60 кадров/с в современных браузерах. Editor позволяет создавать схемы с десятками тысяч мест. Для очень больших площадок (30 000+ мест) рендерер автоматически переключается между уровнями детализации (отдельные места или обзоры секций), чтобы сохранить плавную производительность.

Какие фреймворки поддерживает рендерер?

Booking Renderer SDK не зависит от фреймворка. Он работает с React, Vue, Angular, Svelte или ванильным JavaScript. Установите его командой npm install @seatmap.pro/renderer и смонтируйте на любой HTML-контейнер. Примеры интеграции смотрите в руководстве по началу работы с рендерером.

Интеграция

Как интегрировать Seatmap.pro с моей системой продажи билетов?

Интеграция состоит из четырёх шагов: (1) спроектируйте схему рассадки в Editor, (2) создайте событие через Booking API v2 и свяжите его со схемой, (3) назначьте цены местам или секциям, (4) встройте Booking Renderer на свою страницу продаж с помощью TypeScript SDK. Рендерер взаимодействует с Booking API для получения данных о доступности мест в реальном времени, блокировки и обновления статусов. Подробное пошаговое руководство смотрите в руководстве по интеграции, а более широкий взгляд на тему — в статье Why API Integration is Crucial for Ticketing Platforms.

Что такое Booking API v2?

Booking API v2 — это REST API для управления событиями, ценообразованием и жизненным циклом бронирования мест. Он поддерживает такие операции, как создание событий, назначение цен, блокировка мест (с настраиваемым TTL), подтверждение продаж и разблокировка. Базовый URL API для облачных развёртываний — https://booking.seatmap.pro/api/private/v2.0/. Полный справочник доступен в документации API v2.

Можно ли встроить Editor в моё приложение?

Да. Editor можно встроить в ваше приложение через iframe. Вы можете управлять тем, какие инструменты и режимы будут видимы, передавать токены аутентификации для автоматического входа по SSO и обмениваться сообщениями с редактором через postMessage API. Смотрите руководства Iframe API и Iframe Communication.

Цены

Какие тарифные планы доступны?

Seatmap.pro предлагает три плана: Cloud (SaaS, от EUR 100/месяц, до 170 000 мест в год), On-Premise (самостоятельное размещение, EUR 20 000/год или бессрочная лицензия EUR 60 000, неограниченное число мест) и Custom (индивидуальная интеграция под корпоративные потребности). Никаких сборов за место или за бронирование нет. Смотрите раздел с ценами на главной странице.

Есть ли бесплатный пробный период?

Свяжитесь с нами через форму запроса демонстрации, чтобы организовать персональную демонстрацию и обсудить варианты пробного периода. Мы предлагаем сопровождаемую адаптацию, чтобы помочь вам оценить платформу на данных вашей собственной площадки.

Развёртывание

Можно ли развернуть Seatmap.pro на своих серверах?

Да. План On-Premise предоставляет образы Docker и Helm-чарты для самостоятельного развёртывания в вашей собственной инфраструктуре Kubernetes. Это даёт вам полный контроль над местом хранения данных, сетевой изоляцией и конфигурацией инфраструктуры. Смотрите руководство по развёртыванию On-Premise и документацию Helm-чартов. Сравнение моделей развёртывания смотрите в статье SaaS, On-Premise, and Managed On-Premise.

Каковы системные требования для развёртывания on-premise?

Развёртывание on-premise требует Kubernetes (1.24+), Helm 3, PostgreSQL 14+ и Redis 7+. Платформа работает как набор микросервисов: Editor Service (Java 21, Spring Boot), Booking Service (Java 21, Spring Boot), Converter Service (Node.js 22) и фронтенд-приложения. Минимальные рекомендуемые ресурсы — 4 ядра CPU и 8 ГБ RAM для рабочей нагрузки в продакшене.

Безопасность

Как Seatmap.pro обеспечивает безопасность данных?

Seatmap.pro — это только платформа визуализации. Она не обрабатывает платежи, не хранит данные о транзакциях и не держит ценовую информацию на своих серверах. Ваша система продажи билетов остаётся единственным источником истины для всех критически важных бизнес-данных. Связь между рендерером и Booking API использует HTTPS с принудительным HSTS. Развёртывания on-premise дают вам полный контроль над местом хранения данных и сетевыми политиками.

Соответствует ли Seatmap.pro требованиям GDPR?

Seatmap.pro придерживается практик работы с данными, согласованных с GDPR. Платформа собирает минимум персональных данных (только учётные записи пользователей редактора). Для облачных развёртываний данные размещаются в дата-центрах ЕС. Развёртывания on-premise хранят все данные в вашей собственной инфраструктуре. Подробности смотрите в нашей Политике конфиденциальности.

Editor

Не удаётся добавить пользователя

Вы не можете добавить пользователя, если

  • пользователь уже существует в текущей организации.
    В этом случае откажитесь от операции.
  • пользователь существует в другой организации.
    В этом случае удалите учётную запись пользователя в другой организации и создайте новую учётную запись в текущей, поскольку у пользователя может быть только одна учётная запись в Editor.

Я хочу отключить поддержку S3

Если вы не хотите использовать растровую графику вместо векторной, отключите S3, задав SEATMAP_STORAGE_TYPE=local (см. руководство по настройке Image Converter).

Я хочу задать цвета для цен

Вы можете изменить цвета цен как в Booking Renderer, так и в Admin Renderer.

Booking Renderer

Чтобы изменить цветовую тему цен в Booking Renderer, перейдите к settings->theme->priceColors.

Базовое использование:

const settings: IBookingRendererSettings = {
  theme: {
    priceColors: [
      ['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#00FFFF', '#FF00FF'],
    ],
  },
};

По сути, вы можете настроить один массив цветов цен. Если количество ценовых позиций события превысит число цветов в массиве, система повторно использует доступные цвета.

Чтобы избежать дублирования цветов для разных цен, рекомендуем задавать как можно более длинный массив цветов.

Расширенное использование:

const settings: IBookingRendererSettings = {
  theme: {
    priceColors: [
      ['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#00FFFF', '#FF00FF'],
      ['#FF0000', '#00FF00', '#0000FF', '#FF00FF', '#00FFFF'],
      ['#FF0000', '#00FF00', '#0000FF'],
      ['#FF0000', '#0000FF'],
      ['#0000FF'],
    ],
  },
};

При отрисовке схемы мы получаем количество ценовых позиций через API и выбираем подходящий список цветов. Например, если API возвращает 5 ценовых позиций, мы выберем массив из 5 цветов из этих настроек:

В этом сценарии, если мы не найдём массив, точно соответствующий возвращённому числу ценовых позиций, мы используем первый в качестве запасного варианта. Если первый массив тоже недостаточно длинный, система повторно использует доступные цвета. Поэтому мы рекомендуем размещать самый длинный массив первым.

Admin Renderer

В Admin Renderer вы можете задавать разные цветовые категории для разных мест.

Чтобы задать цвет методом setSeatsCategory(), передайте следующее:

  • список мест (обычно выбранных администратором вручную)
  • номер категории
  • новый цвет
renderer.setSeatsCategory(seats, 3, '#E50914');

Этот цвет не сохраняется в базе данных и предназначен только для использования администратором.

Также вы можете перейти к settings->theme->colorCategories и задать цвета по умолчанию для Admin Renderer, как описано выше.

Я хочу запретить удаление мест, которые заблокированы и проданы

Теперь вы можете запретить удаление мест с назначенными ценами, если их состояние — Locked и Sold — на уровне тенанта или организации.

В Editor при попытке удалить место с назначенной ценой в состоянии Locked и Sold появится предупреждение, но вы всё равно можете решить удалить место (запрос будет отправлен на бэкенд с forceDelete=true).

Но если вы зададите prohibitDeleteSeats на уровне тенанта или организации, запрос на удаление завершится ошибкой.

Чтобы включить эту настройку, используйте метод POST /api/organization/config/ с дополнительным параметром orgId.

{
"prohibitDeleteSeats":"true/false"
}

Эндпоинт доступен только пользователям с ролью ROLE_SUPER_ADMIN.

Чтобы получить информацию с бэкенда, используйте метод GET /api/organization/current или методы входа.

Я хочу скрыть некоторые пункты меню при открытии Editor в iframe

При открытии Editor в iframe вы можете скрыть ненужные пункты меню.

Для этого при вызове iframe добавьте в адресную строку параметр hidden, указав пункты меню, которые вы хотите скрыть.

Например, чтобы скрыть режим Pricing, инструменты Select и Label, а также фигуры Line и Polygon, добавьте следующее:
?hidden=pricing,select,label,line,polygon

Список пунктов меню, которые можно скрыть

  schema: 'mode.schema',
  underlay: 'mode.underlay',
  venueShape: 'mode.venueShape',
  pricingZones: 'mode.pricingZones',
  pricing: 'mode.pricing',
  section: 'mode.section',

  select: 'tool.select',
  seatRows: 'tool.seatRows',
  table: 'tool.table',

  shape: 'tool.shape',
  rect: 'tool.shape.rect',
  circle: 'tool.shape.circle',
  line: 'tool.shape.line',
  polygon: 'tool.shape.polygon',

  label: 'tool.label',
  selectSeats: 'tool.selectSeats',
  selectRows: 'tool.selectRows',
  addSeat: 'tool.addSeat',
  numberSeats: 'tool.numberSeats',
  selectSections: 'tool.selectSections',
  save: 'tool.save'

Я хочу включить предпросмотр в Editor

Чтобы включить функцию предпросмотра в Editor, задайте следующие параметры:

services.preview.url — адрес сервиса предпросмотра. По умолчанию: http://localhost:5000/
services.preview.path — путь к сервису предпросмотра. По умолчанию: wconvert_pdf/