- Стек: Django(DRF), Django-Channels, Aiogram, Redis, Celery, Uvicorn, Pytest, Python 3.10+
- Для MongoDB (версия 6+) используется образ без AVX - заменить при необходимости
- Команда для запуска сервиса: CURRENT_UID=0:0 docker-compose -f docker-compose.yml up --build
- Для проверки работы веб-сокетов можно использовать расширение "Web Socket Client" для браузера Google Chrome (адрес: ws://localhost:8000/ws/stores/{store_id})
- Об .env файле:
STORE_IDS=abc111 xyz000 - id складов через пробел
SPECIAL_USER=ХХХХХХХХХ - телеграм ID получателя отчета
REPORT_TIME='18:25' - время ежедневного отчета (если не задано - отправляется в 21:00 по умолчанию) - Для прогона тестов запустить сервис с помощью команды:
CURRENT_UID=0:0 docker-compose -f docker-compose.dev.yml up
(в .env файле везде указать 127.0.0.1) - Для отдельного запуска Django команда:
uvicorn store_dashboard.asgi:application
Для отдельного запуска бота команда:
python3 report_bot.py
Для отдельного запуска Celery команда:
python3 -m celery -A store_dashboard worker --beat --loglevel=info
Представим, что у нас есть склад товаров. Нам нужно сделать API для управления остатками.
Даны: items и stores - модели на ваше усмотрение.
Используем:
- MongoDB
- FastApi / Django / Flask - без разницы
- Websockets
- docker-compose
Все нужно покрыть тестами. И сокеты и API.
Дополнительно:
- Можно написать pod для kubernetes
- Симулировать в тестах большую параллельную нагрузку на операции demand/supply, чтобы все корректно считалось
- TG бот, отправляющий в 21 остатки склада
{
store: {
store_id: '',
report: [{
item_id: '',
quantity: 10
}]
}
}
Должен отдавать файл с xlsx с текущими остатками склада.
{
operation: 'demand', // supply
item_id: '',
quantity: 10
}
{
store: {
store_id: '',
report: []
}
}
{
operation: 'demand', // supply
items: [ {
item_id: '',
quantity: 10
}]
}
{
store: {
store_id: '',
report: []
}
}
{
store: {
store_id: '',
report: []
}
}
Нужно обеспечить подключение к сообщением от склада по store_id. В момент происхождения изменений должен отправляться report.
Набросать телеграм бота, который будет отправлять в 21:00 отчет по остатку склада - только захардкоженному user_id.