nakama/moderation/PYTHON_BACKEND.md

216 lines
5.4 KiB
Markdown
Raw Permalink Normal View History

2025-12-14 23:45:41 +00:00
# 🐍 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 полностью совместимо
Фронтенд работает без изменений!