Skip to content

Проект написанный во время OZON Route256. Реализован телеграм-бот "Финансовый помощник"

Notifications You must be signed in to change notification settings

AnastasiaP261/financial_tg_bot

Repository files navigation

Телеграм бот "Финансовый помощник"

Запуск

docker-compose up -d pg, а затем make local && make dev-db-data - запустит бота локально. Вся остальная инфраструктура (например БД) будет запущена в контейнерах вокруг.
make docker-run - запустит приложение полностью в контейнерах.

Команды

  • /category <название категории> - добавление новой категории для пользователя

  • /add <сумма> - добавляет новую трату без категории, в качестве даты берет текущую

  • /add <сумма> <категория> - добавляет новую трату в категорию, в качестве даты берет текущую

  • /add <сумма> <категория> <dd.mm.yyyy> - добавляет новую трату в категорию и выставляет соответствующую дату

  • /report <week|month|year> - собирает отчет за указанный промежуток. Отчет отправляет в виде текста и круговой диаграммы. Понимает разное количество дней в месяцах и високосные годы.

  • /currency <RUB|USD|EUR|CNY> - сменить основную валюту пользователя. После этой команды отчеты и добавления трат будут в этой валюте. По умолчанию у каждого пользователя установлена RUB.

  • /limit <сумма> - установить лимит на траты в календарный месяц. Для снятия лимита отправить -1.

Архитектура

.
├── bin
├── cmd
├── go.mod
├── go.sum
├── cmd
│        ├── financial-tg-bot               - основное приложение
│        └── financial-reports              - сервис отчетов (для эмуляции межсервисного взаимодействия)
├── internal
│        ├── app                            - grpc сервер для financial-tg-bot
│        ├── clients
│        │        ├── financial-tg-bot      - grpc клиент financial-tg-bot для financial-reports
│        │        ├── tg                    - клиент телеграма
│        │        ├── redis                 - клиент рэдиса
│        │        └── fixer                 - клиент fixer - апи для получения курсов валют
│        ├── config
│        ├── env
│        ├── kafka                          - логика консьюмеров и продюсеров кафки
│        ├── model
│        │        ├── chart_drawing         - модель рисовальщика, здесь лежит логика по рисованию диаграмм для отчетов
│        │        ├── currency              - модель валют
│        │        ├── db                    - база данных
│        │        ├── exchange-rates        - модель курсов валют, оборачивает склиент fixer в необходимую нам бизнес-логику
│        │        ├── messages              - выполняет функции контроллера и отлавливает команды
│        │        ├── normalize             - требуется для нормализации входящих от пользователя данных
│        │        ├── purchases             - основная бизнес-логика financial-tg-bot, здесь описана логика добавления трат, категорий и составления отчетов
│        │        └── report                - основная бизнес-логика financial-reports, здесь описана логика добавления создания отчетов
│        ├── utils                          - вспомогательные инстументы
│        └── wrappers                       - обертки для пакетов
├── logs                 
├── metrics                 
├── migrations                              - миграции для базы данных
├── pkg                 
├── test_data                               - тестовые данные, в том числе фикстуры для интеграционных тестов
├── tracing
├── Makefile
├── migrate.go                              - пакет с функция ми для накатки миграций на тестовые контейнеры БД
├── README.md
└── config                                  - секреты приложения

Описание архитектуры
Ссылка на доску miro

Масштабирование

Масштабирование приложения на 1000 пользователей

Масштабирование приложения на 100_000 пользователей

Масштабирование приложения на 1_000_000 пользователей Ссылка на доску miro

Logs

make logs

Graylog: http://127.0.0.1:7555/ (admin/admin)

System->Inputs, добавляем инпут типа GELF tcp, все значения по-умолчанию

Metrics

make metrics

Prometheus: http://127.0.0.1:9090/

Grafana: http://127.0.0.1:3000/ (admin/admin)

При первом логине в Графану она попросит установить новый пароль, ставим.

Заходим в шестеренку слева, выбираем Data sources, добавляем Prometheus, адрес http://prometheus:9090

Tracing

make tracing

Jaeger: http://127.0.0.1:16686/

About

Проект написанный во время OZON Route256. Реализован телеграм-бот "Финансовый помощник"

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published