Управление прачечной самообслуживания (1.0.0)

Описание

Приложение, решающее задачу по управлению списком с данными.

Данные

Приложение считывает все данные из соответствующих CSV-файлов (разделитель – запятая) при старте приложения.

Список оборудования

Имя файла с исходными данными передаётся приложению с ключом --machines-file

Id,Title,Type,StartDateTime,Condition,Capacity,Price,Duration,Launderette
cf52ee99-f7d7-46d6-8e88-8137b99346e8,Стиральная машина Maytag 3RMTW 4905 TW,Стиральная машина,2024-01-02T00:00:00,true,8,300,45,24f43805-83e9-4687-bb52-c643bc93ec3b
a82eaf91-c83e-4819-991f-9175719a8ff1,Стиральная машина Maytag 3RMTW 4905 TW,Стиральная машина,2024-01-03T00:00:00,true,8,300,45,24f43805-83e9-4687-bb52-c643bc93ec3b
7c580384-403c-4664-9f94-66b40f75a724,Стиральная машина Maytag 3RMTW 4905 TW,Стиральная машина,2024-01-04T00:00:00,true,8,300,45,24f43805-83e9-4687-bb52-c643bc93ec3b
6c243167-63fc-47b8-ab8b-4db17c2f1d81,Стиральная машина Haier HCW12C,Стиральная машина,2024-01-05T00:00:00,true,12,350,55,24f43805-83e9-4687-bb52-c643bc93ec3b
657c2450-b03e-46f2-8d16-75fd14f47c6a,Стиральная машина Haier HCW12C,Стиральная машина,2024-01-06T00:00:00,false,12,350,55,24f43805-83e9-4687-bb52-c643bc93ec3b
6c2cea57-d99b-4356-98e1-c04899fe057b,Сушильная машина Haier HCD12C,Сушильная машина,2024-01-07T00:00:00,true,12,100,30,
32d9d122-26cf-47f0-b047-862ad4b68d3b,Сушильная машина Haier HCD12C,Сушильная машина,2024-01-08T00:00:00,true,12,100,30,

Список прачечных

Имя файла с исходными данными передаётся приложению с ключом --launderettes-file

Id,Address,PhoneNumber,WorkingHours
24f43805-83e9-4687-bb52-c643bc93ec3b,"город N, улица M, 13","+7 (999) 999-99-99","с 9.00 до 21.00. Без выходных"

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

Приложение запускается с помощью системы сборки Gradle, обязательные параметры:

  • --machines-file – имя файла со списком оборудования
  • --launderettes-file – имя файла со списком прачечных
  • --port – порт, по которому доступен веб-сервер
./gradlew run --args="--machines-file ../sample-data/machines.csv --launderettes-file ../sample-data/launderettes.csv --port 9000"

Веб-сервер запускается и работает только при получении корректных значений всех параметров. При некорректном значении хотя бы одного параметра приложение выводит соответствующее сообщение об ошибке и завершает работу с ненулевым кодом возврата.

Error: missing option --machines-file
Error: file not found «abc.csv»

Базовые маршруты

Маршруты проверки работоспособности веб-сервера

Проверка, запущен ли веб-сервер

Маршрут обязательно должен быть реализован, при отсутствии приложение не будет проверяться.

Responses

Оборудование

Методы, связанные со списком оборудования

Получение списка оборудования

Список упорядочен по возрастанию даты и времени начала эксплуатации и id.

query Parameters
page
integer >= 1
Default: 1
Example: page=1

Номер страницы.

Если номер превышает максимально возможный, приложение возвращает пустой список.

Если номер передан и не является натуральным числом, приложение возвращает сообщение об ошибке.

records-per-page
integer
Default: 10
Enum: 5 10 20 50
Example: records-per-page=10

Количество записей на странице.

Если количество передано и не входит в указанный набор значений, приложение возвращает сообщение об ошибке.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Получение информации об оборудовании

path Parameters
machine-id
required
string <UUID>
Example: cf52ee99-f7d7-46d6-8e88-8137b99346e8

Идентификатор оборудования

Responses

Response samples

Content type
application/json
{
  • "Id": "cf52ee99-f7d7-46d6-8e88-8137b99346e8",
  • "Title": "Стиральная машина Maytag 3RMTW 4905 TW",
  • "Type": "Стиральная машина",
  • "StartDateTime": "2024-01-01T00:00:00",
  • "Condition": true,
  • "Capacity": 8,
  • "Price": 300,
  • "Duration": 60,
  • "LaunderetteAddress": "город N, улица M, 13"
}

Статистика по типу оборудования

В выдаче должны присутствовать только те типы оборудования, которые есть в списке данных.

Список упорядочен лексикографически по типу оборудования.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Статистика по сроку эксплуатации

Срок эксплуатации оборудования – разница между переданными моментом времени и началом эксплуатации.

Для корректной работы рекомендуется сравнивать даты с помощью методов minusMonths/plusMonths, minusYears/plusYears

Список должен содержать только те пункты, для которых есть данные.

query Parameters
now
required
string <date-time>
Example: now=2026-01-01T00:00:00

Момент времени, для которого рассчитывается статистика

Responses

Response samples

Content type
application/json
{
  • "Пора менять": 2,
  • "Изношено": 1,
  • "Работает": 5,
  • "Новое": 3
}

Прачечные

Методы, связанные со списком прачечных

Получение информации о прачечной

path Parameters
launderette-id
required
string <UUID>
Example: 24f43805-83e9-4687-bb52-c643bc93ec3b

Идентификатор прачечной

Responses

Response samples

Content type
application/json
{
  • "Id": "24f43805-83e9-4687-bb52-c643bc93ec3b",
  • "Address": "город N, улица M, 13",
  • "PhoneNumber": "+7 (999) 999-99-99",
  • "WorkingHours": "с 9.00 до 21.00. Без выходных"
}

Подбор оборудования прачечной по весу и бюджету

Подбор списка исправных стиральных машин прачечной, в которые можно загрузить указанный вес и использование стоит не больше указанного бюджета.

Список упорядочен по возрастанию стоимости, возрастанию длительности цикла и id.

path Parameters
launderette-id
required
string <UUID>
Example: 24f43805-83e9-4687-bb52-c643bc93ec3b

Идентификатор прачечной

query Parameters
weight
required
number <double> > 0
Example: weight=5.23

Вес (кг)

budget
required
integer > 0
Example: budget=300

Бюджет (руб)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Оборудование (Machine)

Id
string <UUID>

Уникальный идентификатор оборудования

Title
string

Наименование оборудования

Type
string (Machine-type)
Enum: "Стиральная машина" "Сушильная машина"

Тип оборудования

StartDateTime
string <date-time>

Начало эксплуатации

Condition
boolean

Исправность оборудования

Capacity
number <double> > 0

Максимальная вместимость (кг)

Price
integer >= 0

Стоимость использования (руб)

Duration
integer > 0

Длительность цикла (мин)

Launderette
string or null <UUID>

Прачечная, в которой установлено оборудование (Launderette→Id)

{
  • "Id": "cf52ee99-f7d7-46d6-8e88-8137b99346e8",
  • "Title": "Стиральная машина Maytag 3RMTW 4905 TW",
  • "Type": "Стиральная машина",
  • "StartDateTime": "2024-01-01T00:00:00",
  • "Condition": true,
  • "Capacity": 8,
  • "Price": 300,
  • "Duration": 60,
  • "Launderette": "24f43805-83e9-4687-bb52-c643bc93ec3b"
}

Прачечная (Launderette)

Id
string <UUID>

Уникальный идентификатор прачечной

Address
string

Адрес прачечной

PhoneNumber
string

Телефон

WorkingHours
string

Режим работы

{
  • "Id": "24f43805-83e9-4687-bb52-c643bc93ec3b",
  • "Address": "город N, улица M, 13",
  • "PhoneNumber": "+7 (999) 999-99-99",
  • "WorkingHours": "с 9.00 до 21.00. Без выходных"
}