Клиенты¶
Раздел Клиенты отвечает на два вопроса продавца: кто у нас покупает и что именно каждый купил. Клиент здесь — юридическое лицо с договором, а не учётная запись: логином клиент не входит никуда, а его сотрудники, если им нужен доступ в панель, получают обычные аккаунты.
Услуга клиента не заводится отдельной кнопкой. Она выводится из настроек стримов: у пуша и у SRT-выдачи есть поле Кому продано, и как только на направлении стоит клиент, у этого клиента появляется услуга по этому стриму. Снимите последнее направление — услуга исчезнет сама.
Так устроено, чтобы не было двух источников правды. Отдельная запись об услуге рано или поздно разошлась бы с настройками, и оператор получил бы две несовпадающие картины: проданное по бумаге и отдаваемое в эфир.
Что раздел не делает¶
Раздел ведёт состав проданного, а не биллинг и не мониторинг:
- тарифов, счетов и денег в нём нет;
- графики, история и качество услуги живут на панели управления и на странице стрима — здесь рядом с каждой купленной вещью показан только её нынешний вид, чтобы ответить на звонок «у нас не показывает», не уходя со страницы.
Список клиентов¶
В списке четыре колонки: Идентификатор, Название, Договор и Состояние (Активен или Отключён). Строка ведёт в карточку клиента.

Кнопка Добавить клиента открывает форму из трёх полей — идентификатора, названия и договора. Первое требует внимания.

Идентификатор неизменен. Он не только адресует клиента: именно он уезжает тегом user_id_<идентификатор> в настройки направлений доставки и именно им называется зритель в статистике сессий. Сменить его потом нельзя — смена осиротила бы все проданные направления разом. Допустимы латинские буквы, цифры, точка, дефис и подчёркивание; форма проверяет значение тем же способом, каким его потом проверит тег, и негодное отклоняет прямо у поля.
Карточка клиента¶
Карточка состоит из трёх частей: услуги, ключи доступа внутри них и аккаунты.

Услуги¶
Одна услуга — один стрим, за которым стоит хотя бы одно направление доставки этого клиента. У каждой показано:
- индикатор состояния стрима, его текущий битрейт и класс картинки;
- список направлений: вид (Пуш, Токен, SRT-воспроизведение), имя, адресат (протокол, хост и порт — без ключей и паролей), состояние, время текущего подъёма, число ошибок отправки и число перезапусков, если они были.
Имя стрима ведёт на его страницу, направление — на вкладку, где оно настраивается. Разбор всякого вопроса по услуге продолжается там.
Величину, которой нет, карточка не подменяет нулём: у ненаблюдаемой услуги — стрим не поднят, статистика закрыта лицензией, машина не ответила — просто не будет битрейта и счётчиков. Выключенное оператором направление помечается Выключен и счётчиков не показывает вовсе: «ошибок: 0» рядом со словом «выключен» читалось бы как «работает и не ошибается».
Отдельно стоит число перезапусков. Направление, которое вообще не смогло подключиться, имеет ноль ошибок отправки и сотни перезапусков — именно эта величина отвечает на вопрос «а почему у клиента ничего нет».
Ключи доступа¶
Ключ доступа — это строка, по ссылке с которой покупатель смотрит канал. Ключи объявляются в настройках самого стрима, и в карточке видны те из них, что принадлежат этому клиенту. Завести новый ключ панель пока не умеет — это делается управляющим API, — а показать выданный, отдать оператору готовую ссылку и отозвать умеет.

- Кому выдан — имя ключа. Его придумывает оператор: это пометка о том, кому ключ отдан («головной офис», «резерв»), а не адрес и не логин.
- Токен — значение целиком. Оно не маскируется: покупателю его отправляют письмом, и прятать в панели то, что и так уезжает наружу, значит мешать оператору без выигрыша. Ролям, которым закрыты настройки, ключ не показывается вовсе.
- Копировать ссылку копирует не сам ключ, а готовую ссылку на проигрывание — с адресом, именем стрима и ключом. Собирать её руками не надо: в такой сборке и появляются опечатки. Адрес берётся тот, по которому открыта панель; если раздача живёт на другом домене, ссылка собирается по публичному адресу раздачи из настроек управляющей установки.
- Отозвать удаляет ключ. Отдельного состояния «отозван» нет: запись о ключе и есть право доступа. Идущее по нему проигрывание прекратится при ближайшей проверке доступа, поэтому кнопка спрашивает подтверждение.
Ключ открывает только тот стрим, в настройках которого объявлен, и только на просмотр: публиковать им нельзя, к управляющему API он не пускает. Сессия, открытая по ключу, называется в статистике идентификатором своего клиента — так потребление каждого покупателя считается отдельно.
Аккаунты¶
Здесь перечислены учётные записи панели, принадлежащие этому клиенту, — например, инженеры покупателя, которым выдан доступ. Поле внизу привязывает существующий логин, кнопка в строке отвязывает.
- Аккаунтов у клиента может быть сколько угодно, но у аккаунта не больше одного клиента: при попытке привязать чужой логин панель назовёт клиента, которому он уже принадлежит.
- Аккаунт без клиента — норма: так выглядят учётные записи ваших собственных операторов.
- Если логин удалён в разделе Аккаунты, связь остаётся видимой с пометкой Такого аккаунта нет. Это не ошибка целостности: клиентами и учётными записями распоряжаются разные разделы, и согласовывать их одним действием нечем.
Саму учётную запись здесь не заводят — карточка распоряжается принадлежностью, а не паролями.
Лейблы без клиента¶
Внизу списка клиентов появляется таблица Лейблы без клиента — направления доставки, помеченные идентификатором, которого в реестре нет. Причин ровно две: опечатка в теге или клиент, которого завели тегом, но не завели в реестре.
Скрывать их нельзя: тег на направлении при записи не проверяется, и это единственное место, где такая ошибка становится видна. В строке указаны стрим и направление, а кнопки предлагают завести такого клиента или открыть стрим и поправить тег.
Как продать стрим клиенту¶
- Заведите клиента в этом разделе — идентификатор, название, договор.
- Откройте стрим, вкладку настройки отдачи, и добавьте направление: пуш на адрес покупателя или SRT-выдачу со своим портом и паролем.
- В поле Кому продано выберите клиента из списка (снимок ниже). Пустое значение означает Служебная — никому не продана: так помечаются пуши на мониторинг, на резерв и показ партнёру.
- Сохраните. В карточке клиента появится услуга по этому стриму.

Одно направление можно продать нескольким покупателям — тогда форма показывает всех владельцев списком и правку не даёт: заменить набор одним значением значило бы молча снять продажу со всех остальных.
Если раздела нет¶
Реестр клиентов — отдельный компонент установки. Пакет Mcaster включает его сам, поэтому на обычной машине раздел работает сразу. Если панель показывает сообщение о том, что реестр не включён, установка собрана без него — так бывает у собранных вручную стендов; список клиентов при этом не пуст, его просто нет, и это сказано прямо, чтобы никто не искал пропавшие данные.