Приложение считывает все данные из соответствующих 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»
Список упорядочен по возрастанию даты и времени начала эксплуатации и id.
| page | integer >= 1 Default: 1 Example: page=1 Номер страницы. Если номер превышает максимально возможный, приложение возвращает пустой список. Если номер передан и не является натуральным числом, приложение возвращает сообщение об ошибке. |
| records-per-page | integer Default: 10 Enum: 5 10 20 50 Example: records-per-page=10 Количество записей на странице. Если количество передано и не входит в указанный набор значений, приложение возвращает сообщение об ошибке. |
[- {
- "Id": "cf52ee99-f7d7-46d6-8e88-8137b99346e8",
- "Title": "Стиральная машина Maytag 3RMTW 4905 TW",
- "Condition": true
}
]| machine-id required | string <UUID> Example: cf52ee99-f7d7-46d6-8e88-8137b99346e8 Идентификатор оборудования |
{- "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"
}В выдаче должны присутствовать только те типы оборудования, которые есть в списке данных.
Список упорядочен лексикографически по типу оборудования.
[- {
- "Type": "Стиральная машина",
- "Count": 3,
- "CountServiceable": 2,
- "CapacityStatistics": [
- {
- "Capacity": 8,
- "CountServiceable": 2,
- "Price": 300
}
]
}
]Срок эксплуатации оборудования – разница между переданными моментом времени и началом эксплуатации.
Для корректной работы рекомендуется сравнивать даты с помощью методов minusMonths/plusMonths, minusYears/plusYears
Список должен содержать только те пункты, для которых есть данные.
| now required | string <date-time> Example: now=2026-01-01T00:00:00 Момент времени, для которого рассчитывается статистика |
{- "Пора менять": 2,
- "Изношено": 1,
- "Работает": 5,
- "Новое": 3
}| launderette-id required | string <UUID> Example: 24f43805-83e9-4687-bb52-c643bc93ec3b Идентификатор прачечной |
{- "Id": "24f43805-83e9-4687-bb52-c643bc93ec3b",
- "Address": "город N, улица M, 13",
- "PhoneNumber": "+7 (999) 999-99-99",
- "WorkingHours": "с 9.00 до 21.00. Без выходных"
}Подбор списка исправных стиральных машин прачечной, в которые можно загрузить указанный вес и использование стоит не больше указанного бюджета.
Список упорядочен по возрастанию стоимости, возрастанию длительности цикла и id.
| launderette-id required | string <UUID> Example: 24f43805-83e9-4687-bb52-c643bc93ec3b Идентификатор прачечной |
| weight required | number <double> > 0 Example: weight=5.23 Вес (кг) |
| budget required | integer > 0 Example: budget=300 Бюджет (руб) |
[- {
- "Id": "cf52ee99-f7d7-46d6-8e88-8137b99346e8",
- "Title": "Стиральная машина Maytag 3RMTW 4905 TW",
- "Capacity": 8,
- "Price": 300,
- "Duration": 60
}
]| 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> Прачечная, в которой установлено оборудование ( |
{- "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"
}| 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. Без выходных"
}