spacetab

@spacetab_bot

Кабинет оператора связи AltegroNET

Проект завершён, 2016–2022

Система, на которой оператор беспроводного интернета держал каналы связи своих клиентов: реестр SIM-карт и устройств, блокировка карт у сотового оператора, мониторинг сигнала на карте, баланс абонентов и выплаты агентам. Плюс Wi-Fi-идентификация по звонку для публичных сетей.

Клиент и задача

AltegroNET подключает компании к интернету по сотовым сетям: у клиента стоит устройство связи с SIM-картой M2M, а оператор отвечает за то, чтобы канал работал. Карты разных операторов, тарифы посуточные, клиентов приводят агенты и партнёры.

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

Что сделали

«Просмотр нахождения каналов связи»: устройства всех контрагентов на Яндекс Картах, цвета меток по состоянию, расшифровка цветов, подсказка над точкой

Каналы связи на карте

Все устройства — на Яндекс Картах, цвет метки показывает состояние канала: норма, отклонение параметров, нет данных дольше 10 минут, мониторинг выключен, карта заблокирована. Фильтр по контрагенту, поиск по номеру устройства или IP, в карточке точки — текущие параметры сигнала.

Дежурный видит проблемные точки по всей стране на одном экране.

«Список SIM-карт»: устройство, IP, номер, абонент, переключатели статуса у оператора (одна карта заблокирована), раскрытая строка с оператором, филиалом, ICCID, APN, тарифом и пакетом

Реестр SIM-карт

Устройство, IP, федеральный номер, абонент и статус у оператора; переключатель в строке блокирует или включает карту у сотового оператора. В раскрывающейся строке — оператор, филиал, ICCID, APN, белый IP, тариф и пакет. Поиск по любому параметру и фильтр по абоненту.

Карту отключают и включают из списка, не заходя в кабинет оператора.

«Информация по каналу связи»: номера, IP, APN, туннель, контрагент, тариф, пакет, договор, M2M-аккаунт, устройство, вознаграждение агента, статус у оператора, кнопка «Обновить статус»

Карточка канала связи

Всё о карте на одном экране: номера, IP, APN, туннель, тариф, пакет, договор, M2M-аккаунт, привязанное устройство, вознаграждение агента. Статус у оператора и дата последней активации, кнопка «Обновить статус» спрашивает оператора сразу, не дожидаясь плановой сверки.

Ответ на вопрос клиента «почему не работает» — в одной карточке.

«Устройство #410370»: точка на стройплощадке с двумя SIM-картами, ссылки на Observium и вход в оборудование

Карточка устройства

Описание и координаты точки, все SIM-карты устройства с их статусами. Из карточки — переход на страницу устройства в Observium и вход в веб-интерфейс оборудования по внутреннему или белому IP.

До настроек роутера и графиков нагрузки — один клик.

«Изменить информацию об устройстве»: тип, контрагент, координаты, параметры сети (RSSI, Ec/Io, RSRP, RSRQ, SINR), скорость, пинг, джиттер, потери, флажок мониторинга

Параметры сигнала и мониторинг

Устройства присылают параметры сети: диапазон, соту, LAC, RSSI, Ec/Io, RSRP, RSRQ, SINR, оператора, слот SIM, аптайм. При первом запуске фиксируются эталонные значения и замеры скорости, пинга, джиттера и потерь; если сигнал ушёл от эталона за порог, точка становится оранжевой, если замолчала дольше 10 минут — красной. Старые модели кабинет опрашивает сам каждые пять минут.

Просевший канал видно раньше, чем позвонит клиент.

«Контрагенты»: абоненты, агент и партнёр, число карт, переключатель блокировки (один контрагент заблокирован), приглашение по email

Контрагенты и роли

Абоненты, агенты и партнёры в одном списке: роль, число карт, блокировка переключателем, приглашение по email. Каждая роль видит своё: агент — карты своих клиентов, абонент — только свои.

Доступы раздаются ролью, а не отдельной настройкой на каждого.

«Изменить данные контрагента»: баланс, кредит, ИНН, роль, договоры, агент, доступ в Observium

Баланс, договоры и отчёты

Каждую ночь кабинет списывает посуточную плату по тарифу каждой карты, баланс контрагента складывается из списаний, зачислений и кредитного лимита. В карточке — договоры, агент и доступ в Observium. Отчёты в Excel: полный, по устройствам, по контрагентам, выплаты агентам, по партнёрам, по IP.

Абонентская плата и вознаграждения агентов считаются без ручных таблиц.

Кабинет абонента: только свои SIM-карты, статус «Акт.» вместо переключателя, баланс в шапке, короткое меню

Кабинет абонента

Клиент входит под своей учётной записью и видит только свои SIM-карты, устройства и их точки на карте; баланс — в шапке на каждом экране.

Клиент сам проверяет свои каналы и остаток на счёте.

Хотспот, вкладка «Идентификация»: номер для звонка с таймером брони и ссылка на постановления о Wi-Fi-идентификацииХотспот после звонка: логин — номер телефона, придуманный пароль, «Регистрация и вход в интернет»

Wi-Fi-идентификация звонком

Страница хотспота на роутере MikroTik выдаёт пользователю номер на две минуты. Он звонит, звонок сбрасывается бесплатно, сервис узнаёт номер через Voximplant, заводит логин — номер телефона — и пароль из четырёх цифр в RADIUS. Пароль можно сменить, а дальше входить с вкладки «Войти».

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

1 / 9
  • Работа с операторами без единой точки отказа

    Блокировка, включение и статусы карт идут через отдельную библиотеку со шлюзами: API МегаФона и резервный путь Altway — робот в браузере заходит в веб-кабинет оператора и проходит капчу через сервис распознавания, когда API лежит. Статусы сверяются трижды в день, о каждой блокировке и сбое приходит письмо.

    Карты остаются управляемыми, даже когда API оператора недоступен.

Как устроено

Кабинет — Laravel и PostgreSQL с полнотекстовым поиском по картам, устройствам и контрагентам; планировщик сверяет статусы карт, списывает плату и отмечает замолчавшие устройства. Опрос устройств вынесен в микросервисы на Kotlin (пинг) и Crystal (чтение параметров модема) с публикацией результатов в Redis. Wi-Fi-идентификация — отдельный API на Laravel, страница хотспота на Vue внутри MikroTik и учётные записи в RADIUS.

Сроки и масштаб

  1. Март 2016 начало работ: библиотека для M2M-API операторов.
  2. Август 2016 кабинет на Laravel.
  3. Декабрь 2016 вход в Observium прямо из кабинета.
  4. Сентябрь 2017 Wi-Fi-идентификация: API и страница хотспота.
  5. Октябрь 2017 развёртывание через Ansible и Docker.
  6. Ноябрь 2017 контрагенты с ролями, посуточные тарифы и баланс, M2M-аккаунты.
  7. Январь 2018 микросервисы опроса устройств.
  8. Июнь 2018 резервный путь к картам МегаФона через веб-кабинет.
  9. Март–апрель 2019 мониторинг LTE: RSRP, RSRQ, SINR, аптайм.
  10. Май 2022 последний коммит.

Масштаб: 13 репозиториев и около 1 300 коммитов за шесть лет, из них 1 039 — в кабинете.

Что это дало

  • Каналы связи в одном месте

    Карта, устройство, абонент, тариф и статус у оператора связаны между собой и находятся поиском.

  • Управление картами без кабинетов операторов

    Блокировка и включение — переключателем в списке, с резервным путём на случай сбоя API.

  • Мониторинг вместо звонков клиентов

    Отклонения сигнала и замолчавшие точки видны на карте по цвету.

  • Деньги считаются сами

    Ежедневные списания, баланс абонентов и отчёты по выплатам агентам и партнёрам.

  • Wi-Fi по требованиям закона

    Идентификация звонком, бесплатная для пользователя.

Технологии

Интеграции

Статус

Проект завершён. Работали в 2016–2022 годах. Экраны сняты с кабинета, поднятого из исходного кода на вымышленных данных.

Есть похожая задача?

Расскажите о ней — ответим в течение рабочего дня и предложим, с чего начать.

Telegram: @spacetab_bot · Почта: bip@spacetab.io