Обзор
Тарифы — готовые пакеты подписок с фиксированными параметрами. Используются приSALES_MODE=tariffs (по умолчанию). В отличие от режима конструктора, пользователь выбирает тариф целиком, а не собирает параметры по шагам.
Управление тарифами доступно из админ-панели бота в Telegram и через Cabinet Admin API. При первом запуске бот автоматически создает тариф “Стандартный” с ценами из
.env.Создание тарифа
Через админ-панель бота
Мастер создания (6 шагов): Шаг 1: Название- 2-50 символов
- Примеры: “Базовый”, “Премиум”, “Бизнес”
- Целое число в ГБ
0= безлимитный трафик
- Количество устройств (минимум 1)
- Число от 1 до 10
- Влияет только на визуальное отображение (1 = базовый)
- Периодический — оплата за период (30/90/180/360 дней)
- Суточный — ежедневное списание
- Для периодического: формат
дни:цена_в_копейкахчерез запятую - Для суточного: цена в рублях за день (например,
50или99.90)
Через Cabinet Admin API
Поля тарифа
Основные
Параметры подписки
Серверы
Ценообразование
Суточный тариф
Пользовательский выбор дней
При включении пользователь видит кнопки +/- для выбора срока вместо фиксированных периодов. Цена =
price_per_day_kopeks * количество_дней.
Пользовательский выбор трафика
Стоимость трафика прибавляется к стоимости периода:
Докупка трафика
Сброс трафика
Триал
Только один тариф может быть триальным. При назначении тарифа триальным флаг автоматически снимается со всех остальных.
Ограничение по промо-группам
Тарифы можно ограничить для определенных промо-групп:- Если у тарифа нет привязанных промо-групп — он доступен всем
- Если у тарифа есть привязанные промо-группы — он виден только пользователям из этих групп
Редактирование
На странице тарифа в админке доступны кнопки для редактирования каждого поля:Сортировка
Тарифы отображаются в порядкеdisplay_order (по возрастанию). Для изменения порядка:
- Cabinet Admin API:
PUT /cabinet/admin/tariffs/orderс массивом ID в нужном порядке - Админ-панель бота: редактирование
display_orderкаждого тарифа
Удаление
При удалении тарифа:- Показывается предупреждение с количеством активных подписок на этом тарифе
- Требуется подтверждение
- Подписки не удаляются — у них обнуляется привязка к тарифу (
tariff_id = NULL)
Отображение пользователю
В списке тарифов пользователь видит:- Название тарифа
- Трафик и количество устройств
- Минимальную цену (с учетом скидок промо-группы)
Скидки промо-групп
Если пользователь состоит в промо-группе со скидками за период, скидки отображаются на кнопках выбора периода:Формула цены
Периодический тариф
Суточный тариф
is_daily_paused).
Синхронизация цен
После любого изменения тарифов (создание, редактирование, удаление, переключение активности) глобальный словарьPERIOD_PRICES автоматически пересчитывается из БД. Перезапуск бота не требуется.
Управление сменой тарифа
Пользователь с активной подпиской может перейти на другой тариф. Направление смены контролируется двумя переменными окружения:
Сравнение цен тарифов происходит по стоимости за 30-дневный период. Возможные комбинации:
При смене тарифа оставшиеся дни подписки пересчитываются пропорционально разнице в стоимости.
