Files
tg_tinder_bot/docs/ARCHITECTURE.md
2025-09-18 08:31:14 +09:00

8.6 KiB
Raw Blame History

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

- id (UUID, PK)
- telegram_id (BIGINT, UNIQUE)
- username, first_name, last_name
- language_code, is_premium, is_blocked
- created_at, updated_at

profiles - Профили для знакомств

- 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 - История свайпов

- id (UUID, PK)
- swiper_id (UUID, FK -> users.id)
- swiped_id (UUID, FK -> users.id)
- direction ('left'|'right'|'super')
- created_at

matches - Пары пользователей

- id (UUID, PK)
- user1_id, user2_id (UUID, FK -> users.id)
- status ('active'|'blocked'|'unmatched')
- matched_at, last_message_at

messages - Сообщения в чате

- 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 совместимость
  • Возможность удаления всех данных
  • Ограниченная видимость профилей
  • Контроль доступа к персональной информации

📊 Мониторинг и Логирование

Система Логов

- Error Logs: Критические ошибки
- Access Logs: Все запросы к боту
- Performance Logs: Метрики производительности
- User Activity: Статистика активности

Метрики

  • DAU/MAU - активные пользователи
  • Match Rate - процент матчей
  • Message Volume - объем сообщений
  • Conversion Funnel - воронка регистрации

🚀 Развертывание

Локальная Разработка

npm install
npm run dev

Продакшен с Docker

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