Files
tg_tinder_bot/ARCHITECTURE.md
2025-09-12 21:25:54 +09:00

232 lines
8.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 с современной архитектурой и возможностями для масштабирования.**