Skip to content

Обработчик данных дилеров различных форматов на symfony.

Notifications You must be signed in to change notification settings

keJum/Dealer-Data-Processor

Repository files navigation

Dealer Data Processor

Обработчик данных дилеров различных форматов.

Возможности:

  • регистрация пользователй с подтверждением через электронную почту;
  • авторизация пользователей с различными ролями;
  • восстановление пароля;
  • управление пользователями через консоль;
  • обработка файлов формата xml, yaml, json и загрузка их в базу данных, следующим образом:
    • формат данных заводиться один раз;
    • возможны добавление или удаление полей, в случае если в выгрузке нет поля значит оно удаленно.

Используемые технологии:

  • PHP 7.4
  • Symfony 5.2
  • PHPUnit
  • RabbitMQ
  • Docker
  • Docker-compose
  • Git

Требования:

  • соблюдение принципов SOLID
  • использование паттерна Dependency Injection
  • код должен соблюдать PSR
  • документация Swagger
  • бизнес логика должна быть выделена в специальный сервисный слой Clear Architecture
  • в бизнес логике должен использоваться механизм наследования и обработки исключений
  • должен использоваться паттерн Repository
  • код должен быть задокументирован
  • авторизация должна происходить через JWT
  • для разворачивание должен использоваться docker, docker-compose
  • отправка писем должна быть асинхронной для этого требуется использовать RabbitMQ
  • поддержка XDebug
  • для отправки сообщений должен использоваться паттерн Observer

Разворачивание проекта

  1. Создать ключи для oauth2 в директории проекта docker/keys:
openssl genrsa -out private.key 2048 &&\
   openssl rsa -in private.key -pubout -out public.key
  1. Запустить контейнеры:
$ docker-compose up --build -d
  1. Выполнить установку зависимостей в контейнере php-fpm:
$ composer i
  1. Создать базу данных:
$ ./bin/console doctrine:database:create
  1. Выполнить миграции базы данных в контейнере php-fpm:
$ ./bin/console doctrine:migration:migrate
  1. Выполнить обновление базы данных для работы компонента авторизации
$ ./bin/console doctrine:schema:update --force
  1. Сгенерировать client_id и client_secret
$ ./bin/console trikoder:oauth2:create-client
  1. Запустить обработчик события для отправки писем
$ ./bin/console rabbitmq:consumer

Тестирование

  1. Развернуть окружение из раздела разворачивание проекта.

  2. Создать структуры для тестовой базы данных, выполнить из контейнера php-fpm:

$ php bin/console doctrine:schema:create
  1. Выполнить тесты
$ php vendor/bin/phpUnit

Документация

About

Обработчик данных дилеров различных форматов на symfony.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages