Асинхронный Telegram-бот для агрегации данных о зарплатах из коллекции MongoDB за указанный период времени с возможностью группировки по дням, неделям или месяцам. Реализован с использованием FastAPI, aiogram и MongoDB.
- 📆 Группировка данных по дням, неделям или месяцам
- 📈 Агрегация зарплат за заданный период времени
- 🤖 Взаимодействие через Telegram-бота
- 🌐 REST API для получения агрегированных данных
- 🐳 Развёртывание с использованием Docker Compose
- 🧪 Тестирование с использованием pytest
- Python 3.10+
- FastAPI
- aiogram
- MongoDB
- Docker & Docker Compose
- pytest
-
Клонируйте репозиторий:
git clone https://github.com/artem-sitd/salary_aggregate_bot.git cd salary_aggregate_bot
-
Настройте переменные окружения:
Переименуйте файл
.env.docker.template
в.env.docker
:cp .env.docker.template .env.docker
Отредактируйте файл
.env.docker
, указав необходимые значения:MONGO_INITDB_ROOT_USERNAME
— имя пользователя MongoDBMONGO_INITDB_ROOT_PASSWORD
— пароль пользователя MongoDBMONGO_DB
— имя базы данных MongoDBTELEGRAM_API_KEY
— токен вашего бота, полученный у @BotFather
-
Запустите приложение с помощью Docker Compose:
docker-compose up --build
Приложение будет доступно по адресу
http://localhost:8000
.
Запрос:
{
"dt_from": "2022-09-01T00:00:00",
"dt_upto": "2022-12-31T23:59:00",
"group_type": "month"
}
Ответ:
{
"dataset": [5906586, 5515874, 5889803, 6092634],
"labels": [
"2022-09-01T00:00:00",
"2022-10-01T00:00:00",
"2022-11-01T00:00:00",
"2022-12-01T00:00:00"
]
}
├── app/ # Основная логика приложения
├── data/ # Скрипты инициализации MongoDB
├── tests/ # Тесты проекта
├── .env.docker.template # Шаблон переменных окружения
├── docker-compose.yaml # Конфигурация Docker Compose
├── Dockerfile # Dockerfile для сборки образа
├── requirements.txt # Зависимости проекта
├── README.md # Документация проекта
└── ...
Для запуска тестов используйте следующую команду:
pytest
Тесты находятся в директории tests/
и покрывают основные сценарии использования API.
Проект распространяется под лицензией MIT. Подробнее см. файл LICENSE
.