Архитектура системы Чаттер
Обзор архитектуры
Система Чаттер построена по микросервисной архитектуре с использованием Go (Golang) и обеспечивает бесшовную интеграцию между мессенджерами и CRM-системами.
Компоненты системы
graph TB
subgraph "Клиентские приложения"
TG[Telegram Bot]
TGP[Telegram Private]
WA[WhatsApp]
AV[Авито]
end
subgraph "Шлюз сообщений"
MC[Messenger Controller]
DC[Dynamic Controller]
end
subgraph "Обработка сообщений"
PS[Parsing Service]
AI[AI Service]
CF[Content Filter]
end
subgraph "Интеграция с CRM"
CRM[amoCRM Integration]
WH[Webhook Handler]
end
subgraph "Хранение данных"
DB[(MySQL Database)]
RD[(Redis Cache)]
S3[(AWS S3 Storage)]
end
subgraph "Очереди и задачи"
MQ[RabbitMQ]
CRON[Cron Tasks]
end
subgraph "Веб-интерфейс"
WEB[Web Interface]
API[REST API]
end
TG --> MC
TGP --> MC
WA --> MC
AV --> MC
MC --> DC
DC --> PS
DC --> CRM
PS --> AI
PS --> CF
CF --> CRM
CRM --> WH
WH --> DB
MC --> DB
MC --> RD
MC --> S3
MC --> MQ
CRON --> MQ
MQ --> MC
WEB --> API
API --> MC
Основные модули
1. Messenger Controller
Файлы: internal/messenger_controller/
Назначение: Центральный контроллер для обработки сообщений из разных мессенджеров
Функции:
- Прием вебхуков от мессенджеров
- Маршрутизация сообщений
- Управление источниками
- Валидация данных
2. Dynamic Controller
Файлы: internal/messenger_controller/dynamic_controller.go
Назначение: Динамическая регистрация и вызов обработчиков мессенджеров
Функции:
- Реестр мессенджеров
- Динамическая диспетчеризация
- Плагинная архитектура
3. Parsing Service
Файлы: internal/parsing_service/
Назначение: Парсинг сообщений из Telegram Private
Функции:
- Чтение сообщений из чатов
- Фильтрация контента
- AI-анализ сообщений
- Обработка медиа-файлов
4. CRM Integration
Файлы: internal/crm/
Назначение: Интеграция с amoCRM и другими CRM-системами
Функции:
- Создание сделок и контактов
- Обновление статусов
- Управление вебхуками
- Синхронизация данных
5. Database Layer
Файлы: internal/database/
Назначение: Работа с базами данных
Компоненты:
- MySQL: основная база данных
- Redis: кеширование и сессии
- Таблицы: источники, пользователи, сообщения, настройки
Поток данных
1. Входящее сообщение
sequenceDiagram
participant Client as Клиент
participant Messenger as Мессенджер
participant MC as Messenger Controller
participant PS as Parsing Service
participant CRM as amoCRM
participant DB as База данных
Client->>Messenger: Отправляет сообщение
Messenger->>MC: Вебхук с сообщением
MC->>MC: Валидация и парсинг
MC->>PS: Фильтрация и анализ
PS->>CRM: Создание сделки
CRM->>DB: Сохранение данных
CRM->>MC: Подтверждение
MC->>Messenger: Ответ клиенту
2. Парсинг Telegram
sequenceDiagram
participant TG as Telegram API
participant PS as Parsing Service
participant AI as AI Service
participant CRM as amoCRM
participant DB as База данных
PS->>TG: Запрос новых сообщений
TG->>PS: Список сообщений
PS->>AI: Анализ контента
AI->>PS: Результат анализа
PS->>CRM: Создание сделок по фильтрам
CRM->>DB: Сохранение
PS->>DB: Логирование результатов
Структура базы данных
Основные таблицы
- source_type - типы источников мессенджеров
- source - конкретные источники (боты, аккаунты)
- users - пользователи системы
- messages - сообщения от клиентов
- deals - сделки в CRM
- contacts - контакты клиентов
- integrator_access - доступы интеграторов
Связи таблиц
erDiagram
source_type ||--o{ source : "тип источника"
source ||--o{ messages : "источник сообщений"
users ||--o{ source : "владелец источника"
messages ||--o{ deals : "создает сделку"
contacts ||--o{ deals : "принадлежит сделке"
users ||--o{ integrator_access : "доступ интегратора"
Безопасность
1. Аутентификация
- JWT токены для API
- OAuth2 для amoCRM
- Telegram Bot API токены
- API ключи для приватного парсинга
2. Авторизация
- Ролевая модель: Администратор, Менеджер, Оператор
- Разграничение доступа по источникам и CRM
- Аудит действий пользователей
3. Защита данных
- SSL/TLS шифрование всех соединений
- Хеширование паролей и чувствительных данных
- Резервное копирование в AWS S3
Масштабирование
1. Горизонтальное масштабирование
- Несколько инстансов приложения
- Балансировка нагрузки через Nginx
- Распределенная очередь RabbitMQ
2. Вертикальное масштабирование
- Увеличение ресурсов сервера
- Оптимизация запросов к БД
- Кеширование в Redis
3. Оптимизация производительности
- Асинхронная обработка сообщений
- Пакетные операции с CRM
- Индексация базы данных
Мониторинг и логирование
1. Системный мониторинг
- Метрики производительности приложения
- Нагрузка на сервер и БД
- Статус очередей и задач
2. Логирование
- Структурированные логи с использованием slog
- Уровни логирования: DEBUG, INFO, WARN, ERROR
- Хранение логов в файлах и системе
3. Алерты
- Уведомления о критических ошибках
- Мониторинг доступности сервисов
- Отчеты о работе системы
Развертывание
1. Среды
- Development - разработка
- Staging - тестирование
- Production - продуктив
2. CI/CD
- Автоматическая сборка при коммите
- Тестирование на Staging
- Деплой в Production
3. Инфраструктура
- Docker контейнеры для изоляции
- Kubernetes для оркестрации
- AWS для облачной инфраструктуры
API и интеграции
1. REST API
- Аутентификация через JWT
- RESTful дизайн
- OpenAPI документация
2. Вебхуки
- Прием сообщений от мессенджеров
- Уведомления от CRM
- Обработка ошибок и повторные попытки
3. Внешние интеграции
- Telegram Bot API - работа с ботами
- Telegram Client API - приватный парсинг
- amoCRM API - интеграция с CRM
- AWS S3 - хранение файлов
Будущее развитие
1. Новые мессенджеры
- WhatsApp Business API - расширенная поддержка
- Viber - новый источник
- Instagram Direct - интеграция
2. Улучшения
- AI-ассистент для автоматизации
- Расширенная аналитика и отчеты
- Мобильные приложения для менеджеров
3. Оптимизации
- Микросервисная архитектура - разделение на сервисы
- Event-driven подход с использованием Kafka
- GraphQL для гибких запросов
Эта архитектура обеспечивает масштабируемость, надежность и гибкость системы Чаттер для обработки сообщений из различных мессенджеров и интеграции с CRM-системами.