Giter Site home page Giter Site logo

service_notification's Introduction

service_notification

Сервис для отправления рассылки

О проекте

Сервис для отправления рассылки. Выполнены основные задания, кроме статистики сообщения из за отсуствия времени, потрачено около 5 часов. Статус сообщения меняется во время отправки, дальше логику статистики дописать будет легче. Выполненные дополнительные задания: 5.сделать так, чтобы по адресу /docs/ открывалась страница со Swagger UI и в нём отображалось описание разработанного API. Пример: https://petstore.swagger.io image 12. обеспечить подробное логирование на всех этапах обработки запросов, чтобы при эксплуатации была возможность найти в логах всю информацию Вроде ничего не забыл :)

Установка

  1. Клонировать данный репозиторий
    git clone https://github.com/DakaRRR/ems_django_qr.git
  2. Зарузить библиотеки.
    cd service
    pip install -r requirements.txt
  3. Пропишите данные в 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

service_notification's People

Contributors

dakarrr avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.