Разработать систему управления заказами в ресторане, которая поддерживает два типа пользователей: посетителей и администраторов. Система должна обрабатывать заказы в многопоточном режиме, позволяя клиентам добавлять блюда в заказ в реальном времени, а также отображать статусы заказов. Администраторы могут управлять меню, добавляя или удаляя блюда. Все решения должны соблюдать принципы ООП и SOLID, а также использовать шаблоны проектирования, где это уместно.
- Реализуйте систему аутентификации для двух типов пользователей: посетителей и администраторов.
- Администратор может добавлять и удалять блюда из меню, а также устанавливать их количество, цену и сложность выполнения (время, которое оно будет готовиться).
- Посетители могут составлять заказ, выбирая блюда из актуального меню.
- Заказы обрабатываются в отдельных потоках, симулируя процесс приготовления.
- Посетители могут добавлять блюда в существующий заказ, пока он находится в обработке.
- Посетители должны иметь возможность отменять заказ до того, как он будет готов.
- Система должна отображать актуальный статус заказа (например, "принят", "готовится", "готов").
- По завершению выполнения заказа посетитель должен иметь возможность его оплатить.
- Необходимо сохранять состояния программы: меню, сумму выручки, пользователей в системе, а также то, что вы посчитаете нужным.
- Применение принципов ООП и SOLID (0 – 1 балл)
- Аутентификация (0 – 1 балл)
- Использование шаблонов проектирования (0 – 1 балл)
- Хранение данных (0 – 1 балл)
- Реализация многопоточности для обработки заказов (0 – 2 балла)
- Codestyle (0 – 1 балл)
- readme с описанием того, как пользоваться программой, какие шаблоны были использованы в проекте и почему (0 – 0.5 балла)
- Понятный интерфейс (0 – 0.5 балла)
- Дать возможность клиентам оставлять отзывы о блюдах после оплаты заказа. Отзывы должны включать оценку от 1 до 5 и текстовый комментарий.
- Реализовать функционал, позволяющий администратору просматривать статистику по заказам и отзывам (например, самые популярные блюда, средняя оценка блюд, количество заказов за период).
- Система приоритетов для обработки заказов (вы должны сами решить, по какому принципу приоритезированы заказы, объяснив своё решение в readme).
- Штраф –3 балла за наличие ошибки во время выполнения кода
- Оценка снижается до 0, если программа не собирается (должен быть предоставлен полный код программы)
- Код должен быть загружен на удаленный Git-репозиторий с четкой структурой каталогов и созданным pull/merge request из ветки develop в пустую ветку main.
- Предусмотрено снижение оценки пропорционально объему невыполненных функциональных требований.
- Выполнять ДЗ можно на языках Kotlin или Java.
- Дедлайн сдачи: 10 марта, 23:59.
Lombok
Apache Freemaker
Thymeleaf
Java Mail Sender
JDBC API
Spring Data JPA
Spring Security
Spring Web
PostgreSQL Driver
Пользователь БД: postgres
Пароль от БД: postgres
docker-compose up -d
| src
|-- main
|---- java
|------ com.RestaurantManagementSystem
|-------- controlles <- "ручки" приложения.
|-------- models <- связь с БД.
|-------- repositories <- .
|-------- services <- CRUD-операции.
|-- test
-
Привести к норм кодстайлу;
-
Алфавитный порядок декораторов?
-
Makefile;
-
.env;
-
В Orders хранятся выполненные заказы. Заказы входят по принципу Stack'а FIFO.
-
Добавить логику для сжатия файлов.
- Сделать возможность смены почты и пароля;
- Сделать проверку по почте;