Сервис для отправления рассылки
Сервис для отправления рассылки.
Выполнены основные задания, кроме статистики сообщения из за отсуствия времени, потрачено около 5 часов. Статус сообщения меняется во время отправки, дальше логику статистики дописать будет легче.
Выполненные дополнительные задания:
5.сделать так, чтобы по адресу /docs/ открывалась страница со Swagger UI и в нём отображалось описание разработанного API. Пример: https://petstore.swagger.io
12.
обеспечить подробное логирование на всех этапах обработки запросов, чтобы при эксплуатации была возможность найти в логах всю информацию
Вроде ничего не забыл :)
- Клонировать данный репозиторий
git clone https://github.com/DakaRRR/ems_django_qr.git
- Зарузить библиотеки.
cd service pip install -r requirements.txt
- Пропишите данные в env файл, в данном формате:
BASE_URL=BASE_URL TOKEN=TOKEN
4.Создание и установка миграций и запуск локального серверва.
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
5.Перейти по локальному адресу.
Основное задание
Сущность "рассылка" имеет атрибуты: • уникальный id рассылки • дата и время запуска рассылки • текст сообщения для доставки клиенту • фильтр свойств клиентов, на которых должна быть произведена рассылка (код мобильного оператора, тег) • дата и время окончания рассылки: если по каким-то причинам не успели разослать все сообщения - никакие сообщения клиентам после этого времени доставляться не должны Сущность "клиент" имеет атрибуты: • уникальный id клиента • номер телефона клиента в формате 7XXXXXXXXXX (X - цифра от 0 до 9) • код мобильного оператора • тег (произвольная метка) • часовой пояс Сущность "сообщение" имеет атрибуты: • уникальный id сообщения • дата и время создания (отправки) • статус отправки • id рассылки, в рамках которой было отправлено сообщение • id клиента, которому отправили Спроектировать и реализовать API для: • добавления нового клиента в справочник со всеми его атрибутами • обновления данных атрибутов клиента • удаления клиента из справочника • добавления новой рассылки со всеми её атрибутами • получения общей статистики по созданным рассылкам и количеству отправленных сообщений по ним с группировкой по статусам • получения детальной статистики отправленных сообщений по конкретной рассылке • обновления атрибутов рассылки • удаления рассылки • обработки активных рассылок и отправки сообщений клиентам Логика рассылки • После создания новой рассылки, если текущее время больше времени начала и меньше времени окончания - должны быть выбраны из справочника все клиенты, которые подходят под значения фильтра, указанного в этой рассылке и запущена отправка для всех этих клиентов. • Если создаётся рассылка с временем старта в будущем - отправка должна стартовать автоматически по наступлению этого времени без дополнительных действий со стороны пользователя системы. • По ходу отправки сообщений должна собираться статистика (см. описание сущности "сообщение" выше) по каждому сообщению для последующего формирования отчётов. • Внешний сервис, который принимает отправляемые сообщения, может долго обрабатывать запрос, отвечать некорректными данными, на какое-то время вообще не принимать запросы. Необходимо реализовать корректную обработку подобных ошибок. Проблемы с внешним сервисом не должны влиять на стабильность работы разрабатываемого сервиса рассылок. API внешнего сервиса отправки Для интеграции с разрабатываемым проектом в данном задании существует внешний сервис, который может принимать запросы на отправку сообщений в сторону клиентов. OpenAPI спецификация находится по адресу: https://probe.fbrq.cloud/docs