// Формат общения NAS с базой [ { "toa": 1, /* Тип события: 0 - ничего не надо (пустое) 1 - Создать абонента 2 - Изменилась инфа об абоненте, обновить его 3 - Удалить абонента 4 - Создать тариф 5 - Изменилась инфа о тарифе обновить её 6 - Удалить тариф 7 - Перечитать всю инфу (полная перезагрузка NAS) */ "id": 12, // ID объекта о котором событие (абонент там, или тариф) "dt": "data" // Разная инфа, содержимое зависит от поля 'toa' }, { "id": 13, "toa": 3 } ] // Формат передачи инфы об абонентах { "subscribers": [ { "is_active": true, // Активен-ли абонент "ip": 168558850, // Его ip "tarif_id": 1 // id тарифа }, { "is_active": true, "ip": 168558850, "tarif_id": 1 } ], "tariffs": [ { "tid": 1, // id тарифа "speedOut": 0.0, // Исходящая скорость "speedIn": 0.0 // Входящая скорость } ] } ------------------------------- Состояние оплаты абонента определяется на основе присутствия у него тарифного плана, если тариф есть - то значит всё оплачено (абонент его купил) и может пользоваться услугами. Тарифный план имеет срок действия и стоимость. Его можно купить как билет :) ТАРИФНЫЙ ПЛАН С НАИМЕНЬШИМ ЧИСЛОМ ПРИОРИТЕТА ИМЕЕТ НАИВЫСШИЙ ПРИОРИТЕТ В общем чем ближе приоритет к 0 тем он выше 0 - текущий тариф Свою логику расчёта по тарифу можно добавить в файле tariff_app/custom_tariffs.py Там надо добавить класс, наследованный от TariffBase и реализовать его абстрактные методы, потом добавить этот класс в кортеж TARIFF_CHOICES указав: код из 2х букв, сочетание должно быть уникальным и ваш класс для своей логики расчёта тарифа