nakama/ADMIN_CHAT_DEBUG.md

237 lines
6.0 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.

# 🔍 Отладка админского чата
## Проблема
Админский чат не подключается в системе модерации.
## Что проверить
### 1. Откройте DevTools в системе модерации
Нажмите F12 и откройте вкладку **Console**
### 2. Перейдите на вкладку "Чат"
Должны увидеть логи:
```
[Chat] Инициализация чата
[Chat] User данные: { username: "glpshchn00", telegramId: "...", hasUsername: true, hasTelegramId: true }
[Chat] Подключение к: http://localhost:3000/mod-chat
[Chat] ✅ WebSocket подключен, ID: abc123
[Chat] Отправка auth с данными: { username: "glpshchn00", telegramId: "..." }
```
**Затем должно быть:**
**Успех:**
```
[Chat] ✅ Авторизация успешна!
```
**Ошибка - нет прав:**
```
[Chat] ❌ Нет прав для доступа к чату
[Chat] user.username: glpshchn00
[Chat] user.telegramId: 123456789
[Chat] Вы должны быть в списке MODERATION_OWNER_USERNAMES
```
**Ошибка подключения:**
```
[Chat] ❌ Ошибка подключения: timeout
```
## Решения
### Проблема: "Нет прав доступа"
**Причина:** Ваш username не в списке админов на сервере.
**Решение:**
1. Откройте `.env` на сервере:
```bash
nano .env
```
2. Проверьте/добавьте:
```env
MODERATION_OWNER_USERNAMES=glpshchn00
```
3. Перезапустите backend:
```bash
docker-compose restart backend
```
4. Проверьте логи:
```bash
docker-compose logs backend | grep "Mod chat"
```
Должно быть:
```
[INFO] Mod chat auth success { username: 'glpshchn00', isOwner: true }
```
### Проблема: "Ошибка подключения: timeout"
**Причина:** Backend недоступен или неправильный URL.
**Решение:**
1. Проверьте что backend запущен:
```bash
docker-compose ps backend
```
2. Проверьте `VITE_API_URL` в moderation frontend:
```bash
# В docker-compose.yml
environment:
- VITE_API_URL=http://localhost:3000 # Для локальной разработки
- VITE_API_URL=https://ваш-домен.com # Для production
```
3. Проверьте CORS в backend `.env`:
```env
CORS_ORIGIN=http://localhost:5174,https://ваш-домен.com
```
### Проблема: user.username или user.telegramId пустые
**Причина:** Пользователь не авторизован.
**Решение:**
1. Убедитесь что открыли через Telegram бота
2. Проверьте логи auth:
```
[Chat] user.username: undefined ← ПРОБЛЕМА!
```
3. Попробуйте переоткрыть систему модерации из бота
### Проблема: WebSocket вообще не подключается
**Причина:** CORS блокирует WebSocket.
**Решение:**
1. Проверьте browser console на ошибки CORS:
```
Access to XMLHttpRequest at 'http://...' from origin '...' has been blocked by CORS
```
2. Добавьте origin в `.env`:
```env
CORS_ORIGIN=http://localhost:5173,http://localhost:5174,https://web.telegram.org
```
3. Перезапустите:
```bash
docker-compose restart backend
```
## Backend логи
### Успешное подключение:
```bash
docker-compose logs backend | tail -20
```
Должно быть:
```
✅ WebSocket подключен: abc123
[INFO] Mod chat auth success { username: 'glpshchn00', isOwner: true, isAdmin: false }
```
### Ошибка авторизации:
```
[WARN] Mod chat auth failed: no username/telegramId
# или
[WARN] Mod chat access denied { username: '...', telegramId: '...' }
```
## Быстрая проверка
### 1. Backend работает?
```bash
curl http://localhost:3000/health
# Должен вернуть 200 OK
```
### 2. WebSocket работает?
```bash
curl http://localhost:3000/socket.io/
# Должен вернуть: {"code":0,"message":"Transport unknown"}
# Это нормально - значит WebSocket сервер работает
```
### 3. Username в списке?
```bash
# Проверьте переменную
docker-compose exec backend printenv | grep MODERATION_OWNER
```
Должно быть:
```
MODERATION_OWNER_USERNAMES=glpshchn00
```
## Полная перезагрузка
Если ничего не помогло:
```bash
# 1. Остановите всё
docker-compose down
# 2. Проверьте .env
cat .env | grep -E "MODERATION|CORS"
# 3. Запустите заново
docker-compose up -d
# 4. Смотрите логи
docker-compose logs -f backend
# 5. Переоткройте систему модерации из бота
```
## Контрольный список
- [ ] Backend запущен (`docker-compose ps`)
- [ ] MODERATION_OWNER_USERNAMES содержит ваш username
- [ ] CORS_ORIGIN включает домен системы модерации
- [ ] User авторизован (есть username и telegramId)
- [ ] VITE_API_URL указывает на правильный backend
- [ ] Нет ошибок CORS в browser console
- [ ] WebSocket сервер инициализирован (логи backend)
- [ ] Firewall не блокирует WebSocket порты
## Если всё еще не работает
Отправьте в @NakamaReportbot:
1. Скриншот DevTools Console (вкладка Чат)
2. Логи backend:
```bash
docker-compose logs backend > backend-logs.txt
```
3. Переменные окружения (без секретов):
```bash
cat .env | grep -v SECRET | grep -v KEY | grep -v PASSWORD > env-safe.txt
```
---
**После исправления чат должен подключиться автоматически при открытии вкладки "Чат"!**