Сервис для тех, кто зарабатывает на спортивной аналитике: собирает коэффициенты и статистику из открытых источников, считает по ним показатели, выгружает расчёты в Excel и сам находит события, подходящие под заданные условия.
Задача
Аналитик тратит основную часть времени не на анализ, а на сбор: коэффициенты в одном месте, турнирные таблицы в другом, история встреч в третьем, и всё это меняется на глазах. Расчёты при этом ведутся в Excel — с накопленными за годы формулами, которые никто не станет переписывать. Нужен сервис, который собирает данные сам, считает по тем же правилам и отдаёт результат в привычном файле.
Что делает
- Собирает коэффициенты и статистику по расписанию из нескольких источников: Фонбет, Марафон, Винлайн, Лига Ставок. Сводит данные к единой структуре, расхождения между источниками видны в интерфейсе.
- Считает производные показатели по матчу: расчётные исходы, отклонения, матрицы вероятностей.
- Ищет события по настраиваемым фильтрам: вид спорта, лига, дата, диапазоны показателей.
- Ведёт избранное и присылает уведомления в Telegram, когда по отслеживаемому событию меняются условия.
- Показывает разбор матча от ИИ-ассистента: оценка вероятностей и краткий вывод с обоснованием.
- Административная часть: справочники видов спорта, стран, лиг и команд, управление источниками и прокси, статистика ставок, системные журналы, учёт оплаты серверов.
Работа с Excel
Отдельная и самая трудоёмкая часть проекта. Аналитические модели живут в книгах Excel, и сервис работает с ними в обе стороны.
- Разбор загруженных книг. Сервис читает файл, определяет структуру листов, находит нужные диапазоны и вытягивает данные вместе с формулами, а не только с посчитанными значениями.
- Генерация книг из расчётов. Сервис собирает выгрузку программно: листы, именованные диапазоны, формулы со ссылками между листами, условное форматирование, закрепление областей. Файл открывается в Excel и пересчитывается штатно, без предупреждений о повреждении.
- Сохранение формул. Главное требование: формулы должны остаться формулами. Значения пересчитываются при изменении исходных данных, поэтому аналитик продолжает работать в своей модели, а не в выгрузке чисел.
- Совместимость. Сервис учитывает различия версий, локали разделителей и особенности пересчёта — файл ведёт себя одинаково в Excel и в свободных редакторах таблиц.
Как устроено
- Бэкенд на PHP, очереди для фонового сбора и пересчёта, планировщик задач.
- PostgreSQL как хранилище, Redis для кеша и очередей.
- Сбор данных вынесен в отдельные процессы с ротацией прокси и обработкой блокировок — источники ограничивают частоту запросов.
- Генерация и разбор Excel вынесены в очередь: книги с большим числом формул собираются секундами, и держать на этом веб-запрос нельзя.
- Разбор матча языковой моделью идёт фоновой задачей с кешированием результата: повторный просмотр карточки не тратит запрос.
- Фронтенд на Vue 3 и Vite, интерфейс на русском.
- Ролевая модель: аналитик видит расчёты, администратор — источники, справочники и служебные разделы.
Стек
PHP, PostgreSQL, Redis, очереди, Vue 3, Vite, Element Plus, Docker, работа с Excel, интеграция с языковой моделью.
О демонстрации
По ссылке открывается кабинет с правами администратора: дашборд, матчи с фильтрами, карточка события с расчётами и прогнозом ассистента, справочники, источники, статистика и служебные разделы.
Это демонстрационная копия — данные вымышленные, обращений к серверу нет. Выгрузки в Excel здесь нет: рабочие книги с моделями расчётов не публикуются.