-
Go
-
PostgreSql
-
Приложение должно запускаться в docker-compose без дополнительных доработок.
-
Порт 8000
-
БД по умолчанию должна быть заполнена 20 машинами.
-
Груз обязательно должен содержать следующие характеристики:
-
локация pick-up;
-
локация delivery;
-
вес (1-1000);
-
описание.
-
-
Машина обязательно должна в себя включать следующие характеристики:
-
уникальный номер (цифра от 1000 до 9999 + случайная заглавная буква английского алфавита в конце, пример: "1234A", "2534B", "9999Z")
-
текущая локация;
-
-
Локация должна содержать в себе следующие характеристики:
-
город;
-
штат;
-
почтовый индекс (zip);
-
широта;
-
долгота.
Список уникальных локаций представлен в прикрепленном csv файле "uszips.csv". Необходимо осуществить выгрузку списка в базу данных Postgres при запуске приложения.
-
При создании машин по умолчанию локация каждой машины заполняется случайным образом;
-
Расчет и отображение расстояния осуществляется в милях;
-
Расчет расстояния должен осуществляться с помощью библиотеки geopy. help(geopy.distance). Маршруты не учитывать, использовать расстояние от точки до точки
-
Сервис должен поддерживать следующие базовые функции:
-
Создание нового груза (характеристики локаций pick-up, delivery определяются по введенному zip-коду);
-
Получение списка грузов (локации pick-up, delivery, количество ближайших машин до груза ( =< 450 миль));
-
Получение информации о конкретном грузе по ID (локации pick-up, delivery, вес, описание, список номеров ВСЕХ машин с расстоянием до выбранного груза);
-
Редактирование машины по ID (локация (определяется по введенному zip-коду));
-
Редактирование груза по ID (вес, описание);
-
Удаление груза по ID.
Все что в уровне 1 + дополнительные функции:
-
Фильтр списка грузов (вес, мили ближайших машин до грузов);
-
Автоматическое обновление локаций всех машин раз в 3 минуты (локация меняется на другую случайную).
-