Биллинг. Основные настройки биллинга
Раздел описывает работу с абонентами, настройку тарификации, установку и базовую конфигурацию системы СмИТ Биллинг 1.0.
1. Общие настройки биллинга
Базовые параметры системы, конфигурация модулей и управление доступом.
1.1. IP адрес компьютера администратора
Для настройки IP-адреса администратора перейдите в веб-интерфейс СмИТ Биллинг 1.0: Настройки → Настройки (в файле) → Управление абонентами и тарифами. Измените параметр 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 | Пересчитывать недобор при смене тарифа |
Настройки оператора
Доступ через выбор оператора в дереве пользователей → вкладка «Настройки биллинга». Доступные параметры:
- Обещанный платёж — доступен только при финансовой блокировке
- Формат вывода домов — формат адреса из справочника
- Автоматическое резервирование средств — пропорциональное резервирование для активных услуг
- Лимит результатов поиска (0 = без ограничения)
- Месяц = 30 дней — фиксированный расчётный период
- Валюта учёта, Курс конвертации бонусов
- Финансовые документы в PDF — включает генерацию PDF
- Длина генерируемого пароля (4-16 символов, по умолчанию: 6)
- Время ожидания автоплатежа (мин, по умолчанию: 720 = 12 часов)
1.3. Добавление SSL-сертификата для HTTPS
Для входа в административный интерфейс по HTTPS требуются три файла сертификата:
- server.crt — публичный сертификат
- server.key — приватный ключ
- server.pem — комбинированный файл (ключ + сертификат)
Если файл server.pem отсутствует, создайте его вручную, объединив key и crt:
-----BEGIN RSA PRIVATE KEY-----
[содержимое ключа]
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
[содержимое сертификата]
-----END CERTIFICATE-----
Время выполнения: ~5 минут (перезапуск ~1 мин).
Шаги установки:
- Скопируйте файлы сертификатов в директорию nginx:
docker/nginx/certs/ - Обновите конфигурацию nginx (
docker/nginx/carbon.conf) с путями к сертификатам - Перезапустите контейнер nginx:
docker compose restart nginx
1.4. Интерфейсы пользователей биллинга
Система позволяет настраивать отображение данных в веб-интерфейсе для различных ролей.
Пять типов интерфейсов:
- Директор
- Администратор
- Бухгалтер
- Менеджер
- СОРМ
Настройка:
- Перейдите в раздел «Управление администраторами».
- Создайте или отредактируйте пользователя, укажите логин, пароль и группу.
- Выберите тип интерфейса для пользователя.
- В разделе Биллинг → Настройки → Настройка веб-интерфейсов настройте видимость полей.
Параметры настройки полей:
- Показать в форме — отображение при редактировании
- Показать в таблице — отображение в результатах поиска
- Выбор из списка — классический интерфейс выбора
- Порядок отображения — последовательность полей
- Закладка — вкладка, на которой отображается поле
- Группа — группа полей
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:
- Отдельные адреса:
10.20.30.40 - Подсети:
10.20.30.0/24
Управление администраторами
- Создайте учётную запись пользователя с логином и паролем.
- Назначьте пользователя в группу.
- Установите групповые права доступа к разделам.
Доступ к папкам абонентов
Система использует иерархические права: администратор должен иметь доступ ко всем вышестоящим папкам в иерархии. Права каскадно распространяются при назначении на родительскую папку.
2. Работа с абонентами
Полное управление абонентской базой: создание, редактирование, блокировка, поиск, финансовые операции и многое другое.
- Создание абонента
- Выбор тарифного плана
- Распределение IP-адресов
- Дерево пользователей
- Договоры
- Поиск и массовое изменение
- Статистика / аудит / диагностика
- Финансовые операции. Учёт НДС
- Шаблоны абонентов
- Типы блокировок
- Расторжение договора
- Редактирование абонента
- Льготный период
- Подключение задним числом
- Закрытие периода
- Запланированные задачи
- Блокировка / разблокировка
- Лицевые счета
Создание абонента
Первое что нужно сделать для создания абонента, это создать папку, которая служит шаблоном. Система позволяет одному абоненту иметь несколько учетных записей для разных услуг (интернет, IPTV, VoIP).
Процесс создания абонента включает следующие шаги:
- Создайте папку-шаблон, определяющую набор параметров для группы абонентов.
- Внутри папки создайте нового абонента, указав тип лица (физическое или юридическое).
- Заполните персональные данные абонента.
- Добавьте учётную запись (логин/пароль) для необходимых услуг.
- Назначьте тарифный план и IP-адрес.
- При необходимости создайте договор и внесите начальный платёж.
Выбор тарифного плана (Добавление услуги)
Для подключения абоненту услуги необходимо выполнить следующие шаги:
- Откройте карточку абонента и перейдите на вкладку тарифов.
- Выберите подходящий тарифный план из списка доступных тарифов.
- Перейдите на вкладку услуг абонента.
- Нажмите кнопку добавления новой услуги.
- Укажите параметры услуги: дату начала, лимиты, дополнительные опции.
- Сохраните изменения.
Распределение IP-адресов
СмИТ Биллинг 1.0 поддерживает несколько способов назначения IP-адресов абонентам:
- Ручное назначение — IP-адрес вводится вручную в карточке учётной записи абонента. Администратор самостоятельно выбирает адрес из доступного диапазона.
- Из пула IP-адресов — система автоматически выдаёт свободный адрес из заранее настроенного пула. Пулы создаются в справочниках и привязываются к NAS или группам абонентов.
- Через RADIUS — IP-адрес назначается динамически сервером RADIUS при авторизации абонента. Используется для PPPoE/PPTP-подключений.
- По услуге — IP-адрес привязан к конкретной услуге и назначается автоматически при её активации.
Назначение подсетей
Для корпоративных клиентов или технических нужд можно назначать целые подсети. Подсети выделяются из пулов IP-адресов. При назначении подсети система автоматически резервирует все адреса диапазона.
Обработка ошибок
При попытке назначить уже занятый IP-адрес система выдаст предупреждение и предложит выбрать другой адрес. Если пул IP-адресов исчерпан, создайте новый пул или расширьте существующий в разделе «Справочники → Пулы IP».
Дерево пользователей
Дерево абонентов представляет иерархическую структуру для организации абонентской базы. Абоненты группируются в папки, которые одновременно служат шаблонами настроек.
Динамические деревья позволяют автоматически группировать абонентов по различным критериям: по улицам, по домам, по тарифам, по статусу подключения. Динамические деревья создаются на основе фильтров и обновляются автоматически.
Статус «Онлайн» отображается в дереве цветной индикацией: зелёный значок означает, что абонент в данный момент авторизован и использует услугу. Информация об онлайн-статусе обновляется в реальном времени при получении данных от NAS.
Договоры
Система поддерживает создание и печать договоров на основе шаблонов. Шаблоны договоров настраиваются в разделе «Шаблоны документов» и могут содержать переменные подстановки (ФИО, адрес, номер договора, тариф, дата).
Создание договора
Договор создаётся в карточке абонента на вкладке «Договоры». Укажите шаблон, дату заключения и при необходимости отредактируйте номер договора.
Нумерация договоров
Номер договора формируется автоматически на основе настроенного префикса и последовательного номера. Правила формирования префикса настраиваются в глобальных настройках биллинга. Допускаются префиксы с разделителями (например, ДОГ-2026/).
Быстрая печать
Функция быстрой печати позволяет сформировать и распечатать договор одним нажатием кнопки непосредственно из карточки абонента без перехода в раздел договоров.
Поиск и массовое изменение
СмИТ Биллинг 1.0 предоставляет несколько инструментов для поиска абонентов:
Быстрый поиск
Поле быстрого поиска расположено в верхней панели интерфейса. Позволяет искать абонентов по логину, ФИО, номеру договора, IP-адресу или MAC-адресу. Результаты отображаются мгновенно по мере ввода.
Расширенный поиск
Расширенный поиск позволяет комбинировать множество критериев: тариф, статус, баланс, дата подключения, адрес, группа, NAS и другие параметры. Результаты можно сортировать по любому столбцу.
Поиск по папке
Поиск внутри выбранной папки дерева абонентов. Удобен для работы с конкретной группой абонентов.
Массовые операции
Результаты поиска можно использовать для массовых операций: смена тарифа, блокировка/разблокировка, отправка сообщений, экспорт в CSV. Выберите нужных абонентов с помощью чекбоксов и примените действие из выпадающего меню.
Экспорт в CSV
Любой результат поиска можно выгрузить в CSV-файл для дальнейшей обработки в Excel или других программах.
Статистика, аудит, диагностика
Аудит: для просмотра аудита абонента откройте карточку «Аудит» в профиле абонента. Отображаются все изменения: карточка, услуги, отправленные сообщения и т.д.
Расход: для просмотра статистики расходов перейдите в раздел «Абоненты» и откройте вкладку «Расход» у выбранного абонента. Подробнее — в разделе «Счетчики услуг».
Финансовые операции. Учёт НДС
Вкладка «Операции» в карточке абонента отображает историю финансовых транзакций:
- Акт — списания за трафик, абонентскую плату или услуги
- Приход — пополнение баланса
- Счёт — выставление счёта на оплату
- Закрытие баланса — закрытие учётного периода
Расчёт баланса
- Учётный баланс: остаток предыдущего периода + поступившие средства
- Текущий баланс: остаток + приход + уже списанные расходы
- Баланс на конец месяца: остаток + приход + планируемые расходы
Ключевые пороги
- Порог предупреждения — сумма, при которой отправляется напоминание об оплате
- Порог отключения — минимальный баланс; при снижении ниже происходит блокировка
- Опция «не отключать» — разрешает работу без ограничений
Учёт НДС
Все операции в системе включают НДС в стоимость. Учёт ведётся по схеме «НДС включён в стоимость». Для абонентов на УСН (без НДС) и абонентов с НДС в одной системе — создавайте отдельные услуги с указанием процента НДС.
Прогноз даты блокировки
Поле «Хватит денег до» показывает прогнозируемую дату исчерпания средств на основе текущего баланса, услуг и порога отключения.
Шаблоны абонентов и учётных записей
Группы абонентов одновременно являются шаблонами. Все данные, указанные в группе, автоматически наследуются абонентами.
Создание группы (шаблона)
- В разделе «Абоненты» нажмите кнопку «Папка».
- Задайте параметры наследования. Одна учётная запись создаётся автоматически с флагом «Является шаблоном».
- Обязательные поля: Имя, Тариф, Тип авторизации.
Создание шаблонов учётных записей
Для нескольких типов услуг (интернет, VoIP, IPTV) создаются отдельные шаблоны. Откройте вкладку «Учётные записи» в карточке группы, добавьте шаблон и включите опцию «Является шаблоном».
Типы блокировок пользователей
Система поддерживает пять типов блокировок:
- Финансовая блокировка — срабатывает при недостаточности средств для абонентской платы
- Добровольная блокировка — инициируется абонентом через личный кабинет
- Бессрочная добровольная блокировка — бессрочная приостановка по инициативе абонента
- Блокировка администратором — принудительная приостановка администратором
- Системная блокировка — для блокировок, не подходящих под другие типы
Статусы абонентов после блокировки
- «ленивый» — долг сохраняется 5+ дней после блокировки
- «должник» — долг сохраняется 1+ месяц после блокировки
- «злостный должник» — долг превышает 1 месяц после блокировки
Расторжение договора
По инициативе абонента
- Выберите «Расторжение договора» в карточке абонента.
- Откроется документ для печати (DOCX или PDF).
- Абонент автоматически перемещается в корзину со статусом «Расторжение договора».
По инициативе оператора
Выполните процедуру выше, затем установите подстатус «По инициативе оператора».
Отмена расторжения
Восстановите абонента из корзины — операция расторжения будет отменена.
Редактирование абонента
Раздел включает: изменение номера договора, редактирование баланса абонента, смена группы.
Льготный период оплаты
Помимо обещанного платежа, биллинг предоставляет возможность рассрочки с первого дня месяца.
Льготный период на новогодние праздники
- Перейдите в Настройки → Учёт.
- Установите опцию «день месяца, до которого не проверять превышение баланса» на 15.
Результат: с 1-го по 15-е число система автоматически активирует обещанный платёж для абонентов с превышенным лимитом.
Подключение абонента задним числом
- Найдите абонента и активируйте тарифы и услуги.
- Установите даты включения услуг на вкладке «Услуги» (дата в прошлом).
- Выполните «полный перерасчёт» с очисткой истории блокировок.
- Дождитесь обработки абонента.
- При наличии звонков за период — запустите перерасчёт телефонии.
Закрытие периода. Очистка корзины
Биллинг позволяет удалять ненужных абонентов при интеграции или длительной эксплуатации.
Что удаляется
Полностью: абоненты из корзины, старые RADIUS-сессии, уничтоженные карты оплаты.
До указанной даты: финансовые операции, аудит, журнал платежей, записи книги учёта.
Как закрыть период
- Создайте бэкап PostgreSQL:
docker compose exec db pg_dump -U carbon carbon > backup_$(date +%Y%m%d).sql - Перейдите в Веб-администрирование → Настройки → Закрытие периода.
- Обратитесь в техподдержку для получения пароля безопасности.
Запланированные задачи
При большом количестве абонентов запланированные задачи позволяют выполнять массовые операции с отсрочкой.
Типы задач
- Смена тарифа — выбор тарифного плана и даты выполнения
- Формирование отчёта — запуск отчёта по расписанию
- Формирование счетов — генерация счетов
- Рассылка сообщений — использует шаблоны с параметрами
Как заблокировать или разблокировать абонента
Для снятия финансовой блокировки требуются два действия:
- Включите опцию «Не отключать при превышении порога».
- Внесите средства на счёт абонента.
При блокировке администратором абоненты не могут войти в ЛК и получают сообщение: «Авторизация невозможна, администратор заблокировал вашу учётную запись.»
Лицевые счета
Лицевые счета абонентов — финансовые учётные записи для работы с балансом. Каждый абонент имеет один или несколько лицевых счетов. Создание, удаление и редактирование выполняется в карточке абонента.
3. Тарификация и услуги
Настройка тарифных планов, услуг, системы скидок, пеней и дополнительных функций тарификации.
3.1. Тарифы
Создание тарифного плана: перейдите в Тарификация → Тарифы. Укажите название, описание и сетевой интерфейс по умолчанию.
Вкладка «Смена тарифа»
- Разрешить переход на этот тариф — пользователи могут переключиться на этот тариф из ЛК
- Переходить только в конце периода — смена только при окончании расчётного периода
- Стоимость перехода — единовременная плата за смену тарифа
- Менять тариф не чаще раз в N дней
- Перейти через N дней/месяцев — автоматическая смена (для промо-тарифов)
- Имя группы тарифов — ограничение списка доступных для перехода тарифов
Вкладка «Опции»
Основные: отображение в общем списке, привязка к линейке услуг, разрешение перевода денег.
Пороги:
- Порог отключения — баланс, при котором срабатывает блокировка (переопределяет порог абонента)
- Порог включения — баланс для разблокировки
Обещанный платёж: максимальное количество в месяц, комиссия через 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) и добавляет обратные проводки.
Полный перерасчёт
На вкладке «Сервис» → «Перерасчёт» выберите период, нажмите «Полный перерасчёт». Опция «Очистить историю блокировки» пересчитает без учёта блокировок.
- Сторнирование начислений за платный трафик невозможно
- При сдвиге даты списания не рекомендуется перерасчёт более 6 месяцев
- Если разовые услуги удалены — они не будут списаны заново
3.5. Рекомендуемый платёж
Отражает сумму, которую абонент должен заплатить для продолжения обслуживания.
Два метода расчёта:
- Стандартный: до конца текущего месяца + следующий месяц
- Условный: только до конца текущего месяца (если задана дата в глобальных настройках)
Минимальный платёж (для разблокировки) — сумма для снятия блокировки. Остаётся статичной до получения оплаты.
3.6. Услуги
Услуги настраиваются в Тарификация → Услуги/Бонусы.
Типы услуг
Стандартный, Турбокнопка, Бонусный трафик, Форсаж, Подписка, Пакет Мб, IP Телефония, IP Телевидение, Абонентская плата, Трафик, Скидка/наценка, Обещанный платеж, Пакет услуг, Системный.
Вкладка «Основные»
- Цена — стоимость услуги
- Метод списания: разово / ежечасно / ежедневно / ежемесячно / ежемесячно равными долями в день
- Стоимость подключения — минимальный баланс для активации
- Тип списания: предоплата / постоплата
- Сдвигать дату списания — период начинается с момента оплаты или активации
Вкладка «Условия и скорости»
Настройка праздников/выходных, условий активности, шейпера (скорости).
Вкладка «Дополнительно»
- Параметры активации/деактивации
- Сменить IP-адрес из пула, не забирать IP при деактивации
- НДС%, код в 1С, базовый пакет, NAS
- Не списывать при нехватке средств и деактивировать
- Переопределить порог отключения
- Списывать даже если заблокирован
- Валюта услуги
Параметры времени жизни
Отключить через N дней/месяцев/активаций, отключить при достижении потраченных минут.
Вкладка «Личный кабинет»
Разрешение заказа/отключения через ЛК, проверка доступных средств, всплывающее сообщение.
3.7. Пени. Штрафы
- На вкладке «Дополнительно» отключите «Не списывать, если недостаточно средств».
- На вкладке «Пени» включите систему пеней: начислять с N дня, объём (%).
- Добавьте услугу в тарифный план. Услуга должна иметь ежедневное списание.
Формула расчёта
Услуга 150 руб/мес, пени 3%, ежедневное списание (5 руб/день), 30 дней:
- День 1: 0.15 (5 × 0.03)
- День 2: 0.30 (10 × 0.03)
- День 3: 0.45 (15 × 0.03)
3.8. Отключение абонентов и услуг с помощью опций
| Опция | Расположение | Действие |
|---|---|---|
| Не списывать и деактивировать | Услуга → Дополнительно | Деактивирует услугу при нехватке средств |
| Деактивировать при превышении лимита | Услуга → Основные | Отключает услугу при превышении, но списание продолжается |
| Не отключать при превышении порога | Карточка абонента | Продолжает обслуживание несмотря на порог |
| Порог отключения через тариф | Тариф → Опции | Значение порога по умолчанию = 0 |
3.9. Изменение стоимости услуг. Версионность
- Откройте услугу, перейдите на вкладку «Версии».
- Нажмите «Добавить», настройте новые параметры (цена, скорость, дата активации).
- Даты должны быть будущими (начиная с завтра).
Для ежемесячных списаний: новая версия применяется с 1-го числа следующего месяца. Скорость изменяется при поступлении трафика.
3.10. Детализация расхода
Расположена в карточке абонента, раздел «Финансовая информация», ссылка «Расход предоплата». Поддерживает фильтрацию по датам и названию услуг.
3.11. Сдвиг даты списания
- Плавающая дата — период начинается с момента оплаты
- Привязка к дате договора — расчётный период следует за датой договора
- Привязка к дате подключения — период от даты активации услуги
Опция «Месяц = 30 дней»
Делит месячную стоимость на 30 и списывает ежедневно: январь (31 день) = 310 руб при стоимости 300 руб/мес, февраль (28 дней) = 280 руб.
3.12. Счетчики услуг. Вкладка «Расход»
На вкладке «Расход» отображается детализация по услугам:
- Расход: абонент, объём, цена, услуга, тип, сумма, месяц, период, акт
- Интернет трафик: входящий/исходящий объём, скорости, подсеть, стоимость
- VoIP трафик: направление, стоимость, номера, время разговора, сессия
- VoIP счетчики: потребление по минутам, услугам и периодам
3.13. Правила и сети
Правила и сети обеспечивают гибкую тарификацию интернет-трафика по разным ставкам.
0.0.0.0/0 для учёта трафика.Настройка: Тарификация → Правила и сети. Трафик сопоставляется последовательно сверху вниз, первое совпадение определяет набор правил.
3.14. Работа услуги в определённые часы
Услуги типов «Трафик», «Форсаж» и «IP Телефония» могут работать по расписанию. Настройка на вкладке «Условия и скорости»: Время действия от — Время действия до (с точностью до минуты).
3.15. Учёт оборудования абонентов
Оборудование, проданное или сданное в аренду абонентам, учитывается через Оборудование → Прочее. Обязательное поле: «Описание» (используется как название).
3.16. Система бонусов
- Добавьте валюту «Баллы»: Справочники → Валюты → Добавить. Укажите название и курс конвертации к рублям.
- Настройте курс для оператора: Абоненты → Операторы связи → Настройки биллинга → «Курс конвертации баллов».
- Создайте программу лояльности: Тарификация → Лояльность → Добавить. На вкладке «Скидки» задайте условия и ставку начисления баллов.
Баллы начисляются пропорционально списаниям по услугам. Конвертация через вкладку «Операции» → «Конвертация баллов».
4. Отправка сообщений
Настройка системы уведомлений и рассылок абонентам через различные каналы связи.
4.1. Регистрация домена для почтовой рассылки
Для почтовой рассылки необходимо настроить DNS-записи домена отправителя:
- MX-запись — указывает почтовый сервер для домена
- SPF-запись — определяет разрешённые серверы-отправители
- DKIM — цифровая подпись для подтверждения подлинности
Проверка 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
- Создайте бота через @BotFather и получите токен.
- Укажите токен в настройках биллинга.
- При необходимости настройте прокси.
- Перезапустите сервис уведомлений.
Абонент отправляет боту /start и авторизуется по логину или телефону. Система автоматически создаёт реквизит «Telegram ID» для абонента.
5. Платёжные системы, web-касса, API, 1С
Интеграция с платёжными системами, кассовыми аппаратами, бухгалтерскими программами и внешними API.
openssl s_client -connect localhost:443 -tls1_2
5.1. Веб-интерфейс кассира
Интерфейс для приёма платежей оператором/кассиром. Доступен по отдельному URL с ограниченным набором функций.
Настройка:
- Импортируйте SSL-сертификат для кассового интерфейса.
- Создайте пользователя в группе «cash» с правами кассира.
- Кассир выполняет приём платежей, печать и аннулирование чеков (ФЗ-54).
5.2. Платёжные системы
СмИТ Биллинг 1.0 поддерживает интеграцию с более чем 50 платёжными системами:
Интернет-эквайринг
- Сбербанк Онлайн (Интернет Эквайринг)
- Сбербанк (ЮKassa)
- Т-банк (бывший Тинькофф)
- Альфа-Банк
- United Card Service
- Robokassa
- PayKeeper
- PayMaster
- PayAnyWay (МОНЕТА.РУ)
- Payfon24
Платёжные терминалы (ОСМП)
- QIWI OSMP, QIWI P2P
- Город (ОСМП), Модифицированный OSMP
- SiPay, Interpay, Express Volga, A3, Amigo
- Сбербанк ЕПС (протокол 1 и 2)
- CityPay, PayBerry, Comepay, Telepay
- Sfour Alternative
Международные
- PayPal, PayPro
- Казкомбанк, KaspiBank
- Paynet (UZ), Paycom/Payme (UZ)
- Kassa24, JCC, NCC
- Deltapay
СБП и мобильные платежи
- Сбербанк СБП
- Промсвязьбанк ПСБ
- Форвард Мобайл
- Payfon24 Мобильный телефон
Прочие
- Интернет-ПлатеЖКа, Elecsnet
- ПО по подписке (Rentsoft)
- WEB Эквайринг (Uniteller)
- Московский Индустриальный Банк
5.3. Интеграция с 1С
Обмен данными с 1С:Бухгалтерия и 1С:Предприятие.
- Экспорт — абоненты, финансовые операции, акты и счета синхронизируются в 1С
- Импорт — платежи из 1С загружаются в биллинг через REST API v2.0
- Сопоставление — абоненты связываются по ИНН
Пометка/сброс синхронизации выполняется SQL-командами на уровне БД.
5.4. API
Два уровня API для интеграции со сторонними системами:
REST API v2 (рекомендуемый)
Универсальный CRUD-интерфейс для всех моделей биллинга:
GET /rest_api/v2/<Model>/— список записей (фильтрация, сортировка, пагинация, выбор полей)GET /rest_api/v2/<Model>/<id>/— детали записиPOST /rest_api/v2/<Model>/— созданиеPUT /rest_api/v2/<Model>/<id>/— обновлениеDELETE /rest_api/v2/<Model>/<id>/— удалениеGET/POST/DELETE /rest_api/v2/promise_pay/<id>/— обещанный платёж
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.
Поддерживаемые решения:
- ATOL Online — облачная касса
- E-COM — интернет-эквайринг с фискализацией
- Бизнес.ру — онлайн-касса
- ЮKassa, Uniteller, Robokassa — встроенная фискализация
- Т-банк, Альфа-Банк — фискализация через эквайринг
- Физические ККТ: ATOL, ШТРИХ-М
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 сетей. Поддерживается несколько схем:
- Выбор страницы регистрации — настройка внешнего вида и логики страницы
- Регистрация по звонку — абонент звонит на номер для авторизации
- Веб-авторизация в ЛК — авторизация через личный кабинет
- Веб-авторизация на оборудовании — авторизация через Captive Portal оборудования
6.6. Установка SSL-сертификата на локальный сайт
Настройка HTTPS для личного кабинета. Установка SSL-сертификата обеспечивает безопасную передачу данных абонентов.
7. OSS.BSS (HelpDesk, CRM, Учёт оборудования)
Интеграция с системами операционной и бизнес-поддержки для управления заявками, клиентскими обращениями и учётом оборудования.
7.1. CRM / HelpDesk
Встроенная система учёта заявок и обращений абонентов.
Создание заявок:
- Из административного интерфейса — оператор создаёт тикет вручную
- Из личного кабинета — абонент отправляет обращение через форму
Настройка уведомлений о комментариях (3 шага):
- Настроить групповые уведомления для очереди заявок
- Указать контактные данные администраторов (email, Telegram)
- Создать шаблоны сообщений для типов событий
7.2. UserSide
Интеграция с системой UserSide (ERP для управления сетью) через API биллинга.
Настройка:
- Включить авторизацию по IP для API
- Выбрать формат улиц для совместимости
- Настроить синхронизацию данных (абоненты, адреса, оборудование)
Для отладки используйте тестовые bash-команды для каждого метода API (user_list, house_list, street_list, tariff_list).
8. Отчёты
Финансовые и статистические отчёты для анализа деятельности оператора связи.
8.1. Аудит
Журнал действий пользователей. Доступен в разделе «Отчёты» (общий аудит) и на вкладке «Аудит» в карточке абонента (персональный). Фильтрация по дате, типу действия, тексту. Записи в обратном хронологическом порядке. Отслеживание блокировок и перерасчётов.
8.2. Журнал платежей
Журнал транзакций из платёжных систем, CSV-загрузок и веб-кассы. Типы результатов:
- Created — платёж создан
- ACCEPTED — подтверждён
- AUTOPAY_COMPLETED — автоплатёж выполнен
Поддерживает поиск и фильтрацию. Экспорт в 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:
- Популярность тарифов — распределение абонентов по тарифам
- ARPU — средний доход на одного пользователя
- ARPPU — средний доход на платящего пользователя
- Активные абоненты — количество и динамика
- Поступления — сумма входящих платежей за период
- Новые абоненты — количество подключений
8.5. Формирование отчёта по аудитам
Генерация детальных отчётов по журналу аудита: действия конкретного администратора, изменения конкретного абонента за период.
9. Справочники
Справочники СмИТ Биллинг 1.0 хранят настройки и наборы данных для работы с абонентами, услугами и оборудованием.
9.1. Пулы телефонных номеров
Управление пулами номеров для VoIP-услуг. Создание диапазонов, автоматическое выделение номеров абонентам при подключении телефонии.
9.2. Статусы абонентов
Настройка статусов: активен, заблокирован, расторгнут, ленивый, должник, злостный должник. Статусы влияют на отображение в дереве и поведение системы.
9.3. Валюты
Справочник валют для мультивалютных операций. Каждая валюта имеет название, сокращение и курс конвертации. Используется для бонусных систем и операторов с мультивалютным учётом.
9.4. Пулы VLAN
Управление пулами VLAN для автоматического распределения VLAN-тегов абонентам. Привязка к NAS-устройствам и группам абонентов.
9.5. Пулы IP-адресов
Создание и управление пулами IP-адресов. Параметры пула:
- Начальный и конечный адреса диапазона
- Шлюз, маска подсети
- Настройки DHCP (генерация конфигурации подсетей)
- Кэш адресов, цепочка пулов
Система автоматически отслеживает занятые и свободные адреса. Пулы привязываются к 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:
docker-compose.replica.yml— конфигурация реплики с отдельными контейнерами для ЛК и платёжных систем.env.replica— переменные окружения (DB_HOST указывает на мастер-сервер)
PostgreSQL streaming replication обеспечивает синхронизацию данных между мастером и репликой. Настраиваются firewall-правила для связи между серверами.
10.3. Настройка периода хранения исторических данных
Конфигурация сроков хранения данных в базе. Старые данные могут быть перенесены в архив или удалены при закрытии периода.
10.4. СОРМ. Доступ для правоохранительных органов
Настройка доступа для сотрудников правоохранительных органов к данным абонентов в соответствии с законодательством. Отдельный интерфейс с ограниченным набором функций.
10.5. Шаблоны документов для печати
Создание и редактирование шаблонов для печатных форм. Привязка к моделям: 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
- Смените стандартный порт SSH (22) на нестандартный
- Отключите вход по паролю, используйте только ключи
- Ограничьте доступ по SSH только с доверенных IP-адресов
- Используйте fail2ban для защиты от перебора
Межсетевой экран
Настройте файрвол (iptables/nftables) таким образом, чтобы были открыты только необходимые порты: HTTP/HTTPS для веб-интерфейса, RADIUS-порты для NAS, SSH для администрирования. Все остальные порты должны быть закрыты.
Физическая безопасность
Сервер биллинга должен находиться в защищённом помещении с контролем доступа. Рекомендуется использование ИБП (UPS) и резервного канала связи.
12. Версионность и обновления
СмИТ Биллинг 1.0 использует систему веток для управления стабильностью и обновлениями.
| Ветка | Описание | Стабильность |
|---|---|---|
| master | Стабильная ветка для продуктивного использования. Обновления выходят после полного тестирования. | Максимальная |
| integra | Интеграционная ветка. Содержит новые функции, прошедшие базовое тестирование. Рекомендуется для операторов, желающих получать обновления раньше. | Высокая |
| devel | Ветка разработки. Содержит самые свежие изменения, может быть нестабильной. Только для тестовых серверов. | Экспериментальная |
Формат версии
Номер версии имеет формат 1.0.18, где:
- 1 — мажорная версия (поколение биллинга)
- 0 — минорная версия (функциональный релиз)
- 18 — номер миграции Django (текущее состояние схемы БД)
Процесс обновления
Обновление выполняется через 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 выбран в качестве основной СУБД по ряду причин:
- Бесплатная лицензия — PostgreSQL License (свободная, без ограничений на коммерческое использование)
- Производительность — оптимизатор запросов, параллельные запросы, JIT-компиляция, секционирование таблиц
- Надёжность — полная поддержка ACID-транзакций, WAL-журналирование, point-in-time recovery
- Масштабируемость — потоковая репликация (streaming replication) с автоматическим failover
- Расширяемость — PL/pgSQL, расширения (pg_stat_statements, pg_trgm), поддержка JSON/JSONB
- Экосистема — pgAdmin, pg_dump/pg_restore, мониторинг через pg_stat_*, интеграция с Django ORM
- Индустриальный стандарт — используется в банковских системах, телекоме, госструктурах по всему миру
Архитектура системы
| Компонент | Технология | Версия | Назначение |
|---|---|---|---|
| Язык | Python | 3.11 | Бэкенд, бизнес-логика, ETL |
| Фреймворк | Django | 4.2 LTS | Веб-интерфейс, ORM, миграции, шаблоны |
| СУБД | PostgreSQL | 16 | Основное хранилище данных |
| Кэш / Брокер | Redis | 7 | Кэширование, сессии, очередь задач |
| Очередь задач | Celery | 5.x | Фоновые задачи (биллинг, блокировки, рассылки) |
| Веб-сервер | Gunicorn | 21.x | WSGI-сервер (продакшн) |
| Прокси | Nginx | 1.25 | Reverse proxy, статика, SSL |
| RADIUS | FreeRADIUS | 3.2.3 | Авторизация абонентов (rlm_python3) |
| Контейнеры | Docker Compose | — | Оркестрация всех сервисов |
| Фронтенд | AdminLTE 3 + Bootstrap 5.3 | — | Адаптивный веб-интерфейс |
| API | REST API v2 + SOAP (Spyne) | — | Интеграция со сторонними системами |
| Поиск | Elasticsearch | 7.x | Полнотекстовый поиск (django-haystack) |
| Мониторинг | Sentry SDK | 1.x | Отслеживание ошибок |
Celery-задачи (фоновые процессы)
Вместо отдельных демонов все фоновые процессы реализованы как Celery-задачи с настраиваемым расписанием:
| Задача | Интервал | Описание |
|---|---|---|
billing_worker | 5 мин | Основной процесс тарификации |
abonent_block | 5 мин | Блокировка/разблокировка абонентов |
nas_stats | 5 мин | Сбор статистики NAS |
tarif_change | 10 мин | Обработка запланированных смен тарифов |
csv_loading | 10 мин | Импорт платежей из CSV |
check_promises | 15 мин | Проверка обещанных платежей |
send_pending_messages | 1 мин | Отправка уведомлений (SMS, Email, Telegram) |
check_inactive | 1 час | Проверка неактивных абонентов |
send_felicitations | 24 часа | Поздравления с днём рождения |
Docker-сервисы
Система разворачивается как набор Docker-контейнеров:
# Запуск всех сервисов
docker compose up -d
# Просмотр статуса
docker compose ps
# Сервисы: db (PostgreSQL 16), redis (Redis 7), web (Django/Gunicorn),
# celery, celery-beat, freeradius, nginx
Ключевые метрики
- 37+ моделей данных — полная схема биллинга в Django ORM
- 18 миграций — версионирование схемы БД через Django Migrations
- 28 view-модулей — все интерфейсы переведены на Django 4.2
- 120+ шаблонов — AdminLTE 3 + Bootstrap 5.3
- REST API v2 — CRUD для всех моделей + обещанный платёж
- 10 Celery-задач — 7 модулей фоновых процессов