Skip to content

Course project. PDF Reports Generator - web service for pdf reports generation. Provides RESTful and gRPC APIs and client app.

License

Notifications You must be signed in to change notification settings

vacherkasskiy/pdf-reports-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PDF Reports Generator

Генератор PDF отчетов. К приложению можно обращаться как напрямую (через REST/gRPC запросы), так и через клиентское приложение.

Описание процесса генерации

  1. Когда на сервис поступает POST запрос на генерацию отчета:

    • ID задачи и ее статус (по умолчанию WAITING) записывается в PostgreSQL;
    • Тело запроса с данными для отчета в формате JSON отправляется в Kafka.
  2. Отдельный микросервис BackgroundWorker просматривает записи из Kafka и обрабатывает их:

    • Статус задачи в БД изменяется на IN PROCESS.
    • Данные для отчета из Kafka используются для генерации PDF с помощью библиотеки QuestPDF;
    • Сгенерированный файл отправляется на MinIO в соответствующий bucket "reports";
    • Ссылка на файл в Minio привязывается к соответствующей записи в PostgreSQL;
    • Если в процессе генерирования отчета произошла ошибка, задаче будет присвоен статус ERROR; отчет будет отправлен на Sentry.
  3. Пользователь может получить статус отчета и ссылку на него:

    • Отправив ID отчета на эндпоинт GET, пользователь получит статус READY и ссылку на отчет в хранилище S3 (Minio), откуда сможет скачать файл.

App.Api

Приложение для администрирования отправленных запросов на генерацию отчетов. Предоставляет следующие возможности:

  • Просмотр всех отправленных запросов на генерацию отчетов;
  • Удаление задачи на генерацию;
  • Переотправка запроса не генерацию с целью актуализации ссылки на отчет.

Использование

Чтобы запустить приложение на локальной машине с использованием Minikube, выполните следующие шаги:

  1. Установите Minikube и Helm;
  2. Запустите Minikube кластер;
  3. Используя helm чарты из репозитория, установите следующие сервисы:
    • PostgreSQL,
    • Kafka,
    • Minio;
  4. Запустите сервисы;
  5. Запустите клиентское приложение (если необходимо).

Требования к окружению

  • Minikube;
  • Helm;
  • Docker (или другой движок для minikube).

About

Course project. PDF Reports Generator - web service for pdf reports generation. Provides RESTful and gRPC APIs and client app.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published