git clone https://gitlab.com/Asada_rain/fabrique.git
cd fabrique
Cкопировать содержимое .env.example
в файл .env
и указать зависмости
touch .env
cp example.env .env
docker compose up --build
Супер пользователь создается автоматически, нужно указать его параметры в файле .env
http://localhost:9090/
http://localhost:8000/admin/
- Организовать тестирование написанного кода
- Обеспечить автоматическую сборку/тестирование с помощью GitLab CI
- Подготовить docker-compose для запуска всех сервисов проекта одной командой
- Написать конфигурационные файлы (deployment, ingress, …) для запуска проекта в kubernetes и описать как их применить к работающему кластеру
- сделать так, чтобы по адресу /docs/ открывалась страница со Swagger UI и в нём отображалось описание разработанного API. Пример: https://petstore.swagger.io
- реализовать администраторский Web UI для управления рассылками и получения статистики по отправленным сообщениям
- обеспечить интеграцию с внешним OAuth2 сервисом авторизации для административного интерфейса. Пример: https://auth0.com
- реализовать дополнительный сервис, который раз в сутки отправляет статистику по обработанным рассылкам на email
- удаленный сервис может быть недоступен, долго отвечать на запросы или выдавать некорректные ответы. Необходимо организовать обработку ошибок и откладывание запросов при неуспехе для последующей повторной отправки. Задержки в работе внешнего сервиса никак не должны оказывать влияние на работу сервиса рассылок. - id рассылки - все логи по конкретной рассылке (и запросы на api и внешние запросы на отправку конкретных сообщений)
- реализовать отдачу метрик в формате prometheus и задокументировать эндпоинты и экспортируемые метрики
- реализовать дополнительную бизнес-логику: добавить в сущность "рассылка" поле "временной интервал", в котором можно задать промежуток времени, в котором клиентам можно отправлять сообщения с учётом их локального времени. Не отправлять клиенту сообщение, если его локальное время не входит в указанный интервал.
- обеспечить подробное логирование на всех этапах обработки запросов, чтобы при эксплуатации была возможность найти в логах всю информацию по
- id рассылки - все логи по конкретной рассылке (и запросы на api и внешние запросы на отправку конкретных сообщений)
- id сообщения - по конкретному сообщению (все запросы и ответы от внешнего сервиса, вся обработка конкретного сообщения)
- id клиента - любые операции, которые связаны с конкретным клиентом (добавление/редактирование/отправка сообщения/…)
Stack: Django
, DRF
, Postgres
, Celery
, Redis