Skip to content
This repository has been archived by the owner on Dec 15, 2024. It is now read-only.

Solution for the Championship of Russia

Notifications You must be signed in to change notification settings

one-zero-eight/hackathon-champ

Repository files navigation

ФСП Линк

Чемпионат России

Развернутый проект: https://fsp-link-portal.ru

Аккаунты:

- login: admin
  password: admin108

- login: tatarstan
  password: tatarstan108

Описание

ФСП Линк - это современная цифровая платформа, разработанная для управления спортивными соревнованиями и обеспечения информационной поддержки федераций. Наша цель - объединить все региональные федерации и общероссийскую федерацию в едином информационном пространстве.

Личный кабинет представителя региональной федерации:

  • Эффективная панель управления для просмотра важной информации о федерации
  • Создание и редактирование соревнований, в том числе загрузка результатов соревнований
  • Отправка заявок на включение мероприятий в общий календарь
  • Редактирование информации о федерации
  • Отправка запросов администратору
  • Реестр участников федерации
  • Аналитика по участникам и мероприятиям

Личный кабинет общероссийской федерации:

  • Удобная административная панель для управления всеми соревнованиями и федерациями
  • Просмотр и редактирование информации о региональных федерациях
  • Подтверждение или отклонение заявок на добавление региональных федераций
  • Просмотр и редактирование информации о соревнованиях
  • Подтверждение или отклонение заявок на включение мероприятий в общий календарь
  • Просмотр запросов от региональных федераций
  • Аналитика по региональным федерациям и соревнованиям
  • Реестр всех участников

Публичные страницы для всех пользователей:

  • Просмотр календаря соревнований
  • Просмотр дисциплин спортивного программирования
  • Просмотр информации обо всех региональных федерациях
  • Просмотр рейтинга участников соревнований

image

Архитектура сервиса

  • Используется база данных MongoDB для легкого горизонтального масштабирования.
  • Для хранения пользовательских файлов запускается MinIO, который позволит легко расширить хранилище при необходимости.
  • Сервер FastAPI запускается через менеджер процессов Gunicorn, который способен запускать несколько воркеров для обработки запросов, что позволяет обрабатывать большое количество запросов.
  • Модульная архитектура приложения позволяет легко добавлять новый функционал и улучшать существующий.
  • Фронтенд выполнен на React с декомпозицией на компоненты для удобства разработки и поддержки.
  • В качестве шлюза используется Nginx, который сможет обрабатывать большое количество запросов и распределять их между серверами при необходимости.

Architecture

Инструкция по локальному запуску

Протестировано на Ubuntu 22.04 с архитектурой amd64.

  1. Установить Docker и Docker Compose последней версии.
  2. Склонировать этот репозиторий.
    git clone https://github.com/hackathonsrus/pp_final_50040_pfo_ta_onezeroeight_69.git
    
  3. Перейти в папку с проектом.
    cd pp_final_50040_pfo_ta_onezeroeight_69
    
  4. Запустить базу данных.
    docker compose up -d db
    
  5. Загрузить дамп базы данных.
    docker compose exec db sh -c 'mongorestore "mongodb://$MONGO_INITDB_ROOT_USERNAME:$MONGO_INITDB_ROOT_PASSWORD@localhost:27017/db?authSource=admin" --drop /dump/db'
    
  6. Запустить проект:
    docker compose up -d --build
    
  7. Зайти на http://localhost:8000 в браузере.

Note

(Необязательно)

Для работы ИИ-агента нужно запустить Ollama. Рекомендуется использование видеокарты V100 32 GB или мощнее.

  • Установить Ollama
  • Скачать модель:
    ollama pull rscr/ruadapt_qwen2.5_32b:Q2_K_M
    
  • Запустить Ollama:
    ollama serve &
    

Note

(Необязательно)

Для активации отправки email-уведомлений необходимо отредактировать настройки backend/settings.docker.yaml:

smtp:
  host: smtp.yandex.ru
  port: 587
  username: [email protected]
  password: password

Note

(Необязательно)

Для запуска бота необходимо получить токен бота в Telegram и добавить его в файл .env в корне репозитория:

BOT_TOKEN=1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHI

Затем запустить бота:

docker compose up bot --build

Структура проекта

  • frontend - фронтенд на React (см. подробное Readme)
  • backend - бэкенд на FastAPI (см. подробное Readme)
  • parser - скрипты парсинга и полученные данные для загрузки в базу данных
  • bot - бот на Grammy (см. подробное Readme)
  • .github/workflows - GitHub Actions для автоматического деплоя на сервер

👥 Авторы

Команда one-zero-eight: