Giter Site home page Giter Site logo

squadstat's Introduction

Описание

Наименование

SquadStatDB - база данных для управления статистикой игроков онлайн-игры.

Предметная область

Управление информацией о пользователях, статистике и достижениях в рамках конкретной видеоигры. Сбор и предоставление информации в виде отдельных "глобальных" значениях (количество наигранных часов, количество боёв и побед, и т.д.) и временных рядов в виде истории всех сессий(победил ли игрок в ней, сколько в ней у него убийств/смертей/помощи). Для каждой сессии список использованного вооружения и статистика для каждого из них.

Данные

Таблица "players"

Таблица хранит информацию о игроке его персональные данные и значения глобально статистики, обновляемые после каждой сессии.

  • steamid64: Уникальный, строка длиной 17 символов.
  • player_name: Строка не более 50 символов.
  • email: Уникальный, строка не более 100 символов, соответствие формату электронной почты.
  • total_kills, total_deaths, total_assists, total_wins, total_battles: Целые числа, неотрицательные.
  • kd, winrate: Числа с плавающей точкой, неотрицательные.

Таблица "weapon_types"

Таблица хранит список видов вооружения, доступных в игре.

  • weapon_name: Строка не более 50 символов.

Таблица "maps"

Таблица хранит список карт, доступных в игре.

  • map_name: Строка не более 50 символов.

Таблица "game_sessions"

Таблица хранит значения всех игровых сессий для всех игроков.

  • player_id: Ссылка на steamid64 из таблицы "players".
  • session_date: Дата и время завершения сессии.
  • map_name: Ссылка на map_name из таблицы "maps".
  • total_kills, total_deaths, total_assists: Целые числа, неотрицательные.
  • is_win: Булево значение.

Таблица "session_weapons"

Таблица хранит статистику использованного оружия для каждой сессии.

  • 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
  2. Сборщик статистики

    • Ответственность: сбор статистики после каждой игровой сессии
    • Количество пользователей: 1 ( один сервис, собирающий статистику)
  3. Аналитик

    • Ответственность: Анализ данных, создание отчетов.
    • Количество пользователей: 1 ( один сервис, предоставляющий нужную статистику по запросу)

API

API: RESTfull API для взаимодействия с данными. Включает в себя следующие методы:

  • Создание нового игрока (требует авторизации).
  • Добавление новых сессий игроку (требует авторизации).
  • Получение обзорной статистики игрока с возможностью выбора временного промежутка.
  • Получение полного списка сессий игрока с возможностью выбора временного промежутка.
  • Получение полной статистики использованного вооружения игрока с возможностью выбора временного промежутка.
  • Получение лидербордов по различным параметрам статистики.

Подробное техническое описание каждого метода можно получить в свагере приложения по ссылке: http://localhost:8002/docs/

Технологии разработки

Язык программирования

  • Python

Инструмент для взаимодействия с СУБД

  • Модуль sqlalchemy

СУБД

  • PostgreSQL

Тестирование

  • Модульное тестирование: Использование фреймворка для тестирования Python, например, unittest.
  • Интеграционное тестирование: Проверка взаимодействия компонентов базы данных.
  • Системное тестирование: Проверка функциональности базы данных в целом.

Запуск приложения

  • для сборки и запуска контейнера используется команда docker-compose up -d --build

squadstat's People

Contributors

hanbinger avatar

Watchers

 avatar

Forkers

amcp-pit

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.