Тестовое задание на собеседование в Перспективный Мониторинг (дочерняя компания АО ИнфоТеКС).
Зависимость | Версия |
---|---|
Django | 5.1.2 |
djangorestframework | 3.15.2 |
drf-spectacular | 0.27.2 |
psycopg2-binary | 2.9.10 |
gunicorn | 23.0.0 |
API задокументирован при помощи Swagger (drf-spectacular
).
Тестирование API: http://127.0.0.1/swagger/
YAML: http://127.0.0.1/schema/
Связи между сущностями (представлено на диаграмме):
-
Улица к городу:
многие к одному
; -
Магазин к улице:
многие к одному
; -
Магазин к городу:
многие к одному
.
СУБД: PostgreSQL 15 версии
.
ORM: Django ORM
.
-
Админка Django доступна по адресу
http://127.0.0.1/admin
. -
Учётные данные для первого входа:
admin:admin
.
Important
Учётные данные рекомендуется сменить сразу после развёртывания на более устойчивые.
-
Также автоматически генерируются данные в БД сервиса для моделей города, улицы и магазина.
-
Автогенерация данных в сервиса автоматизирована с помощью кастомной команды:
python3 manage.py initdb
Реализовано тут: api/management/commands/initdb.py
.
Tip
После каждого перезапуска стека приложений база обогащается случайными данными.
Для начала клонируйте репозиторий:
git clone https://github.com/light-hat/shop_service
cd shop_service
В корне репозитория создайте .env
файл со следующим содержимым:
API_URL=127.0.0.1
API_PORT=80
POSTGRES_HOST=db
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=shop_database
Переменные окружения в конфигурации:
-
API_URL
: адрес, на котором будет развёрнут сервис; -
API_PORT
: порт, на котором будет принимать запросы сервис; -
POSTGRES_HOST
: хост базы данных (имя сервиса в стеке приложений); -
POSTGRES_PORT
: порт базы данных; -
POSTGRES_USER
: пользователь базы данных; -
POSTGRES_PASSWORD
: пароль от базы данных; -
POSTGRES_DB
: имя базы данных, используемой сервисом.
Далее предлагается два варианта на выбор:
Note
Сервис в обоих случаях будет доступен на 127.0.0.1:80
.
Warning
В системе должны быть установлены Docker
и Docker Compose
.
docker-compose up -d --build
Warning
Должны быть установлены Vagrant
и VirtualBox
.
Tip
Базовый box ubuntu/focal64
можно скачать отсюда.
vagrant up
Important
Для этого в системе должен быть установлен Make
. При развёртывании через Vagrant, make устанавливается на виртуальную машину автоматически.
Для автоматизации работы с docker-compose предлагается использование утилиты Make.
- Сборка и запуск стека приложений:
make build
- Запуск ранее собранного стека приложений:
make up
- Остановка стека приложений:
make down
- Перестроить стек приложений с удалением всех контейнеров и томов и без кеширования:
make rebuild
- Очистить все контейнеры, сети и тома:
make clean
- Вывести логи:
make logs
- Автоформатирование через
black
:
make black
- Проверить статус контейнеров:
make status
Не успел уже =(
Сделано, но мало, только для модели Shop. Тестируется создание модели, сериализатор POST-запроса и вьюха фильтра магазинов.