Files
WFL/README.md

231 lines
6.2 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.

# ⚽ Match Management & vMix Integration System
Полноценная система управления футбольными матчами с live-обновлением,
парсингом данных и интеграцией с vMix.
------------------------------------------------------------------------
# 📌 Описание
Проект состоит из нескольких ключевых частей:
- FastAPI сервер (админка + API)
- Scheduler (live-обновления матчей)
- Парсеры (игры, расписание, таблица)
- PostgreSQL база данных
- WebSocket сервер для vMix
------------------------------------------------------------------------
# 🧱 Архитектура системы
┌──────────────┐
│ Scheduler │
│ │
│ matches_loop │
│ standings │
└──────┬───────┘
┌──────────────┼──────────────┐
│ │ │
▼ ▼ ▼
live_match_worker parser_game parser_standings
Database
FastAPI
vMix
------------------------------------------------------------------------
# 🗄 Структура базы данных
## Таблица: matches
Поле Тип Описание
------------- ----------- ----------------------
id int ID матча
external_id text ID матча на сайте
match_date timestamp дата и время
status text статус матча
home_score int счет хозяев
away_score int счет гостей
updated_at timestamp последнее обновление
------------------------------------------------------------------------
## Таблица: standings
Поле Тип Описание
---------- ----- ----------
team_id int команда
position int позиция
points int очки
played int сыграно
------------------------------------------------------------------------
## Таблица: match_lineup_players
- составы команд
- старт + запас
------------------------------------------------------------------------
## Таблица: match_events
- события матча (голы, карточки и т.д.)
------------------------------------------------------------------------
# 🔄 Основные процессы
## 1. Scheduler
Работает как отдельный процесс:
### Каждую минуту:
- ищет матчи на сегодня
- запускает worker за 1 минуту до начала
### Worker:
- раз в минуту:
- парсит сайт
- обновляет счет и статус
- останавливается при finished
------------------------------------------------------------------------
## 2. Обновление турнирной таблицы
- вызывается `parser_standings`
- обновляет standings в БД
- запускается раз в минуту
------------------------------------------------------------------------
## 3. FastAPI
Обеспечивает:
- админку
- API для vMix
- WebSocket соединения
------------------------------------------------------------------------
# 📡 API Endpoints
## Основные
### Матчи
- GET /admin/matches
- GET /admin/session/{session_token}
------------------------------------------------------------------------
### vMix
- GET /vmix/session/{session_token}/info
- GET /vmix/session/{session_token}/standings
- GET /vmix/session/{session_token}/schedule
- GET /vmix/session/{session_token}/scoreboard
------------------------------------------------------------------------
### WebSocket
/ws/vmix-client
Функции: - регистрация клиентов - heartbeat - отправка команд
------------------------------------------------------------------------
# ⚙️ Запуск проекта
## 1. Установка
pip install -r requirements.txt
------------------------------------------------------------------------
## 2. Настройка БД
Отредактировать:
db.py
------------------------------------------------------------------------
## 3. Запуск
### API
uvicorn app:app --reload
### Scheduler
python scheduler.py
------------------------------------------------------------------------
# ❗ ВАЖНО
Scheduler должен запускаться отдельно.
НЕЛЬЗЯ:
run_scheduler()
внутри FastAPI.
------------------------------------------------------------------------
# 🔧 Что нужно реализовать
## fetch_match_live_data()
def fetch_match_live_data(match_row):
return {
"status": "live",
"home_score": 1,
"away_score": 0
}
------------------------------------------------------------------------
# 🚀 Рекомендации
- запускать scheduler отдельно
- использовать 1 worker для API
- добавить логирование
- обрабатывать ошибки парсинга
------------------------------------------------------------------------
# 📌 Dev режим
uvicorn app:app --reload
python scheduler.py
------------------------------------------------------------------------
# 🧠 Production
- API отдельно
- Scheduler отдельно
- supervisor / systemd
------------------------------------------------------------------------
# 📬 Контакты
Для доработок и улучшений --- пиши 👍