Есть такие тестовые, которые дочитать до конца – уже подвиг 🌚 А сделают его только самые упоротные 👇🏻

💳В Авито предлагали реализовать микросервис для работы с балансом пользователей (зачисление средств, списание средств, перевод средств от пользователя к пользователю, а также метод получения баланса пользователя). Сервис должен предоставлять HTTP API и принимать/отдавать запросы/ответы в формате JSON.

✍🏻Сценарии использования Далее описаны несколько упрощенных кейсов приближенных к реальности. 1️⃣ Сервис биллинга с помощью внешних мерчантов (аля через visa/mastercard) обработал зачисление денег на наш счет. Теперь биллингу нужно добавить эти деньги на баланс пользователя. 2️⃣ Пользователь хочет купить у нас какую-то услугу. Для этого у нас есть специальный сервис управления услугами, который перед применением услуги проверяет баланс и потом списывает необходимую сумму. 3️⃣ В ближайшем будущем планируется дать пользователям возможность перечислять деньги друг-другу внутри нашей платформы. Мы решили заранее предусмотреть такую возможность и заложить ее в архитектуру нашего сервиса.

❕Требования к коду 🔸Фреймворки и библиотеки можно использовать любые 🔸Реляционная СУБД: MySQL или PostgreSQL 🔸Весь код должен быть выложен на Github с Readme файлом с инструкцией по запуску и примерами запросов/ответов (можно просто описать в Readme методы, можно через Postman, можно в Readme curl запросы скопировать, вы поняли идею...) 🔸Если есть потребность, можно подключить кеши (Redis) и/или очереди (RabbitMQ, Kafka) 🔸При возникновении вопросов по ТЗ оставляем принятие решения за кандидатом (в таком случае Readme файле к проекту должен быть указан список вопросов с которыми кандидат столкнулся и каким образом он их решил) 🔸Разработка интерфейса в браузере НЕ ТРЕБУЕТСЯ. 🔸Взаимодействие с API предполагается посредством запросов из кода другого сервиса. Для тестирования можно использовать любой удобный инструмент. Например: в терминале через curl или Postman.

➕Будет плюсом ▫️Использование docker и docker-compose для поднятия и развертывания dev-среды. ▫️Методы АПИ возвращают человеко-читабельные описания ошибок и соответствующие статус коды при их возникновении. ▫️Написаны unit/интеграционные тесты.

✔️Основное задание (минимум) 🔹Метод начисления средств на баланс. Принимает id пользователя и сколько средств зачислить. 🔹Метод списания средств с баланса. Принимает id пользователя и сколько средств списать. 🔹Метод перевода средств от пользователя к пользователю. Принимает id пользователя с которого нужно списать средства, id пользователя которому должны зачислить средства, а также сумму. 🔹Метод получения текущего баланса пользователя. Принимает id пользователя. Баланс всегда в рублях.

Думаете это всё? Продолжение ниже 👇🏻

#тестовое |🍩 Поддержать канал 🫶