Тестовое задание для кандидатов-разработчиков
Необходимо разработать сервис управления рассылками API администрирования и получения статистики.
Нам нужно настроить приложение для правильной работы.
Чтобы безопасно взаимодействовать с проектом, нам нужно добавить несколько переменных среды в файл .env.
DB_NAME
DB_USERNAME
DB_PASSWORD
BASE_URL
TOKEN
Нужные ключи вы можете найти у автора проекта.
Для запуска проекта вам необходимо установить docker
, после чего написать команду в командной строке в папке проекта
docker build .
docker-compose run --rm app sh -c "python manage.py makemigrations"
docker-compose up --build
Откройте http://localhost:8000, чтобы просмотреть проект его в браузере.
Команда docker-compose up --build
запускает проект с миграцией. Все необходимые зависимости проекта прописаны в файле requirements.txt.
Полную документацию проекта можно посмотреть запустив проект и перейти по http://localhost:8000/api/docs/. URL откроет документацию в Swagger UI.
Основные endpoints по проекту с методами GET
, POST
, PUT
, PATCH
и DELETE
http://127.0.0.1:8000/api/docs/#/
- документация проекта
http://127.0.0.1:8000/notification/clients/
- для просмотра списка клиентов и создание нового клиентаhttp://127.0.0.1:8000/notification/clients/{id}/
- для просмотра детали клиента, обновление его данных или удаление
http://127.0.0.1:8000/notification/distributions/
- для просмотра списка рассылок и создание новой рассылкиhttp://127.0.0.1:8000/notification/distributions/{id}/
- для просмотра детали рассылки, обновление его данных или удаление
-
http://127.0.0.1:8000/notification/messages/
- для просмотра списка сообщений и создание нового сообщения -
http://127.0.0.1:8000/notification/messages/{id}/
- для просмотра детали сообщения, обновление его данных или удаление
-
http://127.0.0.1:8000/admin/
- страница админа -
http://127.0.0.1:3000/
- страница smtp4dev
Для выполнение логики рассылки в пути notification/tasks.py
создал метод send_distribution
, который отвечает на отправку рассылки. Для того чтобы рассылка было отправление после создание нового объекта, использовал signals
в django
, в частности post_save
методом distribution_post_save
, который находиться в пути notification/signals.py
.
Из методов дополнительных задач, для того чтобы отправить статистику по обработанным рассылкам на email создал метод send_report
в пути notification/tasks.py
, который в 12:00 каждый день автоматически отправляет сообщение с помощью celery-beat
на email через сервер для разработки smtp4dev
.
- Подготовить docker-compose для запуска всех сервисов проекта одной командой
- Сделать так, чтобы по адресу /docs/ открывалась страница со Swagger UI и в нём отображалось описание разработанного API. Пример: https://petstore.swagger.io
- Реализовать администраторский Web UI для управления рассылками и получения статистики по отправленным сообщениям
- Реализовать дополнительный сервис, который раз в сутки отправляет статистику по обработанным рассылкам на email