nakama/moderation/backend-py/MIGRATION.md

3.9 KiB
Raw Blame History

Миграция с Node.js на Python

Зачем переходить на Python?

  1. Email работает из коробки - нативная поддержка SMTP без проблем с AWS SDK
  2. Проще настройка - меньше зависимостей и конфликтов версий
  3. Лучшая типизация - Pydantic для валидации
  4. Совместимость - использует ту же MongoDB, API полностью совместимо

Шаги миграции

1. Остановите Node.js версию

# Если запущено через PM2
pm2 stop moderation-backend

# Если запущено через Docker
docker stop nakama-moderation-backend

# Если запущено вручную
# Найдите процесс и остановите его
ps aux | grep "moderation/backend"
kill <PID>

2. Установите Python зависимости

cd moderation/backend-py
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

3. Проверьте .env

Убедитесь, что в корневом .env (nakama/.env) настроены:

# Email (обязательно!)
EMAIL_PROVIDER=yandex
YANDEX_SMTP_HOST=smtp.yandex.ru
YANDEX_SMTP_PORT=465
YANDEX_SMTP_SECURE=true
YANDEX_SMTP_USER=ваш_email@yandex.ru
YANDEX_SMTP_PASSWORD=ваш_пароль_приложения
EMAIL_FROM=noreply@nakama.guru
OWNER_EMAIL=admin@example.com

# Модерация
MODERATION_PORT=3001
MODERATION_BOT_TOKEN=ваш_токен
MODERATION_OWNER_USERNAMES=glpshchn00

# MongoDB (та же база!)
MONGODB_URI=mongodb://103.80.87.247:27017/nakama

4. Запустите Python версию

# Development
python main.py

# Или с auto-reload
uvicorn main:app --reload --host 0.0.0.0 --port 3001

# Production
uvicorn main:app --host 0.0.0.0 --port 3001 --workers 4

5. Проверьте работу

# Health check
curl http://localhost:3001/health

# API
curl http://localhost:3001/api/moderation-auth/config

6. Обновите PM2 (опционально)

pm2 delete moderation-backend

pm2 start "uvicorn main:app --host 0.0.0.0 --port 3001 --workers 2" \
  --name moderation-backend-py \
  --cwd /path/to/nakama/moderation/backend-py \
  --interpreter python3

Откат на Node.js

Если нужно вернуться:

# Остановите Python версию
pm2 stop moderation-backend-py

# Запустите Node.js версию
cd moderation/backend
npm start

Проверка совместимости

Фронтенд модерации работает с обеими версиями без изменений:

  • API endpoints идентичны
  • Формат данных совместим
  • WebSocket протокол тот же

Решение проблем

Email не отправляется

Проверьте:

  1. Используете ли пароль приложения Yandex (не основной пароль)
  2. Правильность email адреса в YANDEX_SMTP_USER
  3. Логи при запуске - должна быть строка [Email] Настройка SMTP

401 Unauthorized

  • JWT токены те же, что и в Node.js версии
  • Cookies с теми же именами
  • Проверьте JWT_ACCESS_SECRET в .env

MongoDB connection error

  • Используется та же MONGODB_URI из .env
  • Проверьте доступность MongoDB: mongosh <MONGODB_URI>

Производительность

Python версия с uvicorn и 4 workers показывает сопоставимую или лучшую производительность по сравнению с Node.js.

Поддержка

При проблемах создайте issue или обратитесь к администратору.