- Добавлена колонка job в profiles (устраняет ошибку column job does not exist) - Добавлена колонка state в users (устраняет предупреждения State column does not exist) - Исправлен триггер create_initial_profile() для включения looking_for - Колонка looking_for сделана nullable с DEFAULT 'both' - Добавлена колонка interested_in как современный синоним для looking_for - Созданы индексы для производительности: idx_profiles_job, idx_users_state, idx_profiles_interested_in Патчи: - sql/fix_looking_for_column.sql - sql/add_job_and_state_columns.sql Утилиты: - bin/apply_all_patches.sh - автоматическое применение всех патчей Документация: - docs/DATABASE_FIXES.md - подробное описание исправлений - docs/HEALTH_CHECK.md - чеклист проверки здоровья бота - docs/FIXES_SUMMARY_2025-11-06.md - краткая сводка изменений Fixes: #job-column-error #state-column-warning #looking-for-constraint
5.2 KiB
5.2 KiB
Быстрая проверка здоровья бота
Используйте этот чеклист после развёртывания или обновления бота.
✅ Чеклист проверки
1. Проверка контейнера
docker compose ps
# Ожидается: telegram-tinder-bot в состоянии "running" (healthy)
2. Проверка логов (нет критичных ошибок)
docker compose logs bot --tail 50
# ✅ Должно быть: "Bot initialized successfully"
# ✅ Должно быть: "Bot username: @your_bot_name"
# ❌ НЕ должно быть: "column X does not exist" (критическая ошибка)
3. Проверка схемы БД
# Проверка критичных колонок
PGPASSWORD='your_password' psql -h host -p 5432 -U user -d db_name << 'EOF'
SELECT
table_name,
column_name,
data_type,
is_nullable
FROM information_schema.columns
WHERE table_name IN ('users', 'profiles')
AND column_name IN ('state', 'job', 'looking_for', 'interested_in', 'occupation')
ORDER BY table_name, column_name;
EOF
Ожидаемый результат:
table_name | column_name | data_type | is_nullable
------------+----------------+--------------------+-------------
profiles | interested_in | character varying | YES
profiles | job | character varying | YES
profiles | looking_for | character varying | YES
profiles | occupation | character varying | YES
users | state | character varying | YES
4. Проверка триггера
PGPASSWORD='your_password' psql -h host -p 5432 -U user -d db_name -c \
"SELECT proname FROM pg_proc WHERE proname = 'create_initial_profile';"
Ожидается: create_initial_profile (1 строка)
5. Проверка индексов
PGPASSWORD='your_password' psql -h host -p 5432 -U user -d db_name << 'EOF'
SELECT indexname
FROM pg_indexes
WHERE indexname IN ('idx_profiles_job', 'idx_users_state', 'idx_profiles_interested_in');
EOF
Ожидается: 3 строки с названиями индексов
🔧 Типичные проблемы и решения
Проблема: "column job does not exist"
Решение:
./bin/apply_all_patches.sh
docker compose restart bot
Проблема: "State column does not exist" (много раз)
Решение:
PGPASSWORD='password' psql -h host -p 5432 -U user -d db_name \
-c "ALTER TABLE users ADD COLUMN IF NOT EXISTS state VARCHAR(50);"
docker compose restart bot
Проблема: "looking_for violates not-null constraint"
Решение:
PGPASSWORD='password' psql -h host -p 5432 -U user -d db_name \
-f sql/fix_looking_for_column.sql
docker compose restart bot
Проблема: Бот не запускается (exit code 1)
Диагностика:
docker compose logs bot --tail 100
# Ищите строки с ERROR или "does not exist"
Решения:
- Проверьте
.env- все переменные DB_* заданы? - Проверьте подключение к БД:
PGPASSWORD='password' psql -h host -p 5432 -U user -d db_name -c "SELECT 1;" - Примените все патчи:
./bin/apply_all_patches.sh - Пересоберите контейнер:
make update
📊 Быстрая диагностика одной командой
# Создайте alias для удобства
alias bot-health='docker compose ps && echo "=== LOGS ===" && docker compose logs bot --tail 20'
# Использование
bot-health
🚀 Команды для разработки
# Полное обновление (pull + rebuild + migrate + restart)
make update
# Применение миграций
make migrate
# Только перезапуск
docker compose restart bot
# Пересборка с нуля
make clean && make install
# Проверка синтаксиса TypeScript
npm run build
# Запуск в режиме разработки (локально)
npm run dev
📝 Переменные окружения (.env)
Обязательные:
DB_HOST=192.168.0.102
DB_PORT=5432
DB_NAME=telegram_tinder_bot
DB_USERNAME=trevor
DB_PASSWORD=your_secure_password
TELEGRAM_BOT_TOKEN=your_bot_token
JWT_SECRET=your_jwt_secret
APP_SECRET=your_app_secret
NODE_ENV=production
PORT=3000
Опциональные:
DEEPSEEK_API_KEY=your_deepseek_key # Для AI фич
LOG_LEVEL=info # debug | info | warn | error
🆘 Экстренное восстановление
Если бот полностью сломан:
# 1. Остановить всё
docker compose down
# 2. Сделать бэкап БД
./bin/backup_db.sh
# 3. Откатить к последнему коммиту
git reset --hard HEAD
# 4. Применить все патчи заново
./bin/apply_all_patches.sh
# 5. Пересобрать
make install
# 6. Запустить
docker compose up -d
Версия: 1.0
Дата: 2025-11-06
Для: Telegram Tinder Bot v2.0