Skip to content

thinknetica/workshop_event-driven_2025

Repository files navigation

Workshop по событийной архитектуре

Приложение читает почтовое сообщение из указанного почтового яищка. Реагирует на письма, содержащие вложения. Далее оно пытается распознать во вложении товарный чек и распознать цену в нем. Если цена менее 100 рублей, она регистрируется автоматически. Если стоимость товаров и услуг превышает 100 рублей, чек отправляется на бюджетный контроль, где держатель бюджета должен одобрить покупку. В последнем случае стоимость чека также регистрируется в последнем микросервисе.

Архитектура

Приложение состоит из 7 приложений:

  • inbox - чтение почтового ящика
  • check-manager - оркестратор распознавания
  • tesseract - распознавание средствами Tesseract
  • yandex-vision - распознаванияе средствами Yandex Vision OSR
  • check-ruler - применение правил для извлечения стоимости товаров и услуг, а так же точки автоматического и ручного котроля (больше или меньше 100 рублей)
  • budget-control - система бюджетного контроля для ручного подверждения операции
  • check-register - регистрация стоимости товаров и услуг

В качестве исходного дата-объекта выступает письмо с вложением (товарным чеком), которое читает первый микросервис inbox. Далее вложение проходит через цепочку микросервисов, подвергается распознаванию и в конце-концов регистрируется в микросервисе check-register.

Диаграмма компонентов по совместительству является и диаграммой развертывания:

Диаграмма компонентов

Архитектурные решения можно обнаружить в папке docs/adr проекта.

Вспомогательные папки проекта

Некоторые папки не используются непосредственно для запуска приложения:

  • docs — файлы и материалы для документирования проекта
  • microservice-template — генератор микросвервисов, при помощи которого создавались все микросервисы, за исключением inbox
  • tesseract-docker — тестовый проект, для демонстрации распознавание изображений при помощи tesseract (а также инструкция по его установке и использованию)
  • yandex-vision-osr - тестовый проект, для демонстрации распознавания изображений при помощи Yandex Vision OSR и (а также инструкция по его использованию)

Запуск проекта

  1. В семи основных проектах необходимо скопировать sample.env в .env и корректно заполнить переменные окружения
  2. В корне репозитория следует запустить команду
docker compose up
  1. Для каждого проекта, использующего базу данных необходимо выполнить команду для ее создания и развертывания
docker compose run НАЗВАНИЕ_СЕРВИСА bundle exec rake db:drop db:create db:migrate

НАЗВАНИЕ_СЕРВИСА это одно из пяти значений: inbox, check-manager, check-ruler, check-register, budget-control. Впрочем их можно всегда посмотреть в docker-compose.yaml.

Кроме того, каждый микросервис можно запустить отдельно от остальных, воспользовавашись readme.md файлом в папке микросервиса.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published