Commit Graph

71 Commits

Author SHA1 Message Date
Egor
7106c89711 Update subscription.py 2026-01-16 08:40:01 +03:00
Egor
395646168d Update subscription.py 2026-01-16 00:50:03 +03:00
Egor
c4382ff69d Add files via upload 2026-01-15 17:31:39 +03:00
Egor
9c2b17af3b Update subscription.py 2026-01-14 04:12:18 +03:00
PEDZEO
a686333603 Add support for custom days and traffic in tariffs
- Introduced fields for custom days and traffic in the tariff model, including enabling flags, pricing, and limits.
- Updated relevant routes and schemas to handle new tariff features.
- Implemented logic for purchasing and managing custom days and traffic in subscriptions.
- Added database migration scripts to accommodate new columns for tariffs and subscriptions.
2026-01-13 02:55:32 +03:00
Egor
40fad0d537 Update subscription.py 2026-01-12 18:56:24 +03:00
Egor
67f60ba41a Update subscription.py 2026-01-12 18:44:34 +03:00
Egor
db54b01f04 Update subscription.py 2026-01-12 18:16:59 +03:00
Egor
26e242cac7 Update subscription.py 2026-01-12 18:12:14 +03:00
Egor
640a80953f Update subscription.py 2026-01-12 16:31:00 +03:00
Egor
472ef37490 Add files via upload 2026-01-12 15:25:25 +03:00
Egor
5d1d561882 Update subscription.py 2026-01-10 20:33:55 +03:00
Egor
bc7470b39d Update subscription.py 2026-01-10 18:20:35 +03:00
Egor
4e6d5b4716 Update subscription.py 2026-01-09 19:30:53 +03:00
Egor
cc3f78c2f8 Update subscription.py 2026-01-08 03:07:31 +03:00
Egor
b50478eda0 Add files via upload 2026-01-07 02:16:33 +03:00
gy9vin
d524088bb8 Обязательная подписка на канал Доработка 2026-01-02 16:14:40 +03:00
gy9vin
08692145d2 fix Массовая синхронизация пользователей с Remnawave
app/database/crud/subscription.py:

  Добавлен await db.flush() в create_subscription_no_commit для консистентности с create_user_no_commit:

  db.add(subscription)

  # Выполняем flush, чтобы получить присвоенный первичный ключ
  await db.flush()

  # Не коммитим сразу, оставляем для пакетной обработки
2025-12-30 23:03:34 +03:00
gy9vin
56cc8bacf2 fix Простая покупка подписки
1. app/database/crud/subscription.py

  Объединены функции create_pending_subscription и create_pending_trial_subscription:
  - Добавлен параметр is_trial: bool = False в create_pending_subscription
  - create_pending_trial_subscription теперь просто вызывает create_pending_subscription(is_trial=True)
  - Сокращено ~75 строк дублированного кода

  Удалён лишний импорт:
  # Было внутри activate_pending_subscription:
  from sqlalchemy import and_  # Удалено — уже импортирован на уровне модуля

  2. app/handlers/subscription/purchase.py

  Устранено дублирование функций:
  - Удалены определения _calculate_simple_subscription_price() и _get_simple_subscription_payment_keyboard() (~75 строк)
  - Добавлен импорт из app.handlers.simple_subscription

  from app.handlers.simple_subscription import (
      _calculate_simple_subscription_price,
      _get_simple_subscription_payment_keyboard,
  )

  Итого сокращено: ~150 строк дублированного кода
2025-12-30 22:56:24 +03:00
Egor
76f465e0f6 Update subscription.py 2025-12-30 18:13:18 +04:00
gy9vin
58c924b70a fix(campaign,channel): исправлена логика рекламных кампаний и проверки подписки на канал
- Рекламные кампании теперь выдают триальную подписку (is_trial=True),
    а не платную — пользователь становится платным только после оплаты

  - Добавлена настройка CHANNEL_REQUIRED_FOR_ALL для проверки подписки
    на канал для ВСЕХ пользователей (платных и триальных)

  - Добавлен параметр is_trial в create_paid_subscription для гибкости
2025-12-26 21:40:28 +03:00
gy9vin
bf6dc3991a feat(trial): платный триал с выбором метода оплаты
Реализована система платного триала с гибким выбором способа оплаты:

- Автоопределение платности: если TRIAL_ACTIVATION_PRICE > 0, триал автоматически платный
- TRIAL_PAYMENT_ENABLED теперь опционален (для обратной совместимости)
- Добавлена функция create
2025-12-26 00:03:08 +03:00
gy9vin
0538d0e337 feat(traffic): улучшение системы докупки и сброса трафика
- Добавлен ENV переключатель TRAFFIC_TOPUP_ENABLED для вкл/выкл докупки
- Добавлена отдельная конфигурация пакетов TRAFFIC_TOPUP_PACKAGES_CONFIG
- Добавлено поле purchased_traffic_gb для отслеживания докупленного трафика
- Добавлены режимы расчета цены сброса (period/traffic/traffic_with_purchased)
- Исправлен абьюз: цена сброса теперь учитывает докупленный трафик
- Сброс purchased_traffic_gb при продлении/покупке подписки
- UX: меню сброса теперь показывает цену и баланс вместо alert
- UX: кнопка пополнения если не хватает средств на сброс
- Добавлена миграция для нового поля purchased_traffic_gb
- Добавлена локализация TRAFFIC_TOPUP_DISABLED (ru/en/ua/zh)
2025-12-25 14:48:24 +03:00
Egor
dc428baa6a Update subscription.py 2025-12-23 11:53:52 +03:00
Egor
0892f494d9 Revert "Add internal squad management for users and trials" 2025-12-08 04:17:05 +03:00
Egor
6c41263511 Add internal squad management for users and trials 2025-12-08 04:15:18 +03:00
Egor
7a70a90d63 Reduce noisy price calculation logging 2025-11-27 23:55:54 +03:00
Egor
fba217b87f Fix trial reset by clearing server links 2025-11-20 22:49:57 +03:00
Egor
991e5a3112 Preserve zero device limit when replacing trials 2025-11-18 01:14:43 +03:00
Egor
cb6d51ed3d Remove trial squad override setting 2025-11-08 07:55:24 +03:00
Pavel Stryuk
427011fe41 1) Отображение скидки на кнопках (красивое!)
2) У промогрупп появится приоритет
3) У пользователя может быть несколько промогрупп, но влиять будет только с наивысшим приоритетом
4) К промокодам можно будет добавить промогруппу. Все активировавшие промокод получат её
5) При выводе пользователей с промогруппой будет также выводиться ссылка на каждого. Можно будет отследить сливы промокодов "для своих". Я в целом это добавлю во все места, где пользователь выводится в админке
6) Исправить баг исчезновения триалки при пополнении
7) Исправить падающие тесты и добавить новых
8) Трафик: 0 ГБ в тестовой подписке исправить на Трафик: Безлимит
2025-11-04 13:05:02 +01:00
Mikhail
92cb1e3971 Merge branch 'Fr1ngg:main' into main 2025-11-02 15:08:01 +03:00
gy9vin
005fc95433 Массовая синхронизация пользователей с ремнем! 2025-11-02 15:07:28 +03:00
Egor
5ce87238c8 Fix subscription timestamps to use configured timezone 2025-11-01 04:54:12 +03:00
Egor
8407f7cdb1 Restore device management button in disabled mode 2025-10-31 19:15:48 +03:00
gy9vin
7f2e4615ee Фикс простой покупки 2025-10-19 15:52:10 +03:00
gy9vin
83a473606f Простая покупка подписки 2025-10-18 18:42:03 +03:00
Egor
e032369110 Reactivate subscriptions when extending from disabled 2025-10-13 16:52:58 +03:00
Egor
d13ff6830b Gate server counter updates for paid subscriptions 2025-10-08 07:54:31 +03:00
Egor
a020db5bc6 Fix server counters when subscriptions are removed 2025-10-08 06:57:53 +03:00
Egor
6b2af1f4a3 feat: randomize trial squad distribution 2025-10-08 06:07:31 +03:00
Egor
ea7697fd66 Enable configurable default autopay 2025-10-08 05:16:11 +03:00
Egor
6fc4eb033b Allow admins to decrease subscription days 2025-10-08 04:56:33 +03:00
Egor
60d23bedde Revert "Add tariff-based subscription mode" 2025-10-01 02:06:18 +03:00
Egor
70ad084bcd Add tariff-aware subscription API handling 2025-10-01 02:04:20 +03:00
Egor
e4743ced9b Convert extended trials to paid subscriptions 2025-09-30 00:50:57 +03:00
Egor
ca81b32502 Add configurable traffic reset on payments 2025-09-29 14:40:36 +03:00
Egor
b258bd95bd Document happ cryptolink mode in env example 2025-09-25 10:25:06 +03:00
Egor
033230f73e Revert "Add Happ crypto link connection mode with download prompts" 2025-09-25 08:51:34 +03:00
Egor
ff71f4b637 Add Happ crypto link mode and download flow 2025-09-25 08:50:22 +03:00