SquadStatDB - база данных для управления статистикой игроков онлайн-игры.
Управление информацией о пользователях, статистике и достижениях в рамках конкретной видеоигры. Сбор и предоставление информации в виде отдельных "глобальных" значениях (количество наигранных часов, количество боёв и побед, и т.д.) и временных рядов в виде истории всех сессий(победил ли игрок в ней, сколько в ней у него убийств/смертей/помощи). Для каждой сессии список использованного вооружения и статистика для каждого из них.
Таблица хранит информацию о игроке его персональные данные и значения глобально статистики, обновляемые после каждой сессии.
- steamid64: Уникальный, строка длиной 17 символов.
- player_name: Строка не более 50 символов.
- email: Уникальный, строка не более 100 символов, соответствие формату электронной почты.
- total_kills, total_deaths, total_assists, total_wins, total_battles: Целые числа, неотрицательные.
- kd, winrate: Числа с плавающей точкой, неотрицательные.
Таблица хранит список видов вооружения, доступных в игре.
- weapon_name: Строка не более 50 символов.
Таблица хранит список карт, доступных в игре.
- map_name: Строка не более 50 символов.
Таблица хранит значения всех игровых сессий для всех игроков.
- player_id: Ссылка на steamid64 из таблицы "players".
- session_date: Дата и время завершения сессии.
- map_name: Ссылка на map_name из таблицы "maps".
- total_kills, total_deaths, total_assists: Целые числа, неотрицательные.
- is_win: Булево значение.
Таблица хранит статистику использованного оружия для каждой сессии.
- session_id: Ссылка на session_id из таблицы "game_sessions".
- weapon_name: Ссылка на weapon_name из таблицы "weapon_types".
- kills: Целое число, неотрицательное.
- Пара (session_id, weapon_id) уникальна.
- Внешние ключи в таблицах "game_sessions" и "session_weapons" обеспечивают связь с соответствующими записями в других таблицах.
- Уникальность значений в полях "email" (в таблице "players") и "session_id, weapon_name" (в таблице "session_weapons").
- Значения в полях "steamid64" (в таблице "players") и "player_id" (в таблице "game_sessions") должны соответствовать значениям внешнего ключа.
-
Администратор
- Ответственность: Управление всеми аспектами базы данных.
- Количество пользователей: 1
-
Сборщик статистики
- Ответственность: сбор статистики после каждой игровой сессии
- Количество пользователей: 1 ( один сервис, собирающий статистику)
-
Аналитик
- Ответственность: Анализ данных, создание отчетов.
- Количество пользователей: 1 ( один сервис, предоставляющий нужную статистику по запросу)
API: RESTfull API для взаимодействия с данными. Включает в себя следующие методы:
- Создание нового игрока (требует авторизации).
- Добавление новых сессий игроку (требует авторизации).
- Получение обзорной статистики игрока с возможностью выбора временного промежутка.
- Получение полного списка сессий игрока с возможностью выбора временного промежутка.
- Получение полной статистики использованного вооружения игрока с возможностью выбора временного промежутка.
- Получение лидербордов по различным параметрам статистики.
Подробное техническое описание каждого метода можно получить в свагере приложения по ссылке: http://localhost:8002/docs/
- Python
- Модуль sqlalchemy
- PostgreSQL
- Модульное тестирование: Использование фреймворка для тестирования Python, например,
unittest
. - Интеграционное тестирование: Проверка взаимодействия компонентов базы данных.
- Системное тестирование: Проверка функциональности базы данных в целом.
- для сборки и запуска контейнера используется команда
docker-compose up -d --build