- Изучить текущую структуру TelegramController
- Проанализировать текущую логику обработки webhook
- Изучить документацию по telegram-bot gem для работы с каналами
- Создать модель ChannelMessage через
rails g model ChannelMessage - Добавить поля в миграцию согласно спецификации
- Добавить индексы для оптимизации запросов
- Настроить валидации в модели
- Добавить scope методы для удобной выборки
- Запустить миграцию
- Создать тесты для валидаций модели
- Создать тесты для scope методов
- Создать тесты для сохранения различных типов контента
- Создать тесты для уникальности (message_id, channel_id)
- Убедиться что все тесты проходят
- Изучить текущую структуру метода process webhook
- Добавить метод определения типа сообщения (direct/channel)
- Создать метод сохранения канальных сообщений
- Модифицировать основной flow для разделения обработки
- Добавить обработку ошибок сохранения канальных сообщений
- Создать тесты для определения типа сообщения
- Создать тесты для сохранения канальных сообщений
- Создать тесты что бот не отвечает на канальные сообщения
- Создать тесты что прямые сообщения обрабатываются как раньше
- Создать тесты для обработки различных типов контента из каналов
- Создать тесты обработки ошибок
- Создать тесты полного flow обработки webhook с канальным сообщением
- Создать тесты проверки что ответы не отправляются в каналы
- Создать тесты для различных форматов контента (фото, видео, документы)
- Тестировать с реальными данными webhook от Telegram
- Добавить логирование сохраненных канальных сообщений
- Добавить метрики для мониторинга (Bugsnag интеграция)
- Оптимизировать производительность сохранения
- Добавить обработку дубликатов сообщений (индекс)
- Запустить полный тестовый набор
- Проверить работу в development среде
- Выполнить RuboCop для всех измененных файлов
- Обновить документацию при необходимости
- Создать git commit с изменениями
# Given: Webhook с текстовым сообщением из канала
# When: Обрабатываем webhook
# Then: Сообщение сохраняется в channel_messages, ответ не отправляется# Given: Webhook с фото/видео/документом из канала
# When: Обрабатываем webhook
# Then: Контент корректно сохраняется с правильным message_type# Given: Webhook с сообщением из канала
# When: Обрабатываем webhook
# Then: Никакие методы ответа не вызываются# Given: Webhook с прямым сообщением пользователя
# When: Обрабатываем webhook
# Then: Сообщение обрабатывается стандартной логикой- Все канальные сообщения сохраняются в базу данных
- Бот не отвечает на сообщения из каналов
- Прямые сообщения обрабатываются без изменений
- Все тесты проходят (минимум 90% покрытие)
- Код соответствует RuboCop стандартам
- Производительность не ухудшается
- Ошибки сохранения логируются в Bugsnag