Тестовое задание
Необходимо реализовать сервис CO со следующим функционалом на языке C#, используя .NET 8.
Требования к базе данных (PostgreSQL):
-
Таблица currency
- id: первичный ключ
- name: название валюты
- rate: курс валюты к рублю
-
Таблица user
- id: первичный ключ
- name: имя пользователя
- password: пароль пользователя
Пользователь заинтересован только в определенном наборе валют (favorites).
Задачи:
- Архитектура: Использование подхода Clean Architecture. Возможность использования или отсутствия DDD (Domain Driven Design) — непринципиально.
- Микросервис миграции базы данных: Реализовать механизм миграции для структурирования и изменения схемы базы данных.
- Фоновый сервис: Создать фоновый сервис, обращающийся по адресу http://www.cbr.ru/scripts/XML_daily.asp и наполняющий таблицу currency актуальными данными о курсах валют.
- Микросервис пользователей: Реализовать регистрацию, вход и выход пользователей.
- Микросервис финансов: Предоставление актуальной информации о курсах валют для каждого пользователя, основываясь на списке выбранных валют (favorites).
- Авторизация: Реализовать систему аутентификации и авторизации на основе токенов JWT.
- API Gateway: Разработать шлюз API для интеграции всех микросервисов.
- Модуль тестирования: Провести модульное тестирование компонентов сервиса для пользователя и финансового модуля. Фоновый сервис тестировать необязательно.
- Дополнительно (бонус): Продемонстрировать владение технологией gRPC, возможно в сочетании с JWT.
Требования к предоставленным решениям:
- Готовые задания предоставляются либо в виде zipped архива, либо репозитория на GitHub.
- Код должен успешно компилироваться с помощью среды разработки Microsoft Visual Studio 2022.
- Файлы проекта должны содержать только необходимые ресурсы и компоненты, никаких временных или избыточных файлов.