Skip to content

aksvitpav/se_school_test

Repository files navigation

Software Engineering School 4.0 // Кейс

Виконавець: Vitaly Aksonov

Встановлення

  1. Клонуйте репозиторій:

    git clone https://github.com/aksvitpav/se_school_test.git
    cd se_school_test
  2. Налаштуйте файл середовища:

    Скопіюйте .env.example у .env:

    cp .env.example .env
  3. Запуск проєкта в docker compose:

    docker compose up -d

    Якщо Ви робите це вперше після клонування репозиторію, то треба дочекатися встановлення залежностей проєкту (в цей час API повертає помилку 502)

  4. Доступ до проєкту за адресою: http://localhost:8000

Опис логіки

Цей проєкт реалізує систему отримання поточного курсу USD та щоденне інформування про курс USD за допомогою email сповіщень. Основні функції включають:

  • Отримання поточного значення курсу продажу/купівлі USD: Використовується API PrivatBank. Кожні 15хв. сервіс отримує з API поточний курс купівлі/продажу валют (USD та EUR). До БД зберігається курс купівлі/продажу USD. Якщо попереднє значення курсу валют таке ж саме, як і отримане - система оновлює в БД лише дату отримання (fetched_at).
  • Видалення застарілих значень курсу продажу/купівлі USD: кожного дня система о 00:00 видаляє записи, що старіші за 2 доби.
  • Отримання поточного курсу: Роут GET /api/rate дає змогу отримати поточний курс купівлі/продажу USD.
  • Підписання email: Роут POST /api/subscribe дає змогу підписати email для отримання листів з поточним курсом купівлі/продажу USD. Кожну годину система перевіряє підписантів, які не отримали email сповіщень у поточну добу, формує список, для кожного з них створює задачу в чергу на відправку такого листа. Якщо лист було відправлено успішно - відповідний адресат у полі emailed_at отримає дату останньої відправки листа. Таким чином, якщо при відправці листа сталася помилка, через годину адресату знову система спробує надіслати листа.

Документація API

Документація API доступна для перегляду за адресою /api/documentation.

Тести

Проєкт містить тести для забезпечення стабільності та коректної роботи системи. Щоб запустити тести, виконайте команду:

php artisan test

About

Test task for Software Engineering School 4.0

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published