Skip to content

Тестовое задание Java+WebService #8

@ArtemBalakin

Description

@ArtemBalakin

Тестовое задание
Интеграция Minecraft-плагина с сервисом статистики
О чем задание
Нужно реализовать простую систему сбора игровой статистики с Minecraft-сервера и ее просмотра через веб-API.
В решении должно быть два компонента:
Minecraft-плагин Собирает игровую метрику и отправляет события во внешний сервис.
Веб-сервис Принимает метрики, сохраняет их и предоставляет API для получения статистики.

Часть 1. Minecraft-плагин
Необходимо создать плагин для Paper / Spigot, который:

  1. отслеживает убийства мобов игроками;
  2. ведет счетчик убийств для каждого игрока;
  3. отправляет информацию о каждом событии на внешний HTTP-сервис.

Дополнительные требования:

  1. адрес сервиса должен задаваться в конфигурации;
  2. HTTP-запросы должны выполняться асинхронно;
  3. ошибки отправки должны логироваться.

Часть 2. Веб-сервис
Необходимо реализовать сервис, который:

  1. принимает игровые метрики от плагина;
  2. валидирует входные данные;
  3. сохраняет их;
  4. предоставляет API для получения статистики.

Сервис должен поддерживать три основных сценария.

  1. Прием метрик
    API должно:
    принимать события от Minecraft-плагина;
    валидировать входные данные;
    сохранять информацию в базе данных.

  2. Получение статистики игрока
    API должно:
    принимать имя или идентификатор игрока;
    возвращать агрегированную статистику по его метрикам.

  3. Таблица лидеровAPI должно:возвращать список игроков;
    сортировать их по значению метрики;
    формировать рейтинг игроков.
    Формат запросов и ответов определяется самостоятельно.

Технологии
Рекомендуемый стек:
Java;
Paper / Spigot API;
Python;
любой Python-фреймворк для HTTP-сервиса;
любая реляционная или встроенная база данных.
Допускается использование других технологий, если выбор обоснован.

Что нужно сдать
МР в репозиторий, в котором должны быть:
исходный код Minecraft-плагина;
исходный код веб-сервиса;
README с инструкцией по запуску.

Будет плюсом

  1. Docker / docker-compose;
  2. тестов;
  3. документации API.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions