{"id":26562580,"url":"https://github.com/kaschenkkko/coiledsteelapi","last_synced_at":"2025-03-22T15:18:11.262Z","repository":{"id":283090325,"uuid":"949456189","full_name":"kaschenkkko/CoiledSteelAPI","owner":"kaschenkkko","description":"API for working with a coiled steel  warehouse.","archived":false,"fork":false,"pushed_at":"2025-03-18T16:00:28.000Z","size":30,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-18T16:42:06.136Z","etag":null,"topics":["docker","fastapi","githubaction-workflow","postgresql","pytest","python","sqlalchemy"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kaschenkkko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-16T14:04:38.000Z","updated_at":"2025-03-18T16:22:32.000Z","dependencies_parsed_at":"2025-03-18T16:42:11.189Z","dependency_job_id":"25c0583c-6270-4b6f-9b05-0229af6f1562","html_url":"https://github.com/kaschenkkko/CoiledSteelAPI","commit_stats":null,"previous_names":["kaschenkkko/metalrollsapi","kaschenkkko/coiledsteelapi"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaschenkkko%2FCoiledSteelAPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaschenkkko%2FCoiledSteelAPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaschenkkko%2FCoiledSteelAPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kaschenkkko%2FCoiledSteelAPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kaschenkkko","download_url":"https://codeload.github.com/kaschenkkko/CoiledSteelAPI/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244973810,"owners_count":20541025,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","fastapi","githubaction-workflow","postgresql","pytest","python","sqlalchemy"],"created_at":"2025-03-22T15:18:10.452Z","updated_at":"2025-03-22T15:18:11.256Z","avatar_url":"https://github.com/kaschenkkko.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"header\" align=\"center\"\u003e\n  \u003ch1\u003eCoiled Steel API\u003c/h1\u003e\n  \u003ch2\u003eТестовое задание на стажировку IT HUB «Северстали»\u003c/h2\u003e\n\n  ![Python](https://img.shields.io/badge/-Python_3.10-000?\u0026logo=Python)\n  ![FastAPI](https://img.shields.io/badge/-FastAPI_0.115.11-000?\u0026logo=FastAPI)\n  ![Pydantic](https://img.shields.io/badge/-Pydantic_2.10.6-000?\u0026logo=Pydantic)\n  ![SQLAlchemy](https://img.shields.io/badge/-SQLAlchemy_2.0.39-000?\u0026logo=SQLAlchemy)\n  ![PostgreSQL](https://img.shields.io/badge/-PostgreSQL-000?\u0026logo=PostgreSQL)\n  ![Docker](https://img.shields.io/badge/-Docker-000?\u0026logo=Docker)\n  ![Pytest](https://img.shields.io/badge/-Pytest-000?\u0026logo=Pytest)\n\n\u003c/div\u003e\n\nСтатус проверки линтеров и тестов:\n\n[![coiled_steel_api_workflow](https://github.com/kaschenkkko/CoiledSteelAPI/actions/workflows/main.yaml/badge.svg)](https://github.com/kaschenkkko/CoiledSteelAPI/actions/workflows/main.yaml)\n\nДокументация к API доступна:\n\n[API Documentation ](https://kaschenkkko.github.io/CoiledSteelAPI/)\n\n\u003ch2\u003eТехническое задание проекта\u003c/h2\u003e\n\n### Обязательные пункты:\n\n✅1. RESTFull API:\n - Добавление нового рулона на склад. Длина и вес — обязательные параметры. В случае успеха возвращает добавленный рулон\n - Удаление рулона с указанным id со склада. В случае успеха возвращает удалённый рулон\n- Получение списка рулонов со склада. Рассмотреть возможность фильтрации по одному из диапазонов единовременно (id/веса/длины/даты добавления/даты удаления со склада)\n- Получение статистики по рулонам за определённый период:\n  - количество добавленных рулонов\n  - количество удалённых рулонов\n  - средняя длина, вес рулонов, находившихся на складе в этот период\n  - максимальная и минимальная длина и вес рулонов находившихся на складе в этот период\n  - суммарный вес рулонов на складе за период\n  - максимальный и минимальный промежуток между добавлением и удалением рулона\n\n✅2. Данные по рулонам должны храниться в базе данных (желательно PostgreSQL/SQLite)\n\n✅3. Должны быть обработаны стандартные кейсы ошибок (например, недоступна БД, не существует рулон при какой-то работе с ним)\n\n✅4. Используемый стек: FastAPI, SQLAlchemy, pydantic (версии и до 2.0, и после 2.0 подойдут)\n\n### Бонусная часть:\n\n✅1. Получение списка рулонов с фильтрацией работает по комбинации нескольких диапазонов сразу\n\n❌2. Получение статистики по рулонам дополнительно возвращает:\n- день, когда на складе находилось минимальное и максимальное количество рулонов за указанный период\n- день, когда суммарный вес рулонов на складе был минимальным и максимальным в указанный период\n\n✅3. Проект должен быть обёрнут в Docker\n\n✅4. Конфигурации к подключению к БД должны быть настраиваемыми через файл или ENV\n\n✅5. Проект должен быть покрыт тестами\n\n✅6. Проект должен проходить mypy, flake8 и прочее\n\n✅7. Отсутствие глобальных переменных\n\n\u003cdetails\u003e\u003csummary\u003e\u003ch2\u003eЗапуск проекта\u003c/h2\u003e\u003c/summary\u003e\n\n- Перейдите в папку **docker**.\n- Создайте файл **.env** с переменными окружения:\n    ```\n    DB_HOST=\n    DB_PORT=\n    DB_NAME=\n    POSTGRES_USER=\n    POSTGRES_PASSWORD=\n\n    TEST_DB_HOST=\n    TEST_DB_PORT=\n    TEST_DB_NAME=\n    TEST_POSTGRES_USER=\n    TEST_POSTGRES_PASSWORD=\n    ```\n- Запустите контейнеры:\n  ```\n  docker-compose up -d --build\n  ```\n- В контейнере **backend** выполните миграции:\n  ```\n  docker-compose exec backend alembic upgrade head\n  ```\n- Команда для запуска тестов:\n  ```\n  docker-compose exec backend pytest\n  ```\n\u003c/details\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaschenkkko%2Fcoiledsteelapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaschenkkko%2Fcoiledsteelapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaschenkkko%2Fcoiledsteelapi/lists"}