Giter Site home page Giter Site logo

test-python's Introduction

Сервис

Задача поиска варианта(ов) заправки автомобиля с учетом разных цен на заправках, расхода бензина на маршрут туда и обратно, необходимого объема заправки в литрах и лимита времени у водителя. Входные данные: Данные о заправак и ценах на них на разное топливо. Данные о пользователях, их автомобилях, типе и среднем расходе топлива на 100 км (проводим упращенные расчеты с паспортной величиной среднего расхода) Данные о дистанциях до заправок от текущей позиции пользователя в километрах. Предполагаем, что эти данные нам готовит другой модуль. Скорость берем среднюю в 30 км/ч.

Вводные данные (или константы для упрощенного вида): Необходимый объем заправки в литрах. Лимит времени на всю операцию в часах.

Условия: Реализовать структуру данных. Реализовать код поиска заправки (заправок) Желательно: Предусмотреть возможность переиспользования кода (несколько стартовых точек, изменение времени...) и более реалистичных данных Предусмотреть негативные сценарии

==========================

Сервис с использованием Flask В коде стоят комментарии по процессу расчетов структура базы данных и некоторые тестовые данные заполняются из миграций sqlalchemy, в рабочей среде по хорошему надо делать ендпоинты импорта заправок/пользователей/автомобилей или получать их из какойнибудь шины, например через rabbitmq

Реализовать вызов с многими точками, можно добавить ещё ендпоинт который будет группировать запрос и отдавать массивом результаты (не успел немного реализовать)

Сервис расчетов реализовон отдельным классом и его можно довольно легко вынести из микросервиса в виде отдельной библиотеки Сервис запроса данных по расстояниям также выделен отдельным классом и легко переключается на какойнибудь requests, для запроса наружу, сейчас там заглушка

В сервисе могут ещё быть ошибки, поскольку писать пришлось быстро

=========================== Запуск напрямую: для данного примера НЕОБХОДИМА БАЗА PGSQL, пустая

export FLASK_ENV=development export DATABASE_URL=DATABASE_URL=postgres://postgres:test@localhost/svs flask db upgrade flask run

Запуск через docker

docker-compose up

сервис будет доступен по:

http://localhost:5000/api/v1/fuel/stations

Ендпоинты: GET "/api/v1/fuel/stations" user_id - Идентификатор пользователя (для удобства предзаполнено из миграции 1,2,3) (можно использовать вместо car_id) car_ id - Идентификатор автомобиля (для удобства предзаполнено из миграции 1,2,3) (можно использовать вместо user_id) car_fuel_level - имеющийся объем топлива (обязательно) required_fuel - требуемый объем заправки (обязательно) time_limit - ограничение по времени в часах (дробное) (необязвательно) avail_money - органичение по деньгам (необязательно) avg_speed - средняя скорость (необязательно, по умолчанию 30) -- также тут должены быть координаты авто в виде lat/lon для передачи в сервис запроса расстояний, но пока это не нужно

Ответ:
    {
        "status": True, # Если удачно то True
        "data": {
            "data":{
                "id": идентификатор заправки,
                "distance": расстояние до заправки,
                "cost": Стоимость литра топлива
                }
        } 
    }

test-python's People

Contributors

garikk avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.