nakama/moderation/backend-py/MIGRATION.md

142 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Миграция с Node.js на Python
## Зачем переходить на Python?
1. **Email работает из коробки** - нативная поддержка SMTP без проблем с AWS SDK
2. **Проще настройка** - меньше зависимостей и конфликтов версий
3. **Лучшая типизация** - Pydantic для валидации
4. **Совместимость** - использует ту же MongoDB, API полностью совместимо
## Шаги миграции
### 1. Остановите Node.js версию
```bash
# Если запущено через PM2
pm2 stop moderation-backend
# Если запущено через Docker
docker stop nakama-moderation-backend
# Если запущено вручную
# Найдите процесс и остановите его
ps aux | grep "moderation/backend"
kill <PID>
```
### 2. Установите Python зависимости
```bash
cd moderation/backend-py
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
### 3. Проверьте .env
Убедитесь, что в корневом `.env` (`nakama/.env`) настроены:
```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 версию
```bash
# 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. Проверьте работу
```bash
# Health check
curl http://localhost:3001/health
# API
curl http://localhost:3001/api/moderation-auth/config
```
### 6. Обновите PM2 (опционально)
```bash
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
Если нужно вернуться:
```bash
# Остановите 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 или обратитесь к администратору.