Товары упаковываются в контейнеры. Каждый товар имеет тип (между товарами возможны различия по характеристикам, которые не важны для фото, например размер).
Сервис предоставляет API по созданию и получению контейнеров, а также для получения оптимального (минимального) количества контейнеров.
- Выбирается контейнер с максимальным количеством уникальным типов товаров. Помечается стартовым и "отобранным"
- Вычисляется стоимость (количество добавляемых уникальных типов товаров) между всеми остальными неотобранными контейнерами.
- Выбирается контейнер с максимальной "добавочной стоимостью", помечается "отобранным"
- Шаги 2-3 повторяются либо пока добавочная стоимость всех контейнеров станет равна 0, либо не останется не отобранных контейнеров.
Таким образом, задача формирования оптимального количества контейнеров сводится к алгоритму поиска кратчайшего пути на графах с пересчетом стоимости пути.
Обработка алгоритма расположена в сервисе App\Services\ContainerInformationService
Доступна локально в файле apiDocs.yaml либо онлайн версия: https://app.swaggerhub.com/apis/yushkevichv/managing-product-to-photo/1.0.0
После клонирования проекта необходимо выполнить команды:
- cp .env.example .env
- указать корректные параметры конфигурации в .env файле
- composer install
- php artisan migrate
- php artisan db:seed (для заполнения тестовыми данными)
- php artisan key:generate