Skip to content

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

Packages

Contributors

Languages