Генератор PDF отчетов. К приложению можно обращаться как напрямую (через REST/gRPC запросы), так и через клиентское приложение.
-
Когда на сервис поступает POST запрос на генерацию отчета:
- ID задачи и ее статус (по умолчанию
WAITING
) записывается в PostgreSQL; - Тело запроса с данными для отчета в формате JSON отправляется в Kafka.
- ID задачи и ее статус (по умолчанию
-
Отдельный микросервис
BackgroundWorker
просматривает записи из Kafka и обрабатывает их:- Статус задачи в БД изменяется на
IN PROCESS
. - Данные для отчета из Kafka используются для генерации PDF с помощью библиотеки
QuestPDF
; - Сгенерированный файл отправляется на MinIO в соответствующий bucket "reports";
- Ссылка на файл в Minio привязывается к соответствующей записи в PostgreSQL;
- Если в процессе генерирования отчета произошла ошибка, задаче будет присвоен статус
ERROR
; отчет будет отправлен на Sentry.
- Статус задачи в БД изменяется на
-
Пользователь может получить статус отчета и ссылку на него:
- Отправив ID отчета на эндпоинт GET, пользователь получит статус
READY
и ссылку на отчет в хранилище S3 (Minio), откуда сможет скачать файл.
- Отправив ID отчета на эндпоинт GET, пользователь получит статус
Приложение для администрирования отправленных запросов на генерацию отчетов. Предоставляет следующие возможности:
- Просмотр всех отправленных запросов на генерацию отчетов;
- Удаление задачи на генерацию;
- Переотправка запроса не генерацию с целью актуализации ссылки на отчет.
Чтобы запустить приложение на локальной машине с использованием Minikube, выполните следующие шаги:
- Установите Minikube и Helm;
- Запустите Minikube кластер;
- Используя helm чарты из репозитория, установите следующие сервисы:
- PostgreSQL,
- Kafka,
- Minio;
- Запустите сервисы;
- Запустите клиентское приложение (если необходимо).
- Minikube;
- Helm;
- Docker (или другой движок для minikube).