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

231
docs/ARCHITECTURE.md Normal file
View File

@@ -0,0 +1,231 @@
# Telegram Tinder Bot - Архитектура и Технические Детали
## 🏗️ Архитектура Проекта
### Структура Директорий
```
telegram-tinder-bot/
├── src/
│ ├── bot.ts # Основной файл бота
│ ├── controllers/ # Контроллеры для бизнес-логики
│ │ ├── matchController.ts
│ │ ├── profileController.ts
│ │ └── swipeController.ts
│ ├── database/ # Работа с базой данных
│ │ ├── connection.ts
│ │ └── migrations/init.sql
│ ├── handlers/ # Обработчики событий Telegram
│ │ ├── callbackHandlers.ts
│ │ ├── commandHandlers.ts
│ │ └── messageHandlers.ts
│ ├── models/ # Модели данных
│ │ ├── Match.ts
│ │ ├── Profile.ts
│ │ ├── Swipe.ts
│ │ └── User.ts
│ ├── services/ # Бизнес-логика
│ │ ├── matchingService.ts
│ │ ├── notificationService.ts
│ │ └── profileService.ts
│ ├── types/ # TypeScript типы
│ │ └── index.ts
│ └── utils/ # Вспомогательные функции
│ ├── helpers.ts
│ └── validation.ts
├── config/ # Конфигурация
├── logs/ # Логи приложения
├── uploads/ # Загруженные файлы
└── dist/ # Скомпилированные JS файлы
```
### Технологический Стек
**Backend:**
- Node.js 18+
- TypeScript 5.3.2
- node-telegram-bot-api 0.64.0
- PostgreSQL 15 с расширением UUID
- pg (PostgreSQL driver)
**Архитектурные Паттерны:**
- Service-Oriented Architecture (SOA)
- Model-View-Controller (MVC)
- Dependency Injection
- Repository Pattern для работы с данными
**DevOps:**
- Docker & Docker Compose
- PM2 для управления процессами
- ESLint + Prettier для качества кода
- Автоматическая компиляция TypeScript
## 🚀 Основные Возможности
### 1. Система Регистрации
- **Многошаговая регистрация** через диалог с ботом
- **Валидация данных** на каждом этапе
- **Загрузка фотографий** с проверкой формата
- **Геолокация** для поиска ближайших пользователей
### 2. Алгоритм Matching
- **Интеллектуальный подбор** на основе:
- Возраста и гендерных предпочтений
- Географической близости
- Общих интересов
- Исключение уже просмотренных профилей
### 3. Система Swipe
- **Left Swipe** (Pass) - пропустить
- **Right Swipe** (Like) - понравился
- **Super Like** - супер лайк (премиум)
- **Автоматическое создание матчей** при взаимном лайке
### 4. Чат Система
- **Обмен сообщениями** между матчами
- **Поддержка медиа**: фото, стикеры, GIF
- **Статус прочтения** сообщений
- **Уведомления** о новых сообщениях
### 5. Модерация и Безопасность
- **Система жалоб** на неподходящие профили
- **Блокировка пользователей**
- **Антиспам защита**
- **Верификация профилей**
## 🗄️ Схема Базы Данных
### Основные Таблицы
**users** - Пользователи Telegram
```sql
- id (UUID, PK)
- telegram_id (BIGINT, UNIQUE)
- username, first_name, last_name
- language_code, is_premium, is_blocked
- created_at, updated_at
```
**profiles** - Профили для знакомств
```sql
- id (UUID, PK)
- user_id (UUID, FK -> users.id)
- name, age, gender, looking_for
- bio, location, latitude, longitude
- photos[], interests[]
- education, occupation, height
- smoking, drinking, relationship_type
- verification_status, is_active, is_visible
```
**swipes** - История свайпов
```sql
- id (UUID, PK)
- swiper_id (UUID, FK -> users.id)
- swiped_id (UUID, FK -> users.id)
- direction ('left'|'right'|'super')
- created_at
```
**matches** - Пары пользователей
```sql
- id (UUID, PK)
- user1_id, user2_id (UUID, FK -> users.id)
- status ('active'|'blocked'|'unmatched')
- matched_at, last_message_at
```
**messages** - Сообщения в чате
```sql
- id (UUID, PK)
- match_id (UUID, FK -> matches.id)
- sender_id (UUID, FK -> users.id)
- content, message_type, file_id
- is_read, created_at
```
### Автоматические Триггеры
- **Автоматическое создание матчей** при взаимном лайке
- **Обновление времени** последнего сообщения
- **Автоинкремент** счетчиков непрочитанных сообщений
## 🛠️ API и Интеграции
### Telegram Bot API
- **Webhooks** для продакшена
- **Polling** для разработки
- **Inline клавиатуры** для навигации
- **Callback queries** для интерактивности
### Внешние Сервисы (Опционально)
- **Google Maps API** - для геокодирования
- **Cloudinary** - для хранения изображений
- **Redis** - для кэширования сессий
## 🔒 Безопасность
### Защита Данных
- **Хеширование** чувствительных данных
- **SQL Injection** защита через параметризованные запросы
- **Rate Limiting** для предотвращения спама
- **Валидация** всех входных данных
### Приватность
- **GDPR совместимость**
- **Возможность удаления** всех данных
- **Ограниченная видимость** профилей
- **Контроль доступа** к персональной информации
## 📊 Мониторинг и Логирование
### Система Логов
```typescript
- Error Logs: Критические ошибки
- Access Logs: Все запросы к боту
- Performance Logs: Метрики производительности
- User Activity: Статистика активности
```
### Метрики
- **DAU/MAU** - активные пользователи
- **Match Rate** - процент матчей
- **Message Volume** - объем сообщений
- **Conversion Funnel** - воронка регистрации
## 🚀 Развертывание
### Локальная Разработка
```bash
npm install
npm run dev
```
### Продакшен с Docker
```bash
docker-compose up -d
```
### Масштабирование
- **Horizontal Scaling**: Несколько инстансов бота
- **Database Sharding**: Разделение пользователей по регионам
- **CDN**: Для быстрой загрузки изображений
- **Load Balancer**: Распределение нагрузки
## 🔮 Планы Развития
### Ближайшие Улучшения
- [ ] **Video Calls** через Telegram
- [ ] **Stories** как в Instagram
- [ ] **Premium подписка** с расширенными возможностями
- [ ] **AI рекомендации** на основе поведения
- [ ] **Группы по интересам**
### Технические Улучшения
- [ ] **GraphQL API** для фронтенда
- [ ] **Machine Learning** для улучшения матчинга
- [ ] **Real-time notifications** через WebSockets
- [ ] **Multi-language support**
- [ ] **A/B тестирование** фич
---
**Этот проект представляет собой полноценную платформу знакомств внутри Telegram с современной архитектурой и возможностями для масштабирования.**