Commit Graph

22 Commits

Author SHA1 Message Date
gy9vin
94cd06302a Фиксы UI 2026-01-16 15:58:22 +03:00
gy9vin
5a64dbf209 feat(payments): добавить режим яркого промпта активации подписки
- Реализован режим SHOW_ACTIVATION_PROMPT_AFTER_TOPUP для яркого уведомления пользователей
  - При пополнении баланса отправляется внимание-привлекающее сообщение с восклицательными знаками
  - Динамические кнопки в зависимости от статуса подписки:
    * Активная платная подписка: "🔄 Продлить" + "📱 Изменить устройства"
    * Нет подписки/истекла/триал: "🔥 Активировать подписку"
  - Убраны дублирующие уведомления из yookassa.py (строка 851)
  - Убраны дублирующие уведомления из subscription_auto_purchase_service.py (строки 755, 918)
  - Режим включается через SHOW_ACTIVATION_PROMPT_AFTER_TOPUP=true в .env

  Файлы:
  - app/services/payment/common.py: добавлена логика яркого промпта
  - app/services/payment/yookassa.py: отключено старое уведомление для корзины
  - app/services/subscription_auto_purchase_service.py: отключены 2 блока старых уведомлений
2026-01-16 15:29:44 +03:00
Mikhail
1c7ed68674 Merge branch 'main' into main 2026-01-16 12:16:23 +03:00
Egor
bcd3c26843 Update subscription_auto_purchase_service.py 2026-01-15 17:01:35 +03:00
gy9vin
6e1d671df2 feat(traffic): добавлен новый мониторинг трафика v2 с проверкой дельты и snapshot
Новый функционал:
- Быстрая проверка (TRAFFIC_FAST_CHECK_*) — отслеживает дельту трафика за интервал через snapshot
- Суточная проверка (TRAFFIC_DAILY_CHECK_*) — анализирует трафик за 24 часа через bandwidth API
- Фильтрация по нодам (TRAFFIC_MONIT
2026-01-10 00:47:23 +03:00
gy9vin
eaeb6def51 feat(config): добавлено предупреждение после пополнения и обновлён .env.example
Новый функционал:
- SHOW_ACTIVATION_PROMPT_AFTER_TOPUP — показывает предупреждение с кнопками
  "Активировать", "Продлить", "Добавить устройства" после пополнения баланса,
  если подписка не активна (режим для новичков)

Обновлён .env.example (+138 строк):
- Redis: CART_TTL_SECONDS
- Remnawave: AUTO_SYNC_*, TRIAL_USER_TAG, PAID_SUBSCRIPTION_USER_TAG
- Трафик: BUY_TRAFFIC_BUTTON_VISIBLE, PRICE_TRAFFIC_UNLIMITED
- Автопродление: ENABLE_AUTOPAY
- Конкурсы: REFERRAL_CONTESTS_ENABLED
- YooKassa: TRUSTED_PROXY_NETWORKS
- Mulenpay: DISPLAY_NAME, IFRAME_EXPECTED_ORIGIN, DISPLAY_NAME_BANNED_KEYWORDS
- Platega: DISPLAY_NAME
- WATA: PUBLIC_KEY_CACHE_SECONDS, PUBLIC_KEY_URL
- CloudPayments: API_URL, WIDGET_URL, RETURN_URL
- Интерфейс: MENU_LAYOUT_ENABLED, MINIAPP_PURCHASE_URL, HAPP_DOWNLOAD_LINK_PC
- Web API: WORKERS, TITLE, VERSION, TOKEN_HASH_ALGORITHM, REQUEST_LOGGING,
  EXTERNAL_ADMIN_TOKEN, EXTERNAL_ADMIN_TOKEN_BOT_ID

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 11:16:52 +03:00
gy9vin
51b88068bd fix(payment): добавлен параметр bot в auto_activate_subscription_after_topup
- Передача bot через getattr(self, "bot", None) во всех платёжных провайдерах
  - Добавлена отправка предупреждений пользователю при отключенной автоактивации
  - Добавлены предупреждения о необходимости активации подписки после пополнения
2026-01-08 11:00:34 +03:00
Egor
541d3c903d Update subscription_auto_purchase_service.py 2026-01-07 02:37:30 +03:00
Egor
a448a2c450 Add files via upload 2026-01-07 02:22:36 +03:00
gy9vin
4bebff5c4a fix(auto-activation): исправлен парсинг AVAILABLE_SUBSCRIPTION_PERIODS
Ошибка: код итерировал по строке "14,30,60,90,180,360" посимвольно,
  что приводило к ValueError: invalid literal for int() with base 10: ','

  Заменено на settings.get_available_subscription_periods() который
  корректно парсит строку в список [14, 30, 60, 90, 180, 360].
2026-01-01 22:55:01 +03:00
Mikhail
bb8beff511 Merge branch 'BEDOLAGA-DEV:main' into main 2025-12-30 21:47:07 +03:00
Egor
22c8f73eac Update traffic limit handling in subscription service
Refactor traffic limit assignment logic for subscriptions.
2025-12-30 18:08:32 +04:00
gy9vin
449f82d538 refactor(auto-purchase): перезагрузка пользователя после списания баланса для восстановления связей
- Добавлен get_user_by_id в импорты
- Перезагрузка user через get_user_by_id после subtract_user_balance
- Восстановление связи user_promo_groups, сбрасываемой после db.refresh() в payment-сервисах
- Добавлен мок get_user_by_id в тесте
2025-12-30 11:34:41 +03:00
gy9vin
cad9abd8bd feat(payments): умная автоактивация подписки после пополнения + округление цен
Добавлена функция умной автоактивации подписки после пополнения баланса:

  - Новая настройка AUTO_ACTIVATE_AFTER_TOPUP_ENABLED в .env
  - Функция auto_activate_subscription_after_topup() в subscription_auto_purchase_service.py:
    - Автоматически продлевает истёкшую подписку с теми же параметрами
    - Создаёт новую подписку с дефолтными параметрами если подписки нет
    - Проверяет достаточность баланса перед активацией
    - Интеграция с RemnaWave API
    - Уведомления пользователю и админам

  - Интеграция во все 9 платёжных провайдеров:
    - Stars, CryptoBot, YooKassa, CloudPayments
    - WATA, Platega, Pal24, MulenPay, Tribute

  - Исправлен handle_activate_button в menu.py:
    - Полная переработка с интеграцией RemnaWave
    - Корректная работа с балансом и транзакциями
    - Использование SubscriptionRenewalService

  Добавлено округление цен при отображении:

  - Новая настройка PRICE_ROUNDING_ENABLED в .env
  - Логика: ≤50 коп → вниз, >50 коп → вверх
  - Применяется везде: пополнения, партнёрки, скидки, промогруппы
2025-12-26 23:38:46 +03:00
Egor
7678150e6a Update subscription_auto_purchase_service.py 2025-11-29 09:50:05 +03:00
Egor
9b6e0b26c3 Ensure autopurchase sets paid flag for converted trials 2025-11-05 18:02:07 +03:00
Pavel Stryuk
427011fe41 1) Отображение скидки на кнопках (красивое!)
2) У промогрупп появится приоритет
3) У пользователя может быть несколько промогрупп, но влиять будет только с наивысшим приоритетом
4) К промокодам можно будет добавить промогруппу. Все активировавшие промокод получат её
5) При выводе пользователей с промогруппой будет также выводиться ссылка на каждого. Можно будет отследить сливы промокодов "для своих". Я в целом это добавлю во все места, где пользователь выводится в админке
6) Исправить баг исчезновения триалки при пополнении
7) Исправить падающие тесты и добавить новых
8) Трафик: 0 ГБ в тестовой подписке исправить на Трафик: Безлимит
2025-11-04 13:05:02 +01:00
Egor
5ce87238c8 Fix subscription timestamps to use configured timezone 2025-11-01 04:54:12 +03:00
Egor
212783ae3d Fix auto-purchase subscription refresh after YooKassa top-up 2025-10-26 20:26:35 +03:00
Egor
edf4132c2d Revert "Revert "feat: auto purchase subscription after top-up"" 2025-10-26 18:27:01 +03:00
Egor
9d6e17b609 Revert "feat: auto purchase subscription after top-up" 2025-10-26 18:03:49 +03:00
Egor
e1e6b40a19 feat: auto purchase subscription after top-up 2025-10-26 17:55:51 +03:00