Инструкции по обновлению для SRE и DevOps.
Добавлена автоматическая классификация тем чатов с помощью LLM для аналитики.
Функциональность:
- Классификация чатов по темам (booking, service_info, price_inquiry, etc.)
- Аналитика популярных тем обращений клиентов
- Автоматическая классификация после создания заявки или по таймауту неактивности
| Переменная | Обязательность | По умолчанию | Описание |
|---|---|---|---|
TOPIC_CLASSIFIER_ENABLED |
Опционально | false |
Включить классификацию топиков |
TOPIC_CLASSIFIER_MODEL |
Опционально | — | Модель LLM (если не указана, используется LLM_MODEL) |
TOPIC_CLASSIFIER_INACTIVITY_HOURS |
Опционально | 24 |
Часы неактивности до автоклассификации |
Важно: Классификация отключена по умолчанию для экономии API вызовов.
# Для включения установите:
TOPIC_CLASSIFIER_ENABLED=true
# Опционально: использовать дешёвую модель для классификации
TOPIC_CLASSIFIER_MODEL=gpt-4o-minibin/rails db:migrateСоздаются таблицы:
chat_topics— справочник тем- Добавляется
chat_topic_idкchats - Индексы для оптимизации запросов
bin/rails db:seedСоздаются глобальные топики по умолчанию.
Миграция системы фоновых задач с SolidQueue на GoodJob для улучшенного мониторинга и эффективности.
Преимущества GoodJob:
- Лучший встроенный Web UI для мониторинга задач
- LISTEN/NOTIFY вместо polling (эффективнее для PostgreSQL)
- Единая база данных (queue DB больше не нужна)
-
Выполнить миграции базы данных:
bin/rails db:migrate
-
Обновить команду запуска job worker:
# Было: bin/rails solid_queue:start # Стало: bin/rails good_job:start
-
Удалить старую queue базу данных (после успешного деплоя):
dropdb valera_production_queue
| Компонент | Было | Стало |
|---|---|---|
| Job adapter | solid_queue |
good_job |
| Dashboard URL | /admin/jobs (MissionControl) |
/admin/jobs (GoodJob) |
| Queue database | Отдельная БД valera_production_queue |
Основная БД |
| Job worker | solid_queue:start |
good_job:start |
Обновить команду запуска worker:
# Procfile
jobs: bin/rails good_job:start# Проверить что GoodJob работает
bin/rails runner "puts GoodJob::Job.count"
# Проверить dashboard (требует авторизации admin)
curl -I https://admin.example.com/jobs| Имя | Обязательность | По умолчанию | Описание |
|---|---|---|---|
PUBLIC_PORT |
Опционально | 443 (https) / 80 (http) | Публичный порт для формирования URL |
Проблема: Ранее PORT использовался как для запуска приложения, так и для формирования публичных URL. Это приводило к некорректным URL вида https://3010.brandymint.ru:3010 вместо https://3010.brandymint.ru.
Решение: Добавлена переменная PUBLIC_PORT, которая определяет порт для публичных URL независимо от внутреннего порта приложения.
- Если
PUBLIC_PORTзадан — используется он - Иначе определяется из протокола:
https→ 443http→ 80
# Стандартная конфигурация (PUBLIC_PORT не нужен)
HOST=example.com
PROTOCOL=https
PORT=3000
# Результат: https://example.com (порт 443 не добавляется в URL)
# Нестандартный публичный порт
HOST=example.com
PROTOCOL=https
PORT=3000
PUBLIC_PORT=8443
# Результат: https://example.com:8443Действий не требуется — если PUBLIC_PORT не задан, порт определяется автоматически из протокола.
| Старое имя | Новое имя | Обязательность | Описание |
|---|---|---|---|
AUTH_BOT_TOKEN |
PLATFORM_BOT_TOKEN |
Обязательно | Token Telegram бота платформы |
AUTH_BOT_USERNAME |
PLATFORM_BOT_USERNAME |
Обязательно | Username Telegram бота (без @) |
| — | PLATFORM_ADMIN_CHAT_ID |
Опционально | ID канала для уведомлений о лидах |
| — | ADMIN_HOST |
Опционально | Хост админки (по умолчанию admin.${HOST}) |
Примечания:
PLATFORM_ADMIN_CHAT_ID— без этой переменной уведомления о лидах не отправляютсяADMIN_HOST— используется для формирования ссылок в уведомлениях
-
Добавить новые переменные (до деплоя):
# Обязательные — скопировать значения из старых переменных PLATFORM_BOT_TOKEN=$AUTH_BOT_TOKEN PLATFORM_BOT_USERNAME=$AUTH_BOT_USERNAME # Опциональные — для уведомлений о лидах PLATFORM_ADMIN_CHAT_ID=<chat_id> ADMIN_HOST=admin.example.com # или оставить пустым для admin.${HOST}
-
Деплой приложения
-
Удалить старые переменные (после проверки):
# Можно удалить после успешного деплоя unset AUTH_BOT_TOKEN unset AUTH_BOT_USERNAME
- Создать группу/канал в Telegram
- Добавить Platform Bot в группу
- Бот автоматически отправит chat_id в группу
- Использовать этот chat_id для PLATFORM_ADMIN_CHAT_ID
# Проверить что бот работает
curl -X POST "https://api.telegram.org/bot$PLATFORM_BOT_TOKEN/getMe"
# Проверить отправку в канал
curl -X POST "https://api.telegram.org/bot$PLATFORM_BOT_TOKEN/sendMessage" \
-d "chat_id=$PLATFORM_ADMIN_CHAT_ID" \
-d "text=Test message"# Выполнить миграцию для добавления manager_id к leads
bin/rails db:migrate