nakama/moderation/PYTHON_BACKEND.md

216 lines
5.4 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.

# 🐍 Python Backend для модерации - Готов к использованию!
Бэкенд модерации полностью портирован на Python3 с FastAPI.
## ✅ Что сделано
1. **FastAPI сервер** - современный async Python фреймворк
2. **Email через SMTP** - нативная поддержка Yandex SMTP (без проблем AWS SDK)
3. **MongoDB** - async подключение через Motor
4. **JWT аутентификация** - совместимо с Node.js версией
5. **WebSocket чат** - Socket.IO для модераторов
6. **MinIO интеграция** - для хранения файлов
7. **API совместимость** - фронтенд работает без изменений
8. **Docker ready** - готовый Dockerfile
## 🚀 Быстрый старт
### Вариант 1: Автоматический (рекомендуется)
```bash
cd moderation/backend-py
./start.sh
```
### Вариант 2: Ручной
```bash
cd moderation/backend-py
# Создать venv
python3 -m venv venv
source venv/bin/activate
# Установить зависимости
pip install -r requirements.txt
# Запустить
python main.py
```
## ⚙️ Настройка
### 1. Email (ОБЯЗАТЕЛЬНО!)
В `nakama/.env` добавьте:
```env
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
```
**Получить пароль приложения Yandex:**
- https://id.yandex.ru/security
- "Пароли приложений" → Создать для "Почта"
### 2. Создать админа
```bash
mongosh nakama
```
```javascript
// Обновить пользователя
db.users.updateOne(
{ username: аш_username" },
{
$set: {
email: аш_email@yandex.ru",
emailVerified: true,
role: "admin"
}
}
);
```
### 3. Запустить
```bash
cd moderation/backend-py
python main.py
```
Должно появиться:
```
============================================================
🚀 Запуск сервера модерации (Python)...
✅ MongoDB подключена (база: nakama)
📚 Коллекций в базе: 10
============================================================
============================================================
✅ Сервер модерации запущен (Python)
🌐 API: http://0.0.0.0:3001/api
🔌 WebSocket: http://0.0.0.0:3001/socket.io
📦 MongoDB: 103.80.87.247:27017/nakama
============================================================
```
## 📝 Проверка
1. **Health check:**
```bash
curl http://localhost:3001/health
# {"status":"ok","service":"moderation","version":"2.0.0-python"}
```
2. **Config:**
```bash
curl http://localhost:3001/api/moderation-auth/config
```
3. **Отправка кода:**
Откройте фронтенд модерации, введите email - код должен прийти!
## 🔧 Решение проблем
### Email не отправляется
Проверьте логи:
```
[Email] Настройка SMTP: {provider: 'yandex', host: 'smtp.yandex.ru', port: 465, ...}
```
Если `user: 'не указан'` - проверьте `YANDEX_SMTP_USER` в `.env`.
### 403 при send-code
```javascript
// Проверьте роль пользователя
db.users.findOne({ email: аш_email@yandex.ru" })
// Должно быть role: "admin" или "moderator"
```
### MongoDB не подключается
```bash
# Проверьте доступность
mongosh "mongodb://103.80.87.247:27017/nakama"
```
## 🐳 Docker
```bash
cd moderation/backend-py
docker build -t nakama-moderation-py .
docker run -d -p 3001:3001 --env-file ../../.env nakama-moderation-py
```
## 📦 Production
### PM2
```bash
pm2 start "uvicorn main:app --host 0.0.0.0 --port 3001 --workers 2" \
--name moderation-backend-py \
--cwd $(pwd) \
--interpreter python3
pm2 save
```
### Systemd
Создайте `/etc/systemd/system/nakama-moderation-py.service`:
```ini
[Unit]
Description=Nakama Moderation Backend (Python)
After=network.target
[Service]
Type=simple
User=nakama
WorkingDirectory=/path/to/nakama/moderation/backend-py
Environment="PATH=/path/to/nakama/moderation/backend-py/venv/bin"
ExecStart=/path/to/nakama/moderation/backend-py/venv/bin/uvicorn main:app --host 0.0.0.0 --port 3001 --workers 2
Restart=always
[Install]
WantedBy=multi-user.target
```
```bash
sudo systemctl daemon-reload
sudo systemctl enable nakama-moderation-py
sudo systemctl start nakama-moderation-py
```
## 📚 Документация
- `README.md` - Полное описание
- `QUICKSTART.md` - Быстрый старт
- `INSTALL.md` - Подробная установка
- `MIGRATION.md` - Миграция с Node.js
## ✨ Преимущества
- ✅ Email работает из коробки
- ✅ Меньше зависимостей
- ✅ Лучшая типизация
- ✅ Async/await
- ✅ Совместимость с Node.js версией
-Та же MongoDB
- ✅ API полностью совместимо
Фронтенд работает без изменений!