Files
remnawave-minishop/docs/tariffs.md
T

4.2 KiB
Raw Blame History

Тарифы 2.0

Бот поддерживает каталог тарифов в JSON-файле. Путь задается через TARIFFS_CONFIG_PATH, по умолчанию config/tariffs.json.

Если файл отсутствует, включается legacy fallback: используются старые .env поля RUB_PRICE_*, STARS_PRICE_*, USER_TRAFFIC_LIMIT_GB, USER_SQUAD_UUIDS, а также старый режим TRAFFIC_PACKAGES.

Конфиг

См. пример: config/tariffs.example.json.

Основные поля:

Поле Описание
default_tariff Тариф для миграции существующих подписок и выбора по умолчанию
topup_packages_default Пакеты докупки для period-тарифов без собственных пакетов
tariffs[].billing_model period или traffic
tariffs[].squad_uuids Internal squads Remnawave для тарифа
prices_rub / prices_stars Цены period-тарифов по месяцам
traffic_packages Пакеты GB для traffic-тарифов

Period-Тариф

Period-тариф продает доступ на срок и лимит трафика с календарным ежемесячным сбросом.

  • monthly_gb превращается в tier_baseline_bytes.
  • Докупленные пакеты хранятся в topup_balance_bytes.
  • В Remnawave пушится trafficLimitBytes = tier_baseline_bytes + topup_balance_bytes.
  • Для period-тарифов бот выставляет trafficLimitStrategy = MONTH, а дальнейший reset делает сама панель.
  • Дата сброса больше не считается в боте.
  • Если покупка или продление были в середине месяца, сброс всё равно произойдёт по правилам панели для MONTH.
  • Бот только меняет лимиты в GB и следит за предупреждениями/throttle на основе текущего usage из панели.

Traffic-Тариф

Traffic-тариф продает GB без срока действия.

  • end_date технически ставится в 2099-01-01 UTC.
  • period_start_at = NULL.
  • trafficLimitStrategy = NO_RESET.
  • Новая покупка добавляет GB к фактическому остатку: limit = used + remaining + purchased.
  • Доступ ограничивается только при исчерпании купленного трафика.

Смена Тарифа

Смена пишется в tariff_changes.

  • period -> period: расчет идет от effective_monthly_price_rub; пересчет дней использует floor.
  • period -> traffic: остаток оплаченных дней конвертируется в GB по conversion_rate_rub_per_gb или минимальной цене GB в RUB-пакетах.
  • traffic -> period: пользователь покупает период, а остаток GB сохраняется как топ-ап поверх нового тарифа.

Платежи

Новые платежи сохраняют:

  • sale_mode: subscription, traffic_package, topup, tariff_upgrade;
  • tariff_key;
  • purchased_gb для GB-покупок.

Legacy поле subscription_duration_months остается для совместимости.

Воркеры

TariffTrafficWorker запускается, только если активен tariffs.json.

  • Раз в несколько минут синхронизирует trafficLimitStrategy = MONTH для period-тарифов, если панель ещё не переключена.
  • Отправляет/дедуплицирует уровни предупреждений 80/95/100 через traffic_warnings.
  • При 100% удаляет пользователя из squad-ов тарифа и ставит is_throttled.
  • Возвращает пользователя в squad-ы, когда лимит снова больше использованного трафика.