Files
WFL/README.md

6.2 KiB
Raw Blame History

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

📬 Контакты

Для доработок и улучшений --- пиши 👍