Обзор
Мультитарифный режим позволяет пользователям иметь несколько активных подписок одновременно. Каждый тариф создаёт отдельную подписку со своими серверами, трафиком, устройствами и настройками автопродления.Включение
Переключатель мультитарифного режима отображается в настройках только при
SALES_MODE=tariffs.Как это работает
Для пользователей
- Каждая покупка тарифа создаёт отдельную подписку
- Экран «Мои подписки» отображает все подписки списком
- У каждой подписки свои: серверы, трафик, устройства, срок действия, автопродление
- Можно одновременно иметь подписки на разные тарифы
- Нельзя купить один и тот же тариф дважды — для существующего доступно только продление или смена тарифа
- Триальная подписка автоматически деактивируется при покупке платного тарифа
В Telegram-боте
- Во всех операциях (трафик, устройства, подключение, колесо фортуны, промокоды) появляется выбор подписки
- Уведомления приходят по каждой подписке отдельно с указанием названия тарифа
- Для истёкших и отключённых подписок доступна кнопка удаления
- Умный fallback: если подписка не указана явно, выбирается лучшая не-суточная подписка
В кабинете (Cabinet)
- Страница
/subscriptionsс карточками всех подписок - Управление каждой подпиской отдельно: продление, устройства, трафик, автопродление
- Ключи подключения и QR-коды для каждой подписки
- Выбор подписки в колесе фортуны
- Удаление истёкших подписок с подтверждением
В админке
- Двухуровневая навигация: список подписок → детали подписки
- Синхронизация с панелью для каждой подписки отдельно
- При создании подписки уже купленные тарифы отфильтрованы
- Эндпоинты синхронизации принимают
subscription_id
Техническая архитектура
Интеграция с RemnaWave
Каждая подписка получает собственного пользователя в RemnaWave:
Синхронизация двунаправленная: изменения в панели отражаются в боте и наоборот, с привязкой по
subscription_id.
Миграция с однотарифного режима
Миграция данных не требуется. Переключение на мультитарифный режим происходит без потерь.
- Полная обратная совместимость:
MULTI_TARIFF_ENABLED=falseсохраняет прежнее поведение - Автопривязка: устаревшие UUID на уровне пользователя автоматически привязываются к подпискам при первой синхронизации
- Переход в обе стороны безопасен — данные не теряются
