Commit Graph

273 Commits

Author SHA1 Message Date
Egor
b38e06383d Update user.py 2026-01-19 23:57:03 +03:00
Egor
57981b69c7 Update server_squad.py 2026-01-19 23:46:41 +03:00
PEDZEO
b1206a84c7 feat(notifications): enhance notification security and ownership checks
- Added ownership verification for user notifications to ensure only the rightful owner can mark them as read.
- Implemented checks to confirm that admin notifications are correctly identified before allowing them to be marked as read.
- Introduced a new method to retrieve notifications by ID in the TicketNotificationCRUD for improved data handling.
2026-01-19 00:39:36 +03:00
PEDZEO
67c3dba1cc feat(notifications): implement ticket notifications for users and admins
- Added a new TicketNotification model to handle notifications for ticket events.
- Implemented user and admin notifications for new tickets and replies in the cabinet.
- Introduced settings to enable or disable notifications for users and admins.
- Enhanced ticket settings to include notification preferences.
- Integrated WebSocket notifications for real-time updates.
2026-01-19 00:02:41 +03:00
Egor
15e7725cf7 Update tariff.py 2026-01-18 05:47:59 +03:00
Egor
08d202161c Update campaign.py 2026-01-17 05:01:12 +03:00
Egor
7106c89711 Update subscription.py 2026-01-16 08:40:01 +03:00
Egor
dcaf2b8103 Update tariff.py 2026-01-16 08:35:26 +03:00
Egor
7cacc73187 Update tariff.py 2026-01-16 06:18:20 +03:00
Egor
e22e786c88 Update tariff.py 2026-01-16 06:01:50 +03:00
Egor
ec9eaf4271 Update subscription_conversion.py 2026-01-16 03:28:01 +03:00
Egor
176d17fe40 Update subscription_conversion.py 2026-01-16 03:18:53 +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
Egor
a1ab2f3727 Update tariff.py 2026-01-14 02:39:58 +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
PEDZEO
ac5850746e Merge pull request #2271 from BEDOLAGA-DEV/main
merge main
2026-01-12 22:25:49 +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
PEDZEO
15f6108674 feat(tariffs): добавлена поддержка докупки трафика и улучшения тарифов
- Реализована возможность докупки трафика для тарифов с новыми параметрами: traffic_topup_enabled, traffic_topup_packages и max_topup_traffic_gb.
- Обновлены схемы и маршруты для управления тарифами и трафиком.
- Добавлены новые эндпоинты для работы с докупкой трафика в мини-приложении.
- Обновлены настройки и логика для проверки доступности докупки трафика в зависимости от тарифа.
- Внедрены улучшения в обработку платежей через Freekassa.

Обновлён .env.example с новыми параметрами для режима тарифов.
2026-01-12 07:47:35 +03:00
PEDZEO
0e24a5505c feat(subscription): добавлены новые функции для управления тарифами и трафиком
- Обновлены схемы и маршруты для поддержки покупки тарифов и управления трафиком.
- Реализована синхронизация тарифов и серверов из RemnaWave при запуске.
- Добавлены новые параметры в тарифы: server_traffic_limits и allow_traffic_topup.
- Обновлены настройки и логика для проверки доступности докупки трафика в зависимости от тарифа.
- Внедрены новые эндпоинты для работы с колесом удачи и обработка платежей через Stars.

Обновлён .env.example с новыми параметрами для режима продаж подписок.
2026-01-12 07:41:10 +03:00
Egor
ce66c08e1a Update tariff.py 2026-01-11 02:56:46 +03:00
Egor
744428e4f6 Update tariff.py 2026-01-10 20:37:40 +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
6ce87698bc Update tariff.py 2026-01-07 03:19:32 +03:00
Egor
203405438f Update tariff.py 2026-01-07 03:03:18 +03:00
Egor
b50478eda0 Add files via upload 2026-01-07 02:16:33 +03:00
Egor
7c2408209d Add files via upload 2026-01-06 20:54:46 +03:00
PEDZEO
258a4a5cb4 Merge pull request #2230 from BEDOLAGA-DEV/buttons
Buttons
2026-01-03 14:41:17 +03:00
gy9vin
d524088bb8 Обязательная подписка на канал Доработка 2026-01-02 16:14:40 +03:00
PEDZEO
6b69ec750e feat: add cabinet (personal account) backend API
- Add JWT authentication for cabinet users
- Add Telegram WebApp authentication
- Add subscription management endpoints
- Add balance and transactions endpoints
- Add referral system endpoints
- Add tickets support for cabinet
- Add webhooks and websocket for real-time updates
- Add email verification service

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 23:20:20 +03:00
gy9vin
8e6082ce15 fix Черный список, мониторинг суточно графика по регламенту
Исправленные файлы:

  1. app/services/traffic_monitoring_service.py — удалены неиспользуемые импорты Decimal, aiohttp
  2. app/services/blacklist_service.py — удалён неиспользуемый импорт re
  3. app/database/crud/user.py:998 — создана отсутствующая функция get_users_with_active_subscriptions:
  async def get_users_with_active_subscriptions(db: AsyncSession) -> List[User]:
  3. Функция:
    - Возвращает пользователей с активными подписками
    - Фильтрует по remnawave_uuid IS NOT NULL (нужен для API Remnawave)
    - Проверяет end_date > now и status == ACTIVE
2025-12-30 23:11:54 +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
gy9vin
180cba4561 fix Расширение фильтров 2025-12-30 22:14:09 +03:00
Egor
76f465e0f6 Update subscription.py 2025-12-30 18:13:18 +04:00
gy9vin
2a2a3daaae fix(contests): исправление статистики реферальных конкурсов
Основные исправления:
  - Фильтрация событий по дате регистрации реферала (occurred_at)
    в период конкурса (start_at - end_at)
  - Лидерборд теперь показывает правильные числа (было 21, стало 11)
  - Разделение DEPOSIT и SUBSCRIPTION_PAYMENT в статистике:
    - Основная метрика: покупки подписок (SUBSCRIPTION_PAYMENT)
    - Информационно: пополнения баланса (DEPOSIT)

  Новый функционал:
  - Кнопка "🔍 Отладка" для просмотра транзакций конкурса
  - Разбивка сумм по типам в детальной статистике
  - Кнопки "Назад" в синхронизации и отладке
  - Логирование дат фильтрации в синхронизации

  Также исправлено:
  - NaloGO: защита от дублирования чеков в очереди
    (проверка nalogo:created и nalogo:queued в Redis)
2025-12-30 02:08:23 +03: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
e71a3c1af7 feat(referral): топ рефереров по периодам в админ-панели
Добавлена возможность просмотра топа рефереров за неделю/месяц
   с сортировкой по количеству приглашённых или по заработку:

   - get_top_referrers_by_period() в crud/referral.py
   - Интерактивные кнопки выбора периода и критерия сортировки
   - Топ-20 рефереров с медалями для первых трёх мест
2025-12-26 09:11:08 +03:00
gy9vin
54ffe3e126 feat(transactions): добавлен параметр payment_method для ручных пополнений баланса
Добавлена поддержка указания способа оплаты при пополнении баланса:

- add_user_balance(): новый параметр payment_method для передачи в транзакцию
- add_user_balance_by_id(): поддержка payment_method
- UserService: ручные пополнения админом пом
2025-12-26 08:53:08 +03:00
gy9vin
bf6dc3991a feat(trial): платный триал с выбором метода оплаты
Реализована система платного триала с гибким выбором способа оплаты:

- Автоопределение платности: если TRIAL_ACTIVATION_PRICE > 0, триал автоматически платный
- TRIAL_PAYMENT_ENABLED теперь опционален (для обратной совместимости)
- Добавлена функция create
2025-12-26 00:03:08 +03:00
Mikhail
fb9405cccd Merge branch 'BEDOLAGA-DEV:main' into main 2025-12-25 23:56:04 +03:00