mass refactor

This commit is contained in:
2025-09-18 08:31:14 +09:00
parent 856bf3ca2a
commit bdd7d0424f
58 changed files with 3009 additions and 291 deletions

105
docs/VIP_FUNCTIONS.md Normal file
View File

@@ -0,0 +1,105 @@
# VIP Функции - Документация
## Обзор
Реализованы VIP функции с проверкой премиум статуса пользователя в базе данных.
## База данных
### Новые поля в таблице users:
- `premium` (BOOLEAN) - флаг премиум статуса
- `premium_expires_at` (TIMESTAMP) - дата окончания премиум
## Логика работы
### 1. Кнопка "VIP Поиск"
- **Если premium = false**: показывает информацию о премиум и предложение купить
- **Если premium = true**: открывает VIP поиск с фильтрами
### 2. VIP Поиск включает:
#### Быстрый VIP поиск
- Только пользователи с фото
- Только онлайн пользователи
#### Расширенный поиск
- Фильтр по возрасту
- Фильтр по городу
- Фильтр по целям знакомства
- Фильтр по хобби
- Фильтр по образу жизни
#### Поиск по целям знакомства
- Серьезные отношения
- Общение и дружба
- Развлечения
- Деловые знакомства
#### Поиск по хобби
- Фильтрация по массиву хобби в профиле
## Файлы
### Новые файлы:
- `src/services/vipService.ts` - сервис для работы с VIP функциями
- `src/controllers/vipController.ts` - контроллер VIP поиска
- `src/database/migrations/add_premium_field.sql` - миграция для premium полей
### Изменённые файлы:
- `src/handlers/callbackHandlers.ts` - добавлены VIP обработчики
## Методы VipService
### checkPremiumStatus(telegramId: string)
Проверяет премиум статус пользователя, автоматически убирает истёкший премиум.
### addPremium(telegramId: string, durationDays: number)
Добавляет премиум статус на указанное количество дней.
### vipSearch(telegramId: string, filters: VipSearchFilters)
Выполняет VIP поиск с фильтрами (только для премиум пользователей).
### getPremiumFeatures()
Возвращает описание премиум возможностей.
## Методы VipController
### showVipSearch(chatId, telegramId)
Основной метод - показывает VIP поиск или информацию о премиум.
### performQuickVipSearch(chatId, telegramId)
Быстрый VIP поиск (фото + онлайн).
### showDatingGoalSearch(chatId, telegramId)
Показывает поиск по целям знакомства.
## Тестирование
### Добавить премиум пользователю:
```sql
UPDATE users SET premium = true, premium_expires_at = NOW() + INTERVAL '30 days'
WHERE telegram_id = 'YOUR_TELEGRAM_ID';
```
### Убрать премиум:
```sql
UPDATE users SET premium = false, premium_expires_at = NULL
WHERE telegram_id = 'YOUR_TELEGRAM_ID';
```
## Callback данные
- `get_vip` / `vip_search` - показать VIP поиск
- `vip_quick_search` - быстрый VIP поиск
- `vip_advanced_search` - расширенный поиск
- `vip_dating_goal_search` - поиск по целям
- `vip_goal_{goal}` - поиск по конкретной цели
- `vip_like_{telegramId}` - VIP лайк
- `vip_superlike_{telegramId}` - VIP супер-лайк
- `vip_dislike_{telegramId}` - VIP дизлайк
## Безопасность
- Все VIP функции проверяют премиум статус
- Автоматическое удаление истёкшего премиум
- Валидация всех входных данных
- Проверка существования пользователей перед операциями