Граф Wiki

Видеонаблюдение — услуга под ключ

Видеонаблюдение (/admin/video/) — продажа и обслуживание видеонаблюдения как услуги: от заявки до ежемесячной абонплаты. Модуль ведёт объекты клиента с камерами, воронку монтажных проектов с документами, пульт оператора охраны, собственный медиа-сервер и архив записей. Деньги идут через отдельный лицевой счёт объекта, оборудование — через склад, сделки — общие с CRM.

Модуль «Видеонаблюдение» — на сайте продукта
Содержание раздела
Обучающее видео 2:45

Шесть шагов работы с модулем на живых экранах: объекты и камеры, проекты, подписки и оплата.

1920×1080 с озвучкой Скачать

Как устроен модуль

Дашборд модуля: KPI воронки, MRR, привязка камер

Ядро — объект наблюдения: адрес клиента, на котором стоят камеры. У объекта свой лицевой счёт, поэтому долг за видео блокирует камеры, но не трогает интернет. Всё остальное навешивается на объект:

flowchart LR
  A["Клиент"] --> B["Объект наблюдения"]
  B --> C["Камеры"]
  B --> D["Оборудование"]
  B --> E["Подписки"]
  B --> F["Проект (сделка)"]
  E --> G["Списания billing_worker"]
  C --> H["Медиа-сервер go2rtc"]
  H --> I["Архив MediaMTX"]
  B --> J["Пульт ЧОПа"]

Объект и проект — разные вещи. Объект живёт постоянно (камеры, подписки, архив), проект — это разовая сделка на монтаж или расширение. У одного объекта может быть несколько проектов: первая очередь, вторая, ремонт после грозы.

Объекты и камеры

Список объектов: колонка «В эфире», чипы фильтров, организация

Список объектов — /admin/video/objects/. Колонка «В эфире» показывает, сколько камер реально отдают видео из общего числа: «3 / 4» зелёным — всё в порядке, «0 / 4» красным — объект молчит. Если медиа-сервер недоступен, вместо счётчика показывается просто количество камер — система не выдаёт «ноль в эфире» за факт.

Чипы над таблицей отбирают объекты с подписками, заблокированные и должников. Карточка объекта открывается модалкой: клиент, название, тип (частный дом, СМБ, МКД, госучреждение, охраняемый объект ЧОП, другое), организация-владелец и адрес.

Тот же список объектов клиента доступен из его карточки — вкладка «Видео», там же камеры, оборудование и подписки.

Проекты: воронка и документы

Канбан проектов: стадии, суммы по колонкам, документы на карточке

Путь проекта от заявки до абонплаты:

flowchart LR
  L["Заявка"] --> S["Обследование"]
  S --> D["Проект / КП"]
  D --> C["Договор"]
  C --> M["Монтаж"]
  M --> P["ПНР"]
  P --> G["Сдан"]
  G --> V["На сервисе"]
  D -. "КП, согласие ПДн" .-> DOC["Документы"]
  C -. "договор" .-> DOC
  G -. "акт сдачи-приёмки" .-> DOC
  V --> B["Ежемесячная абонплата"]

Канбан проектов — /admin/video/projects/. Девять стадий: заявка, обследование, проект/КП, договор, монтаж, ПНР, сдан, на сервисе, отменён. В шапке колонки — количество сделок и сумма по стадии.

Проект видеонаблюдения — это та же сделка, что в CRM (deal_type='video'), просто показанная в своём разрезе. Из канбана есть переход «В CRM», из карточки сделки — задачи, звонки, теги и история стадий. Отдельная страница карточки видео-сделки сохранена ради генератора документов.

С карточки проекта печатаются пять документов: акт обследования, коммерческое предложение, договор, акт сдачи-приёмки и согласие на обработку персональных данных (152-ФЗ). Тексты редактируются в едином центре документов /admin/documents/templates/ — шапка с реквизитами, логотип и печать берутся из брендинга организации.

Сервисные планы и подписки

Сервисные планы карточками: цена, архив, SLA, health-check

Как подписка превращается в деньги:

flowchart LR
  PL["Сервисный план"] --> SUB["Подписка объекта"]
  SUB --> UU["Периодическая услуга"]
  UU --> BW["billing_worker раз в месяц"]
  BW --> ACC["Видео-счёт объекта"]
  ACC -- "минус" --> BLK["Блокировка камер"]
  ACC -- "оплачен" --> OK["Камеры работают"]

Видео-счёт отдельный: долг за видеонаблюдение гасит камеры, но интернет клиента продолжает работать. Обратное поведение включается настройкой «Блокировать ещё и интернет».

/admin/video/plans/ — карточки планов обслуживания: диапазон камер, цена в месяц, срок хранения архива, SLA реакции, квартальный health-check и услуга каталога, по которой идёт списание.

Подписка привязывает план к объекту и создаёт периодическую услугу (system_type=20), которую ежемесячно списывает billing_worker — с отдельного видео-счёта объекта, без скидок интернет-лояльности.

Каталог оборудования и склад

Каталог моделей: фото, закупка, остаток на складе, паспорт

/admin/video/models/ — справочник моделей: камеры, регистраторы, PoE-коммутаторы, ИБП, накопители. У модели есть характеристики (мегапиксели, PTZ, уличная), цена-ориентир для сметы и ссылка на паспорт — она открывается иконкой прямо из списка.

Модель связывается с позицией склада. Тогда в каталоге видно фото, закупочную цену и остаток, а в карточке сделки считается экономика проекта: смета оборудования и работ против фактической себестоимости списанного со склада, маржа в рублях и процентах. Пока по сделке ничего не списано, маржа не показывается — иначе она равнялась бы всей сумме КП.

Медиа-сервер go2rtc

Медиа-сервер: состояние потоков, маскированный источник, «Завести»

Состояния камеры и что с ними делать:

stateDiagram-v2
  [*] --> Заведена_в_биллинге
  Заведена_в_биллинге --> Не_заведена: потока в go2rtc нет
  Не_заведена --> В_эфире: кнопка «Завести»
  В_эфире --> Нет_сигнала: источник молчит
  Нет_сигнала --> В_эфире: связь восстановилась
  В_эфире --> Выключена: снят флаг «активна»
  Выключена --> В_эфире: включили обратно

«Не заведена» и «нет сигнала» — разные неисправности. Первая лечится кнопкой в биллинге, вторая — выездом или проверкой канала: поток создан, но камера не отдаёт картинку.

/admin/video/streams/ — все потоки медиа-сервера и их сопоставление с камерами биллинга. Для каждого потока видно состояние (онлайн, оффлайн, не заведён), клиента, объект и наличие архива.

Пароли камер не показываются. В списке и в API строка источника маскируется (rtsp://user:•••@host). Полный адрес открывает только администратор — кнопкой в модалке потока, и каждый показ записывается в аудит.

Если камера заведена в биллинге, но потока в go2rtc нет, строка помечается и предлагает действие «Завести»; кнопка «Завести все» в шапке создаёт потоки для всех таких камер разом.

Архив записей

Архив камеры: живой поток, шкала суток, фрагменты

Архив камеры открывается из списка потоков или карточки объекта. На странице живой поток, шкала суток с сегментами записи и список фрагментов.

Пульт ЧОПа

Пульт ЧОПа: стена камер, счётчики, панель тревог

Жизненный цикл тревоги — и откуда берётся время реакции:

stateDiagram-v2
  [*] --> Новая: сигнал с объекта
  Новая --> Принята: оператор нажал «Принять»
  Новая --> Ложная: помечена ложной
  Принята --> Обработана: выезд завершён
  Принята --> Ложная: подтвердилась как ложная
  Обработана --> [*]
  Ложная --> [*]
  note right of Принята
    время от «Новой» до «Принята»
    и есть время реакции в отчёте SLA
  end note

/admin/dispatch/ — рабочее место оператора охраны: стена камер охраняемых объектов, счётчики и панель тревог. Плитка камеры честно показывает своё состояние: «в эфире», «нет сигнала» (поток есть, источник молчит), «не заведена» или «выключена».

У тревоги один жизненный цикл и всегда одно очевидное действие: новая — «Принять», принятая — «Обработана»; отдельной кнопкой можно пометить ложной. Рядом видно, кто принял и когда, а у непринятой тикает счётчик ожидания — это и есть время реакции, которое потом попадает в отчёт по SLA.

На телефоне тревоги стоят первым блоком, выше стены камер: оператор не должен пролистывать десятки плиток, чтобы увидеть тревогу.

Отчётность по SLA

Отчётность ЧОП: KPI, графики доступности и тревог, таблицы

/admin/video/reports/ — отчёт по охраняемым объектам за период (7 / 30 / 90 дней, год): доступность, простой, тревоги, время реакции и выручка. Кроме таблиц есть два графика: доступность по дням и тревоги со средним временем реакции.

Доступность считается по событиям потери и восстановления связи. Если таких событий за период не было, отчёт пишет «нет данных» и ставит прочерк — а не рисует ровные 100 %, которых никто не измерял.

Кнопка «Экспорт CSV» выгружает те же данные для сводных таблиц.

Права и организации

flowchart TD
  U["Сотрудник"] --> O{"Его организации"}
  O -->|"свои"| VIS["Объекты, камеры, сметы, тревоги"]
  O -->|"чужие"| X404["404 даже по прямой ссылке"]
  U --> R{"Права разделов"}
  R -->|"sec_video"| SV["Раздел «Видеонаблюдение»"]
  R -->|"sec_dispatch"| SD["Пульт ЧОПа"]

Раздел скоупится по организациям: сотрудник видит объекты, камеры, сметы и тревоги только своих компаний, а переключатель организации в шапке фильтрует списки. Переход по прямой ссылке на чужой объект отдаёт 404.

Права разведены на два ключа:

Настраиваются в /admin/settings/permission_settings/.

Настройки модуля

Настройки модуля: основные, биллинг, облако, архив

/admin/video/settings/ — четыре группы:

Чек-лист запуска

  1. Включить модуль в /admin/settings/modules/.
  2. Завести услуги типа «Видеонаблюдение» в каталоге услуг и сервисные планы на их основе.
  3. Наполнить каталог моделей и связать их с позициями склада — иначе себестоимость проектов не сойдётся.
  4. Настроить медиа-сервер: адрес go2rtc и публичный URL для плееров.
  5. Включить архив, если записи хранятся на своей стороне.
  6. Раздать права: sec_video инженерам и продажам, sec_dispatch — операторам пульта.
  7. Завести первый объект, камеру и подписку; проверить, что списание прошло по видео-счёту.