LichessStatTgWeb/README.md
vrubelroman 6cb5a9b99f Исправление двойного ответа и улучшение системы
- Исправлен баг с двойным ответом в /getgamers (добавлена обработка ошибок)
- Добавлена автоматическая миграция токенов при инициализации БД
- Исправлен веб-интерфейс - теперь берет токены из user_gamers
- Улучшен start.sh - создает бэкап базы перед перезапуском
- Добавлен export_db.sh для экспорта базы данных
- start.sh безопасно обновляет проект и сохраняет все данные
2025-10-28 21:34:35 +03:00

243 lines
9.6 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.

# Lichess Statistics Ecosystem
Полнофункциональная система для отслеживания статистики игроков Lichess.org с Telegram ботом и веб-интерфейсом.
## 🎯 Описание проекта
Система состоит из трех взаимосвязанных компонентов:
1. **LichessWebServices** - REST API для получения статистики игроков Lichess
2. **LichessClientTG_bot** - Telegram бот для управления подписками и уведомлений
3. **LichessWebView** - Веб-интерфейс для просмотра пользователей и их игроков
## 🏗️ Архитектура
```
┌─────────────────────────────────────────────────────────────┐
│ Telegram Users │
│ │
│ ┌────────────────────────────────────────────────────┐ │
│ │ LichessClientTG_bot │ │
│ │ (Управление подписками, уведомления) │ │
│ └────────┬───────────────────────────────────────────┘ │
│ │ │
│ ├──────────────────────┐ │
│ │ │ │
│ ┌────────▼──────────┐ ┌──────▼──────────────┐ │
│ │ LichessWebServices │ │ LichessWebView │ │
│ │ │ │ │ │
│ │ REST API для │ │ Веб-интерфейс │ │
│ │ получения │ │ для просмотра │ │
│ │ статистики │ │ пользователей │ │
│ └────────┬───────────┘ └────────────────────┘ │
│ │ │
└───────────┼──────────────────────────────────────────────┘
┌───────────────┐
│ Lichess API │
└───────────────┘
```
## 🚀 Быстрый старт
### Установка и запуск
```bash
# Клонируем репозиторий
git clone https://github.com/vrubelroman/LichessStatTgWeb.git
cd LichessStatTgWeb
# Запускаем все сервисы
./start.sh
```
Скрипт `start.sh` запустит все контейнеры в правильном порядке.
### Доступные сервисы
После запуска доступны:
- **API документация**: http://localhost:8001/docs
- **Веб-интерфейс**: http://localhost:5000
- **Telegram бот**: работает в фоне
## 📦 Структура проекта
```
LichessStatTgWeb/
├── LichessWebServices/ # REST API сервис
│ ├── main.py # FastAPI приложение
│ ├── stats_service.py # Логика обработки статистики
│ ├── lichess_client.py # Клиент для Lichess API
│ └── models.py # Pydantic модели
├── LichessClientTG_bot/ # Telegram бот
│ ├── bot.py # Основная логика бота
│ ├── database.py # Работа с БД
│ ├── lichess_api.py # API клиент
│ ├── formatters.py # Форматирование ответов
│ └── config.py # Конфигурация
├── LichessWebView/ # Веб-интерфейс
│ ├── app.py # Flask приложение
│ └── templates/ # HTML шаблоны
│ └── index.html # Главная страница
├── docker-compose.yml # Общая конфигурация контейнеров
├── start.sh # Скрипт запуска всех сервисов
└── README.md # Этот файл
```
## 🔧 Компоненты
### 1. LichessWebServices (API)
REST API для получения статистики игроков Lichess.
**Возможности:**
- Статистика за сегодня/вчера/неделю
- Статистика игр по режимам (Bullet, Blitz, Rapid)
- Статистика решения задач (puzzles)
- Получение игр за произвольный период
**Endpoints:**
- `GET /stats/{username}/today` - статистика за сегодня
- `GET /stats/{username}/yesterday` - статистика за вчера
- `GET /stats/{username}/week` - статистика за неделю
- `GET /games/{username}/period` - игры за период
- `GET /puzzle/period` - задачи за период (требует токен)
### 2. LichessClientTG_bot (Telegram бот)
Telegram бот для управления отслеживанием игроков.
**Возможности:**
- Добавление игроков для отслеживания
- Выбор активного игрока
- Получение статистики (сегодня/вчера/неделя)
- Настройка периодических уведомлений
- Каждый пользователь имеет свой набор игроков
**Команды:**
- `/start` - начало работы с ботом
- `/adduser` - добавить игрока Lichess
- `/getgamers` - выбрать активного игрока
- `/today` - статистика за сегодня
- `/yesterday` - статистика за вчера
- `/week` - статистика за неделю
- `/setperiod` - настроить уведомления
### 3. LichessWebView (Веб-интерфейс)
Веб-интерфейс для просмотра пользователей и их игроков.
**Возможности:**
- Просмотр всех пользователей бота
- Фильтрация пользователей по имени/никнейму
- Отображение игроков каждого пользователя
- Статистика по каждому пользователю
- Отображение активных игроков и периодов
## 🗄️ База данных
Система использует SQLite базу данных с таблицами:
- `telegram_users` - пользователи Telegram
- `gamers` - игроки Lichess
- `user_gamers` - связь пользователей с игроками и настройки
**Структура:**
- Каждый пользователь видит только своих игроков
- У каждого пользователя свой активный игрок
- Период отслеживания привязывается к паре пользователь-игрок
## 🐳 Docker
Все компоненты запускаются в Docker контейнерах:
```bash
# Запуск всех сервисов
docker-compose up -d
# Просмотр логов
docker-compose logs -f
# Остановка всех сервисов
docker-compose down
```
## 🔑 Конфигурация
### Telegram бот
Токен бота настраивается в `LichessClientTG_bot/config.py`:
```python
TELEGRAM_BOT_TOKEN = "YOUR_TOKEN_HERE"
```
### Lichess API
Для получения статистики по задачам нужен токен Lichess:
1. Зайдите на https://lichess.org/account/oauth/token/create
2. Создайте токен с правами на чтение
3. Используйте токен при добавлении игрока в боте
## 📊 API документация
Полная документация API доступна по адресу:
http://localhost:8001/docs
Включает:
- Swagger UI для интерактивного тестирования
- Описание всех endpoints
- Примеры запросов и ответов
## 🛠️ Разработка
### Локальная разработка
```bash
# API сервис
cd LichessWebServices
docker-compose up -d
# Telegram бот
cd LichessClientTG_bot
docker-compose up -d
# Веб-интерфейс
cd LichessWebView
docker-compose up -d
```
### Логи
```bash
# Логи API
docker logs lichesswebservices_lichess-api_1 -f
# Логи бота
docker logs lichess-telegram-bot -f
# Логи веб-интерфейса
docker logs lichess-web-view -f
```
## 📝 Лицензия
MIT
## 👤 Автор
Roman Vrubel
## 🔗 Полезные ссылки
- [Lichess API Documentation](https://lichess.org/api)
- [Telegram Bot API](https://core.telegram.org/bots/api)
- [FastAPI Documentation](https://fastapi.tiangolo.com/)