Этот проект представляет собой веб-сервис для подачи показаний счетчиков отопления, горячей и холодной воды. Показания можно подавать один раз в месяц. Ранее поданные показания редактировать запрещено. Последние поданные показания считаются актуальными. Пользователь может видеть только свои показания, администратор может видеть показания всех пользователей.
- Предусмотреть расширение перечня подаваемых показаний.
- Данные хранятся в памяти приложения.
- Приложение должно быть консольным (без использования Spring, взаимодействия с БД и т. д., только Java Core и коллекции).
- Регистрация пользователя.
- Авторизация пользователя.
- Аудит действий пользователя (авторизация, завершение работы, подача показаний, получение истории подачи показаний и т. д.).
- Репозитории теперь должны писать все сущности в БД PostgreSQL
- Идентификаторы при сохранении в БД должны выдаваться через sequence
- DDL-скрипты на создание таблиц и скрипты на предзаполнение таблиц должны выполняться только инструментом миграции Liquibase
- Скрипты миграции Liquibase должны быть написаны только в нотации XML
- Скриптов миграции должно быть несколько. Как минимум один на создание всех таблиц, другой - на предзаполнение данными
- Служебные таблицы должны быть в отдельной схеме
- Таблицы сущностей хранить в схеме public запрещено
- В тестах необходимо использовать test-containers
- В приложении должен быть docker-compose.yml, в котором должны быть прописаны инструкции для развертывания postgre в докере. Логин, пароль и база должны быть отличными от тех, что прописаны в образе по умолчанию. Приложение должно работать с БД, развернутой в докере с указанными параметрами.
- Приложение должно поддерживать конфиг-файлы. Всё что относится к подключению к БД, а также к миграциям, должно быть сконфигурировано через конфиг-файл
- Все взаимодействие должно осуществляться через отправку HTTP запросов
- Сервлеты должны принимать JSON и отдавать также JSON
- Использовать понятное именование эдпоинтов
- Возвращать разные статус-коды
- Добавить DTO(если раньше не было заложено)
- Для маппинга сущностей использовать MapStruct
- Реализовать валидацию входящих DTO
- Аудит переделать на аспекты
- Так же реализовать на аспектах выполнение любого метода(с замером времени выполнения)
- Сервлеты должны быть покрыты тестами
- Метод логина должен выдавать JWT, остальные методы должны быть авторизационными и валидировать JWT
- Система должна вести аудит действий пользователя, включая авторизацию, завершение работы, подачу показаний, получение истории подачи показаний и т. д.
Чтобы запустить приложение, выполните следующие шаги:
- Клонирование репозитория:
https://github.com/Best-Turner/Y_Lab-TestTask.git
- Запуск БД в докере:
docker-compose up
3. Запуск приложения:
-
Перейти в папку
`/target` -
Командой запустить приложение:
java -jar MonitoringService-1.0-SNAPSHOT.jar
Для тестирования приложения добавлено два пользователя:
| Пользователь | Логин | Пароль |
|---|---|---|
| Администратор | admin@mail.ru | 1234 |
| Пользователь | user@mail.ru | 1234 |
Старт программы(начальное меню)
Меню аутентификации
Меню администратора
Меню пользователя
Все пользователи. Доступно только для администратора
Получение подробной информации о пользователе. для администратора
Получить историю передачи данных




.jpg)
.jpg)
