feat: align tariff resets to calendar month

This commit is contained in:
3252a8
2026-04-28 15:25:46 +03:00
parent 338008bbd0
commit 258b2f4dec
9 changed files with 193 additions and 37 deletions
+5 -4
View File
@@ -21,13 +21,14 @@
## Period-Тариф
Period-тариф продает доступ на срок и личный 30-дневный лимит трафика.
Period-тариф продает доступ на срок и лимит трафика с календарным ежемесячным сбросом.
- `monthly_gb` превращается в `tier_baseline_bytes`.
- Докупленные пакеты хранятся в `topup_balance_bytes`.
- В Remnawave пушится `trafficLimitBytes = tier_baseline_bytes + topup_balance_bytes`.
- При продлении до окончания подписки дата 30-дневного сброса не меняется.
- При покупке после лапса новый период начинается с момента оплаты.
- Сброс происходит в начале календарного месяца для всех одинаково.
- Если покупка или продление были в середине месяца, reset всё равно придёт на ближайший первый день следующего месяца.
- Панель по-прежнему считает `usedTrafficBytes`, а бот только синхронизирует месячный reset и лимиты.
## Traffic-Тариф
@@ -61,7 +62,7 @@ Legacy поле `subscription_duration_months` остается для совм
`TariffTrafficWorker` запускается, только если активен `tariffs.json`.
- Раз в несколько минут проверяет 30-дневные сбросы.
- Раз в несколько минут проверяет наступление нового календарного месяца.
- Отправляет/дедуплицирует уровни предупреждений 80/95/100 через `traffic_warnings`.
- При 100% удаляет пользователя из squad-ов тарифа и ставит `is_throttled`.
- Возвращает пользователя в squad-ы, когда лимит снова больше использованного трафика.