Биллинг. Основные настройки биллинга

Раздел описывает работу с абонентами, настройку тарификации, установку и базовую конфигурацию системы СмИТ Биллинг 1.0.

Интерфейс биллинга

1. Общие настройки биллинга

Базовые параметры системы, конфигурация модулей и управление доступом.

1.1. IP адрес компьютера администратора

Для настройки IP-адреса администратора перейдите в веб-интерфейс СмИТ Биллинг 1.0: Настройки → Настройки (в файле) → Управление абонентами и тарифами. Измените параметр admin_ip.

Настройка admin_ip

1.2. Глобальные настройки биллинга и оператора

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

Глобальные настройки

Настройки RADIUS

ОпцияОписаниеПо умолчанию
Опция 43Таймаут обновления аккаунтинга (сек) — определяет, когда RADIUS-сессии истекают без активности1200
Опция 42Время сбора NetFlow после отключения пользователя (сек)0
Опция 41Регистронезависимый логин
Опция 25Ограничение VPN-подключения для пользователей с SNAT
Опция 23Завершение сессии при уходе баланса в минус
Опция 22Разрешить переподключение для «осиротевших» сессийВкл
Опция 17Отклонять авторизацию при отрицательном балансе

Настройки личного кабинета

ОпцияОписание
214001Универсальный пароль для личного кабинета
170004Показывать статистику в мегабайтах
76Вкладка VoIP-статистики
70Вкладка платежей
69Вкладка тарифов
67Разрешить смену MAC-адреса
56Кнопка Help Desk
45Автоматическая авторизация по IP

Общие настройки

ОпцияОписание
240006Алфавитная сортировка абонентов в дереве
240005Генерация контрольной суммы номера договора
240000Длительность обещанного платежа (0 = до конца месяца)
78Длина номера договора (по умолчанию: 7)
79Отображение даты договора в дереве
60Префикс номера договора (обязателен для автонумерации)

Настройки учёта

ОпцияОписание
225001Экспорт операторов в 1С
214002Счета предоплаты ограничены следующим месяцем
68Скрывать услуги с нулевой стоимостью в операциях
62Дата выставления счёта предоплаты (по умолчанию: 1-е число)
40Пересчитывать недобор при смене тарифа

Настройки оператора

Доступ через выбор оператора в дереве пользователей → вкладка «Настройки биллинга». Доступные параметры:

Проблема: изменение настроек одного оператора меняет настройки другого? Решение: выберите пустую строку оператора в выпадающем списке и сохраните — это создаст отдельную запись конфигурации.

1.3. Добавление SSL-сертификата для HTTPS

Для входа в административный интерфейс по HTTPS требуются три файла сертификата:

  1. server.crt — публичный сертификат
  2. server.key — приватный ключ
  3. server.pem — комбинированный файл (ключ + сертификат)

Если файл server.pem отсутствует, создайте его вручную, объединив key и crt:

-----BEGIN RSA PRIVATE KEY-----
[содержимое ключа]
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
[содержимое сертификата]
-----END CERTIFICATE-----

Время выполнения: ~5 минут (перезапуск ~1 мин).

Шаги установки:

  1. Скопируйте файлы сертификатов в директорию nginx: docker/nginx/certs/
  2. Обновите конфигурацию nginx (docker/nginx/carbon.conf) с путями к сертификатам
  3. Перезапустите контейнер nginx:
    docker compose restart nginx

1.4. Интерфейсы пользователей биллинга

Система позволяет настраивать отображение данных в веб-интерфейсе для различных ролей.

Пять типов интерфейсов:

Настройка:

  1. Перейдите в раздел «Управление администраторами».
  2. Создайте или отредактируйте пользователя, укажите логин, пароль и группу.
  3. Выберите тип интерфейса для пользователя.
  4. В разделе Биллинг → Настройки → Настройка веб-интерфейсов настройте видимость полей.
У пользователя root нельзя скрывать поля.

Параметры настройки полей:

1.5. Очистка базы данных. Удаление демо-данных

Два способа удаления демо-данных перед вводом системы в эксплуатацию:

Способ 1: Через веб-интерфейс

Время: до 15 минут. Перейдите в Настройки → Очистка базы данных и нажмите «Очистить».

Способ 2: Через Django management-команду

Время: 1-5 минут. Используется при развёртывании из Docker:

# 1. Остановить сервисы
docker compose down

# 2. Создать бэкап текущей БД
docker compose exec db pg_dump -U carbon carbon > /backup/carbon-$(date +%Y%m%d).sql

# 3. Пересоздать БД из чистого состояния
docker compose exec db psql -U carbon -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
docker compose exec web python manage.py migrate
docker compose exec web python manage.py loaddata initial_data

# 4. Запустить сервисы
docker compose up -d

1.6. Права доступа

Управление правами доступа к биллингу включает настройку ограничений по IP, управление администраторами и иерархические права на папки абонентов.

Ограничение доступа по IP

В разделе «Настройки платформы» можно указать доверенные IP-адреса и подсети для доступа к веб-интерфейсу и SSH:

Управление администраторами

  1. Создайте учётную запись пользователя с логином и паролем.
  2. Назначьте пользователя в группу.
  3. Установите групповые права доступа к разделам.

Доступ к папкам абонентов

Система использует иерархические права: администратор должен иметь доступ ко всем вышестоящим папкам в иерархии. Права каскадно распространяются при назначении на родительскую папку.

При отсутствии необходимых прав система отобразит сообщение об ограничении и запретит действие.

2. Работа с абонентами

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

Создание абонента

Первое что нужно сделать для создания абонента, это создать папку, которая служит шаблоном. Система позволяет одному абоненту иметь несколько учетных записей для разных услуг (интернет, IPTV, VoIP).

Процесс создания абонента включает следующие шаги:

  1. Создайте папку-шаблон, определяющую набор параметров для группы абонентов.
  2. Внутри папки создайте нового абонента, указав тип лица (физическое или юридическое).
  3. Заполните персональные данные абонента.
  4. Добавьте учётную запись (логин/пароль) для необходимых услуг.
  5. Назначьте тарифный план и IP-адрес.
  6. При необходимости создайте договор и внесите начальный платёж.
Создание абонента — шаг 1 Создание абонента — шаг 2 Создание абонента — шаг 3 Создание абонента — шаг 4 Создание абонента — шаг 5 Создание абонента — шаг 6 Создание абонента — шаг 7 Создание абонента — шаг 8 Создание абонента — шаг 9 Создание абонента — шаг 10 Создание абонента — шаг 11 Создание абонента — шаг 12 Создание абонента — шаг 13 Создание абонента — физическое лицо Создание абонента — юридическое лицо

Выбор тарифного плана (Добавление услуги)

Для подключения абоненту услуги необходимо выполнить следующие шаги:

  1. Откройте карточку абонента и перейдите на вкладку тарифов.
  2. Выберите подходящий тарифный план из списка доступных тарифов.
  3. Перейдите на вкладку услуг абонента.
  4. Нажмите кнопку добавления новой услуги.
  5. Укажите параметры услуги: дату начала, лимиты, дополнительные опции.
  6. Сохраните изменения.
Выбор тарифа Услуги абонента Добавление услуги

Распределение IP-адресов

СмИТ Биллинг 1.0 поддерживает несколько способов назначения IP-адресов абонентам:

Назначение подсетей

Для корпоративных клиентов или технических нужд можно назначать целые подсети. Подсети выделяются из пулов IP-адресов. При назначении подсети система автоматически резервирует все адреса диапазона.

Обработка ошибок

При попытке назначить уже занятый IP-адрес система выдаст предупреждение и предложит выбрать другой адрес. Если пул IP-адресов исчерпан, создайте новый пул или расширьте существующий в разделе «Справочники → Пулы IP».

Ручное назначение IP Пул IP-адресов Привязка пула к абоненту

Дерево пользователей

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

Рекомендуется ограничивать количество абонентов в одной группе до 300. При превышении этого лимита интерфейс может работать медленнее. Используйте вложенные папки для логического разделения.

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

Статус «Онлайн» отображается в дереве цветной индикацией: зелёный значок означает, что абонент в данный момент авторизован и использует услугу. Информация об онлайн-статусе обновляется в реальном времени при получении данных от NAS.

Основное дерево абонентов Динамическое дерево абонентов Онлайн-статус в дереве

Договоры

Система поддерживает создание и печать договоров на основе шаблонов. Шаблоны договоров настраиваются в разделе «Шаблоны документов» и могут содержать переменные подстановки (ФИО, адрес, номер договора, тариф, дата).

Создание договора

Договор создаётся в карточке абонента на вкладке «Договоры». Укажите шаблон, дату заключения и при необходимости отредактируйте номер договора.

Нумерация договоров

Номер договора формируется автоматически на основе настроенного префикса и последовательного номера. Правила формирования префикса настраиваются в глобальных настройках биллинга. Допускаются префиксы с разделителями (например, ДОГ-2026/).

Быстрая печать

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

Список договоров абонента Создание нового договора Печать договора

СмИТ Биллинг 1.0 предоставляет несколько инструментов для поиска абонентов:

Быстрый поиск

Поле быстрого поиска расположено в верхней панели интерфейса. Позволяет искать абонентов по логину, ФИО, номеру договора, IP-адресу или MAC-адресу. Результаты отображаются мгновенно по мере ввода.

Расширенный поиск

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

Поиск по папке

Поиск внутри выбранной папки дерева абонентов. Удобен для работы с конкретной группой абонентов.

Массовые операции

Результаты поиска можно использовать для массовых операций: смена тарифа, блокировка/разблокировка, отправка сообщений, экспорт в CSV. Выберите нужных абонентов с помощью чекбоксов и примените действие из выпадающего меню.

Экспорт в CSV

Любой результат поиска можно выгрузить в CSV-файл для дальнейшей обработки в Excel или других программах.

Быстрый поиск Расширенный поиск

Статистика, аудит, диагностика

Аудит: для просмотра аудита абонента откройте карточку «Аудит» в профиле абонента. Отображаются все изменения: карточка, услуги, отправленные сообщения и т.д.

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

Финансовые операции. Учёт НДС

Вкладка «Операции» в карточке абонента отображает историю финансовых транзакций:

Расчёт баланса

Ключевые пороги

Учёт НДС

Все операции в системе включают НДС в стоимость. Учёт ведётся по схеме «НДС включён в стоимость». Для абонентов на УСН (без НДС) и абонентов с НДС в одной системе — создавайте отдельные услуги с указанием процента НДС.

Прогноз даты блокировки

Поле «Хватит денег до» показывает прогнозируемую дату исчерпания средств на основе текущего баланса, услуг и порога отключения.

Шаблоны абонентов и учётных записей

Группы абонентов одновременно являются шаблонами. Все данные, указанные в группе, автоматически наследуются абонентами.

Создание группы (шаблона)

  1. В разделе «Абоненты» нажмите кнопку «Папка».
  2. Задайте параметры наследования. Одна учётная запись создаётся автоматически с флагом «Является шаблоном».
  3. Обязательные поля: Имя, Тариф, Тип авторизации.

Создание шаблонов учётных записей

Для нескольких типов услуг (интернет, VoIP, IPTV) создаются отдельные шаблоны. Откройте вкладку «Учётные записи» в карточке группы, добавьте шаблон и включите опцию «Является шаблоном».

Типы блокировок пользователей

Система поддерживает пять типов блокировок:

  1. Финансовая блокировка — срабатывает при недостаточности средств для абонентской платы
  2. Добровольная блокировка — инициируется абонентом через личный кабинет
  3. Бессрочная добровольная блокировка — бессрочная приостановка по инициативе абонента
  4. Блокировка администратором — принудительная приостановка администратором
  5. Системная блокировка — для блокировок, не подходящих под другие типы

Статусы абонентов после блокировки

Блокировка работает только если у абонента есть подключённые активные услуги.

Расторжение договора

По инициативе абонента

  1. Выберите «Расторжение договора» в карточке абонента.
  2. Откроется документ для печати (DOCX или PDF).
  3. Абонент автоматически перемещается в корзину со статусом «Расторжение договора».

По инициативе оператора

Выполните процедуру выше, затем установите подстатус «По инициативе оператора».

Отмена расторжения

Восстановите абонента из корзины — операция расторжения будет отменена.

Редактирование абонента

Раздел включает: изменение номера договора, редактирование баланса абонента, смена группы.

Льготный период оплаты

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

Льготный период на новогодние праздники

  1. Перейдите в Настройки → Учёт.
  2. Установите опцию «день месяца, до которого не проверять превышение баланса» на 15.

Результат: с 1-го по 15-е число система автоматически активирует обещанный платёж для абонентов с превышенным лимитом.

Опция НЕ применяется к учётным записям, заблокированным за неоплату в предыдущем месяце.

Подключение абонента задним числом

  1. Найдите абонента и активируйте тарифы и услуги.
  2. Установите даты включения услуг на вкладке «Услуги» (дата в прошлом).
  3. Выполните «полный перерасчёт» с очисткой истории блокировок.
  4. Дождитесь обработки абонента.
  5. При наличии звонков за период — запустите перерасчёт телефонии.
Не запускайте перерасчёт, пока другой перерасчёт активен!

Закрытие периода. Очистка корзины

Биллинг позволяет удалять ненужных абонентов при интеграции или длительной эксплуатации.

На коммерческих серверах не закрывайте периоды чаще раза в три года — данные абонентов должны храниться три года по закону.

Что удаляется

Полностью: абоненты из корзины, старые RADIUS-сессии, уничтоженные карты оплаты.

До указанной даты: финансовые операции, аудит, журнал платежей, записи книги учёта.

Как закрыть период

  1. Создайте бэкап PostgreSQL:
    docker compose exec db pg_dump -U carbon carbon > backup_$(date +%Y%m%d).sql
  2. Перейдите в Веб-администрирование → Настройки → Закрытие периода.
  3. Обратитесь в техподдержку для получения пароля безопасности.

Запланированные задачи

При большом количестве абонентов запланированные задачи позволяют выполнять массовые операции с отсрочкой.

Типы задач

  1. Смена тарифа — выбор тарифного плана и даты выполнения
  2. Формирование отчёта — запуск отчёта по расписанию
  3. Формирование счетов — генерация счетов
  4. Рассылка сообщений — использует шаблоны с параметрами

Как заблокировать или разблокировать абонента

Для снятия финансовой блокировки требуются два действия:

  1. Включите опцию «Не отключать при превышении порога».
  2. Внесите средства на счёт абонента.

При блокировке администратором абоненты не могут войти в ЛК и получают сообщение: «Авторизация невозможна, администратор заблокировал вашу учётную запись.»

Лицевые счета

Лицевые счета абонентов — финансовые учётные записи для работы с балансом. Каждый абонент имеет один или несколько лицевых счетов. Создание, удаление и редактирование выполняется в карточке абонента.

3. Тарификация и услуги

Настройка тарифных планов, услуг, системы скидок, пеней и дополнительных функций тарификации.

3.1. Тарифы

Создание тарифного плана: перейдите в Тарификация → Тарифы. Укажите название, описание и сетевой интерфейс по умолчанию.

Вкладка «Смена тарифа»

Вкладка «Опции»

Основные: отображение в общем списке, привязка к линейке услуг, разрешение перевода денег.

Пороги:

Обещанный платёж: максимальное количество в месяц, комиссия через N дней, минимальный реальный платёж не старее N дней.

Добровольная блокировка: макс. дней, стоимость, мин. дней, бесплатный период, услуга при активации.

Вкладка «RADIUS»

Настройка RADIUS-атрибутов для тарифа. Формат: Имя атрибута := Значение (поддерживает переменные).

Вкладка «Услуги/Абонентская плата»

Добавление услуг по умолчанию. Все тарифные услуги должны иметь одинаковый метод списания.

Вкладка «Услуги в кабинете»

Настройка услуг, доступных абоненту для заказа на данном тарифе.

Вкладка «Сопутствующие услуги»

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

Для ввода тарифа в эксплуатацию включите флаг «Введён в эксплуатацию» — после этого редактирование тарифа и услуг будет заблокировано.

3.2. Карты оплаты

Создание серии карт: укажите номинал, срок действия и количество в серии.

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

Активация через консоль:

#!/bin/bash
login="$1"; card_no="$2"; card_key="$3"
a=$(curl "http://169.254.80.82:8082/rest_api/v2/Users/" \
  -d 'method1=objects.get&arg1={"login":"'$login'"}&method2=get_or_create_dynamic_session&arg2={}')
b=$(echo $a | tail -c 23 | cut -c-18)
curl "http://169.254.80.82:8082/rest_api/v2/Users/" \
  -d 'method1=web_cabinet.add_card_payment_operation&arg1={"suid":"'$b'","series_no":"'$card_no'","card_key":"'$card_key'","src_ip":"admin"}'

Использование: bash /root/cards.sh login 111 707555433

3.3. Смена тарифа

Принцип: при смене тарифа набор тарифных услуг (помеченных «От тарифа:») заменяется, а вручную подключённые услуги сохраняются. Услуги, присутствующие в обоих тарифах, не переподключаются.

Планирование: выберите абонента → «Запланированные задачи» → «Добавить» → укажите тариф и дату. Работает и для групп абонентов.

3.4. Сторнирование расхода. Перерасчёт

Сторнирование

Время: 1-10 мин. На вкладке «Сервис» выберите период и услугу, нажмите «Сохранить».

Ядро ищет проводки в ARCH_ACCOUNT_STACK, помечает их сторнированными (STORNO=1) и добавляет обратные проводки.

Полный перерасчёт

На вкладке «Сервис» → «Перерасчёт» выберите период, нажмите «Полный перерасчёт». Опция «Очистить историю блокировки» пересчитает без учёта блокировок.

Отражает сумму, которую абонент должен заплатить для продолжения обслуживания.

Два метода расчёта:

Минимальный платёж (для разблокировки) — сумма для снятия блокировки. Остаётся статичной до получения оплаты.

3.6. Услуги

Услуги настраиваются в Тарификация → Услуги/Бонусы.

Типы услуг

Стандартный, Турбокнопка, Бонусный трафик, Форсаж, Подписка, Пакет Мб, IP Телефония, IP Телевидение, Абонентская плата, Трафик, Скидка/наценка, Обещанный платеж, Пакет услуг, Системный.

Вкладка «Основные»

Вкладка «Условия и скорости»

Настройка праздников/выходных, условий активности, шейпера (скорости).

Вкладка «Дополнительно»

Параметры времени жизни

Отключить через N дней/месяцев/активаций, отключить при достижении потраченных минут.

Вкладка «Личный кабинет»

Разрешение заказа/отключения через ЛК, проверка доступных средств, всплывающее сообщение.

3.7. Пени. Штрафы

  1. На вкладке «Дополнительно» отключите «Не списывать, если недостаточно средств».
  2. На вкладке «Пени» включите систему пеней: начислять с N дня, объём (%).
  3. Добавьте услугу в тарифный план. Услуга должна иметь ежедневное списание.
Сумма начисленных пеней никогда не превысит задолженность.

Формула расчёта

Услуга 150 руб/мес, пени 3%, ежедневное списание (5 руб/день), 30 дней:

3.8. Отключение абонентов и услуг с помощью опций

ОпцияРасположениеДействие
Не списывать и деактивироватьУслуга → ДополнительноДеактивирует услугу при нехватке средств
Деактивировать при превышении лимитаУслуга → ОсновныеОтключает услугу при превышении, но списание продолжается
Не отключать при превышении порогаКарточка абонентаПродолжает обслуживание несмотря на порог
Порог отключения через тарифТариф → ОпцииЗначение порога по умолчанию = 0

3.9. Изменение стоимости услуг. Версионность

  1. Откройте услугу, перейдите на вкладку «Версии».
  2. Нажмите «Добавить», настройте новые параметры (цена, скорость, дата активации).
  3. Даты должны быть будущими (начиная с завтра).

Для ежемесячных списаний: новая версия применяется с 1-го числа следующего месяца. Скорость изменяется при поступлении трафика.

3.10. Детализация расхода

Расположена в карточке абонента, раздел «Финансовая информация», ссылка «Расход предоплата». Поддерживает фильтрацию по датам и названию услуг.

3.11. Сдвиг даты списания

Опция «Месяц = 30 дней»

Делит месячную стоимость на 30 и списывает ежедневно: январь (31 день) = 310 руб при стоимости 300 руб/мес, февраль (28 дней) = 280 руб.

3.12. Счетчики услуг. Вкладка «Расход»

На вкладке «Расход» отображается детализация по услугам:

Значения вида 299.9999999 — нормальное поведение (11 знаков после запятой). Абоненты видят округление до 2 знаков.

3.13. Правила и сети

Правила и сети обеспечивают гибкую тарификацию интернет-трафика по разным ставкам.

Обязательно должно существовать минимальное правило для сети 0.0.0.0/0 для учёта трафика.

Настройка: Тарификация → Правила и сети. Трафик сопоставляется последовательно сверху вниз, первое совпадение определяет набор правил.

3.14. Работа услуги в определённые часы

Услуги типов «Трафик», «Форсаж» и «IP Телефония» могут работать по расписанию. Настройка на вкладке «Условия и скорости»: Время действия отВремя действия до (с точностью до минуты).

3.15. Учёт оборудования абонентов

Оборудование, проданное или сданное в аренду абонентам, учитывается через Оборудование → Прочее. Обязательное поле: «Описание» (используется как название).

3.16. Система бонусов

  1. Добавьте валюту «Баллы»: Справочники → Валюты → Добавить. Укажите название и курс конвертации к рублям.
  2. Настройте курс для оператора: Абоненты → Операторы связи → Настройки биллинга → «Курс конвертации баллов».
  3. Создайте программу лояльности: Тарификация → Лояльность → Добавить. На вкладке «Скидки» задайте условия и ставку начисления баллов.

Баллы начисляются пропорционально списаниям по услугам. Конвертация через вкладку «Операции» → «Конвертация баллов».

4. Отправка сообщений

Настройка системы уведомлений и рассылок абонентам через различные каналы связи.

4.1. Регистрация домена для почтовой рассылки

Для почтовой рассылки необходимо настроить DNS-записи домена отправителя:

Проверка DNS-записей:

nslookup -type=mx yourdomain.ru
host -t txt yourdomain.ru

4.2. Система отправки сообщений (SMS, Email)

Биллинг поддерживает несколько каналов доставки уведомлений.

SMS-шлюзы

Поддерживаемые провайдеры: SMSC, Digital Direct, Prostor SMS, SMSPILOT, Ростелеком, SemySMS.

Email (SMTP)

Настройка SMTP для Gmail, Yandex или собственного почтового сервера.

Шаблоны сообщений

17+ типов событий (блокировка, оплата, смена тарифа, поздравление и др.). Переменные подстановки:

ПеременнаяОписание
{{fio}}ФИО абонента
{{balance}}Текущий баланс
{{contract}}Номер договора
{{tarif}}Название тарифа
{{block_date}}Дата блокировки
{{recommend_pay}}Рекомендуемый платёж

Устранение проблем

Логи отправки: docker compose logs celery | grep messaging. Отправка сообщений выполняется Celery-задачей send_pending_messages (интервал: 1 мин). Проверьте настройки SMTP и SSL-сертификатов при проблемах с email.

4.3. Плановая отправка сообщений

Настраивается через вкладку «Запланированные задачи». Параметры:

admin_msg_id=12 objects_status=27

Где admin_msg_id — ID шаблона сообщения, objects_status — статус абонентов-получателей.

4.4. Отправка уведомлений через Telegram

  1. Создайте бота через @BotFather и получите токен.
  2. Укажите токен в настройках биллинга.
  3. При необходимости настройте прокси.
  4. Перезапустите сервис уведомлений.

Абонент отправляет боту /start и авторизуется по логину или телефону. Система автоматически создаёт реквизит «Telegram ID» для абонента.

5. Платёжные системы, web-касса, API, 1С

Интеграция с платёжными системами, кассовыми аппаратами, бухгалтерскими программами и внешними API.

Для работы платёжных систем требуется поддержка TLS 1.2 и выше. Проверить: openssl s_client -connect localhost:443 -tls1_2
Настройки платёжных систем

5.1. Веб-интерфейс кассира

Интерфейс для приёма платежей оператором/кассиром. Доступен по отдельному URL с ограниченным набором функций.

Настройка:

  1. Импортируйте SSL-сертификат для кассового интерфейса.
  2. Создайте пользователя в группе «cash» с правами кассира.
  3. Кассир выполняет приём платежей, печать и аннулирование чеков (ФЗ-54).

5.2. Платёжные системы

СмИТ Биллинг 1.0 поддерживает интеграцию с более чем 50 платёжными системами:

Интернет-эквайринг

Платёжные терминалы (ОСМП)

Международные

СБП и мобильные платежи

Прочие

5.3. Интеграция с 1С

Обмен данными с 1С:Бухгалтерия и 1С:Предприятие.

Пометка/сброс синхронизации выполняется SQL-командами на уровне БД.

5.4. API

Два уровня API для интеграции со сторонними системами:

REST API v2 (рекомендуемый)

Универсальный CRUD-интерфейс для всех моделей биллинга:

REST API v1 (совместимость)

Для обратной совместимости: GET /rest_api/?model=<Model>&id=<id>

SOAP API

Через Spyne 2.14 (UserService) — для интеграций, требующих SOAP-протокол.

5.5. Интеграция с кассовыми аппаратами

Подключение ККТ для печати чеков. Поддерживаются: ATOL, ШТРИХ-М и другие модели с поддержкой ФЗ-54.

5.6. Автоматическая выгрузка платежей из CSV

Импорт платежей из CSV-файлов по расписанию. Параметры конфигурации:

ПараметрОписание
csv_pathПуть к CSV-файлу
contract_numberСтолбец с номером договора
sum_inСтолбец с суммой платежа
pay_id_strСтолбец с идентификатором платежа (для защиты от дублей)

Поддерживает настройку SSH-доступа для удалённых файлов, форматы дат, разбиение больших файлов.

5.7. Онлайн-кассы (ФЗ-54)

Передача чеков ОФД в соответствии с ФЗ-54. Формат фискальных документов: FFD 1.05.

Поддерживаемые решения:

5.8. SSL-сертификаты платёжных систем

Настройка SSL для безопасного обмена данными. Сертификаты монтируются в Docker-контейнер nginx через docker/nginx/certs/.

5.9. Коды ошибок платёжных систем

КодОписание
51Абонент не найден
52Сумма вне допустимого диапазона
53Дублирование транзакции
90-99Внутренние ошибки биллинга
0 (ОСМП)Успешно
1 (ОСМП)Временная ошибка — повторите позже
4 (ОСМП)Неверный формат идентификатора
5 (ОСМП)Абонент не найден

6. Локальный сайт. Личный кабинет

Локальный сайт и личный кабинет абонента — это веб-интерфейс, доступный абонентам для самостоятельного управления своими услугами. ЛК устанавливается на локальный сервер и работает совместно с биллингом.

Важно: Техническая поддержка ЛК предоставляется в режиме «как есть». Кастомные изменения в шаблонах — зона ответственности оператора.

Возможности личного кабинета:

6.1. WordPress

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

6.2. Мобильный личный кабинет

Адаптивная версия ЛК для мобильных устройств. Автоматически подстраивается под размер экрана смартфона/планшета.

6.3. Мобильное приложение

Нативное мобильное приложение для абонентов (iOS/Android). Позволяет просматривать баланс, оплачивать услуги и управлять тарифом.

6.4. Доступ по доменному имени

Настройка доступа к личному кабинету по собственному доменному имени оператора (вместо IP-адреса).

6.5. Софт HotSpot

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

6.6. Установка SSL-сертификата на локальный сайт

Настройка HTTPS для личного кабинета. Установка SSL-сертификата обеспечивает безопасную передачу данных абонентов.

7. OSS.BSS (HelpDesk, CRM, Учёт оборудования)

Интеграция с системами операционной и бизнес-поддержки для управления заявками, клиентскими обращениями и учётом оборудования.

7.1. CRM / HelpDesk

Встроенная система учёта заявок и обращений абонентов.

Создание заявок:

Настройка уведомлений о комментариях (3 шага):

  1. Настроить групповые уведомления для очереди заявок
  2. Указать контактные данные администраторов (email, Telegram)
  3. Создать шаблоны сообщений для типов событий

7.2. UserSide

Интеграция с системой UserSide (ERP для управления сетью) через API биллинга.

Настройка:

Для отладки используйте тестовые bash-команды для каждого метода API (user_list, house_list, street_list, tariff_list).

8. Отчёты

Финансовые и статистические отчёты для анализа деятельности оператора связи.

8.1. Аудит

Журнал действий пользователей. Доступен в разделе «Отчёты» (общий аудит) и на вкладке «Аудит» в карточке абонента (персональный). Фильтрация по дате, типу действия, тексту. Записи в обратном хронологическом порядке. Отслеживание блокировок и перерасчётов.

8.2. Журнал платежей

Журнал транзакций из платёжных систем, CSV-загрузок и веб-кассы. Типы результатов:

Поддерживает поиск и фильтрацию. Экспорт в CSV.

8.3. Конструктор отчётов

Выполнение прямых SQL-запросов к базе данных PostgreSQL. Фильтры: дата, выбор из списка, свободный текст.

Запуск из консоли:

docker compose exec web python manage.py make_reports

Прямой SQL-доступ к PostgreSQL:

docker compose exec db psql -U carbon carbon
-- Пример: список активных абонентов
SELECT a.id, a.fio, a.contract_number, a.balance
FROM billing_abonents a WHERE a.is_deleted = false;

Примеры отчётов: список абонентов, должники, распределение IP, трафик по тарифам, выручка.

Для отладки используется режим с отображением SQL и времени выполнения. PostgreSQL предоставляет EXPLAIN ANALYZE для анализа производительности запросов.

8.4. Отчёт для директора

Сводный отчёт с ключевыми KPI:

8.5. Формирование отчёта по аудитам

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

9. Справочники

Справочники СмИТ Биллинг 1.0 хранят настройки и наборы данных для работы с абонентами, услугами и оборудованием.

Справочники биллинга

9.1. Пулы телефонных номеров

Управление пулами номеров для VoIP-услуг. Создание диапазонов, автоматическое выделение номеров абонентам при подключении телефонии.

9.2. Статусы абонентов

Настройка статусов: активен, заблокирован, расторгнут, ленивый, должник, злостный должник. Статусы влияют на отображение в дереве и поведение системы.

9.3. Валюты

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

9.4. Пулы VLAN

Управление пулами VLAN для автоматического распределения VLAN-тегов абонентам. Привязка к NAS-устройствам и группам абонентов.

9.5. Пулы IP-адресов

Создание и управление пулами IP-адресов. Параметры пула:

Система автоматически отслеживает занятые и свободные адреса. Пулы привязываются к NAS или группам абонентов.

9.6. Реквизиты

Банковские и юридические реквизиты оператора для формирования договоров, счетов и актов. ИНН, КПП, расчётный счёт, БИК, юридический адрес.

9.7. Дома

Справочник домов и адресов. Иерархическая структура: корень → город → улица → дом.

Представления: дерево и список. Поддерживает импорт из ФИАС, поиск с подсказками. Каждый дом имеет вкладки: информация, дополнительно, оборудование, учётные записи. Возможна привязка пула IP к дому.

9.8. Поздравления

Шаблоны поздравительных сообщений для автоматической рассылки (день рождения и др.).

9.9. ACL группы и списки

ACL-группы используются для управления доступом к сетевым ресурсам. Применяются при развёртывании оборудования (Cisco ISG, RedBack, Mikrotik). Конфигурация:

# config/acl.py или переменные окружения (.env)
ACL_NEGBAL_GROUPS = ACL_BLOCKED
ACL_BLOCKED_GROUPS = ACL_DISABLED

9.10. Периоды

Настройка тарификационных периодов: месяц, квартал, год. Определяют интервалы списания и формирования отчётов.

9.11. Выходные дни

Календарь выходных и праздничных дней. Влияет на расчёт услуг с временными условиями и график рассылки уведомлений.

9.12. Точки подключения

Справочник точек подключения абонентов к сети оператора (узлы доступа, коммутаторы, порты).

9.13. Подсети

Управление подсетями и сетевой адресацией. Используется для правил тарификации трафика и распределения IP-адресов.

10. Дополнительные настройки

Расширенные параметры конфигурации для специализированных сценариев использования.

10.1. Агентские схемы и ведение филиалов

Настройка агентских схем для работы с дилерами и партнёрами. Разграничение объектов по операторам связи, формирование агентских счетов. Каждый филиал/агент работает со своим набором абонентов и финансовой отчётностью.

10.2. Дочерний сервер (Replica)

Отдельный сервер для изоляции личного кабинета и платёжных систем от основного биллинга (безопасность). Конфигурация через Docker Compose:

PostgreSQL streaming replication обеспечивает синхронизацию данных между мастером и репликой. Настраиваются firewall-правила для связи между серверами.

10.3. Настройка периода хранения исторических данных

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

10.4. СОРМ. Доступ для правоохранительных органов

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

Создание и редактирование шаблонов для печатных форм. Привязка к моделям: Abonents, FinanceOperations, CardSeries, Hdsk.

op_type_idТип операции
1Приход
2Акт
3Счёт
4Счёт-фактура
5Акт сверки
6Договор
7Доп. соглашение

Рендеринг: WeasyPrint (HTML → PDF с полной поддержкой CSS). Также поддерживаются шаблоны DOCX через docxtpl. Быстрая печать по горячей клавише и формат PDF.

11. Обзор безопасности

Обеспечение безопасности биллинговой системы — критически важная задача для любого оператора связи. СмИТ Биллинг 1.0 включает несколько уровней защиты и рекомендации по безопасной эксплуатации.

Сетевая изоляция

Docker-контейнеризация — каждый сервис (web, db, redis, celery, nginx, freeradius) работает в изолированном Docker-контейнере с собственной сетью (172.28.0.0/16). Входящие соединения проходят через nginx reverse proxy, что предотвращает прямой доступ к внутренним сервисам.

Изоляция личного кабинета — личный кабинет абонента может быть развёрнут на отдельном сервере-реплике, полностью изолированном от основного биллинга. Даже в случае компрометации ЛК, злоумышленник не получит доступ к мастер-серверу.

Контроль доступа

API-доступ — все запросы к API авторизуются по токену. Рекомендуется ограничивать доступ по IP-адресам и использовать отдельные токены для каждой интеграции.

Права администраторов — система поддерживает гранулярные права доступа. Каждому администратору можно назначить доступ только к необходимым разделам.

Рекомендации по VLAN

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

Защита SSH

Межсетевой экран

Настройте файрвол (iptables/nftables) таким образом, чтобы были открыты только необходимые порты: HTTP/HTTPS для веб-интерфейса, RADIUS-порты для NAS, SSH для администрирования. Все остальные порты должны быть закрыты.

Физическая безопасность

Сервер биллинга должен находиться в защищённом помещении с контролем доступа. Рекомендуется использование ИБП (UPS) и резервного канала связи.

12. Версионность и обновления

СмИТ Биллинг 1.0 использует систему веток для управления стабильностью и обновлениями.

Ветка Описание Стабильность
master Стабильная ветка для продуктивного использования. Обновления выходят после полного тестирования. Максимальная
integra Интеграционная ветка. Содержит новые функции, прошедшие базовое тестирование. Рекомендуется для операторов, желающих получать обновления раньше. Высокая
devel Ветка разработки. Содержит самые свежие изменения, может быть нестабильной. Только для тестовых серверов. Экспериментальная

Формат версии

Номер версии имеет формат 1.0.18, где:

Процесс обновления

Обновление выполняется через Docker-образы и Django-миграции:

# 1. Создать бэкап БД
docker compose exec db pg_dump -U carbon carbon > backup_$(date +%Y%m%d).sql

# 2. Обновить образы
docker compose pull

# 3. Применить миграции
docker compose exec web python manage.py migrate

# 4. Собрать статику
docker compose exec web python manage.py collectstatic --noinput

# 5. Перезапустить сервисы
docker compose up -d

Резервная копия базы данных PostgreSQL создаётся перед каждым обновлением. При необходимости откат выполняется через pg_restore.

Схема версионности и веток

13. Стороннее ПО

Совместимое программное обеспечение и интеграции с внешними системами, поддерживаемые СмИТ Биллинг 1.0.

14. Смена языка

СмИТ Биллинг 1.0 поддерживает переключение языка интерфейса. Настройка языка выполняется в профиле пользователя или в глобальных настройках системы.

15. Технологический стек

СмИТ Биллинг 1.0 построен на современном стеке технологий, обеспечивающем надёжность, масштабируемость и простоту эксплуатации.

Почему PostgreSQL

PostgreSQL 16 выбран в качестве основной СУБД по ряду причин:

Архитектура системы

Компонент Технология Версия Назначение
ЯзыкPython3.11Бэкенд, бизнес-логика, ETL
ФреймворкDjango4.2 LTSВеб-интерфейс, ORM, миграции, шаблоны
СУБДPostgreSQL16Основное хранилище данных
Кэш / БрокерRedis7Кэширование, сессии, очередь задач
Очередь задачCelery5.xФоновые задачи (биллинг, блокировки, рассылки)
Веб-серверGunicorn21.xWSGI-сервер (продакшн)
ПроксиNginx1.25Reverse proxy, статика, SSL
RADIUSFreeRADIUS3.2.3Авторизация абонентов (rlm_python3)
КонтейнерыDocker ComposeОркестрация всех сервисов
ФронтендAdminLTE 3 + Bootstrap 5.3Адаптивный веб-интерфейс
APIREST API v2 + SOAP (Spyne)Интеграция со сторонними системами
ПоискElasticsearch7.xПолнотекстовый поиск (django-haystack)
МониторингSentry SDK1.xОтслеживание ошибок

Celery-задачи (фоновые процессы)

Вместо отдельных демонов все фоновые процессы реализованы как Celery-задачи с настраиваемым расписанием:

ЗадачаИнтервалОписание
billing_worker5 минОсновной процесс тарификации
abonent_block5 минБлокировка/разблокировка абонентов
nas_stats5 минСбор статистики NAS
tarif_change10 минОбработка запланированных смен тарифов
csv_loading10 минИмпорт платежей из CSV
check_promises15 минПроверка обещанных платежей
send_pending_messages1 минОтправка уведомлений (SMS, Email, Telegram)
check_inactive1 часПроверка неактивных абонентов
send_felicitations24 часаПоздравления с днём рождения

Docker-сервисы

Система разворачивается как набор Docker-контейнеров:

# Запуск всех сервисов
docker compose up -d

# Просмотр статуса
docker compose ps

# Сервисы: db (PostgreSQL 16), redis (Redis 7), web (Django/Gunicorn),
# celery, celery-beat, freeradius, nginx

Ключевые метрики