https://github.com/kaschenkkko/coiledsteelapi
API for working with a coiled steel warehouse.
https://github.com/kaschenkkko/coiledsteelapi
docker fastapi githubaction-workflow postgresql pytest python sqlalchemy
Last synced: about 1 year ago
JSON representation
API for working with a coiled steel warehouse.
- Host: GitHub
- URL: https://github.com/kaschenkkko/coiledsteelapi
- Owner: kaschenkkko
- Created: 2025-03-16T14:04:38.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-18T16:00:28.000Z (about 1 year ago)
- Last Synced: 2025-03-18T16:42:06.136Z (about 1 year ago)
- Topics: docker, fastapi, githubaction-workflow, postgresql, pytest, python, sqlalchemy
- Language: Python
- Homepage:
- Size: 29.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Coiled Steel API
Тестовое задание на стажировку IT HUB «Северстали»







Статус проверки линтеров и тестов:
[](https://github.com/kaschenkkko/CoiledSteelAPI/actions/workflows/main.yaml)
Документация к API доступна:
[API Documentation ](https://kaschenkkko.github.io/CoiledSteelAPI/)
Техническое задание проекта
### Обязательные пункты:
✅1. RESTFull API:
- Добавление нового рулона на склад. Длина и вес — обязательные параметры. В случае успеха возвращает добавленный рулон
- Удаление рулона с указанным id со склада. В случае успеха возвращает удалённый рулон
- Получение списка рулонов со склада. Рассмотреть возможность фильтрации по одному из диапазонов единовременно (id/веса/длины/даты добавления/даты удаления со склада)
- Получение статистики по рулонам за определённый период:
- количество добавленных рулонов
- количество удалённых рулонов
- средняя длина, вес рулонов, находившихся на складе в этот период
- максимальная и минимальная длина и вес рулонов находившихся на складе в этот период
- суммарный вес рулонов на складе за период
- максимальный и минимальный промежуток между добавлением и удалением рулона
✅2. Данные по рулонам должны храниться в базе данных (желательно PostgreSQL/SQLite)
✅3. Должны быть обработаны стандартные кейсы ошибок (например, недоступна БД, не существует рулон при какой-то работе с ним)
✅4. Используемый стек: FastAPI, SQLAlchemy, pydantic (версии и до 2.0, и после 2.0 подойдут)
### Бонусная часть:
✅1. Получение списка рулонов с фильтрацией работает по комбинации нескольких диапазонов сразу
❌2. Получение статистики по рулонам дополнительно возвращает:
- день, когда на складе находилось минимальное и максимальное количество рулонов за указанный период
- день, когда суммарный вес рулонов на складе был минимальным и максимальным в указанный период
✅3. Проект должен быть обёрнут в Docker
✅4. Конфигурации к подключению к БД должны быть настраиваемыми через файл или ENV
✅5. Проект должен быть покрыт тестами
✅6. Проект должен проходить mypy, flake8 и прочее
✅7. Отсутствие глобальных переменных
Запуск проекта
- Перейдите в папку **docker**.
- Создайте файл **.env** с переменными окружения:
```
DB_HOST=
DB_PORT=
DB_NAME=
POSTGRES_USER=
POSTGRES_PASSWORD=
TEST_DB_HOST=
TEST_DB_PORT=
TEST_DB_NAME=
TEST_POSTGRES_USER=
TEST_POSTGRES_PASSWORD=
```
- Запустите контейнеры:
```
docker-compose up -d --build
```
- В контейнере **backend** выполните миграции:
```
docker-compose exec backend alembic upgrade head
```
- Команда для запуска тестов:
```
docker-compose exec backend pytest
```