Необходимо написать на чистом Руби класс, который реализует следующее: Вводим в консоли параметры перевозимого груза - вес(кг), длина(см), ширина(см), высота(см) Вводим в консоли название пункта отправления и название пункта назначения Через distancematrix.ai или любой другой сервис со схожим функционалом мы расчитываем расстояние, которое груз должен преодолеть
Результатом работы класса должен быть хеш следующего вида -> {weight: 1, length: 1, width: 1, height: 1, distance: 1, price: 1}
- Расчет цены:
- Если груз меньше 1 метра кубического, то цена перевозки равна 1 рублю за километр,
- Если груз больше 1 метра кубического, но его вес не превышает 10 кг, то цена перевозки равна 2 рубля за километр,
- Если груз больше 1 метра кубического и его вес превышает 10кг, то цена перевозки ровна 3 рубля за километр.
Тесты
Написать Rails приложение:
- Клиент заходит на главную страницу сайта и вводит следующие данные: Имя, Фамилия, Отчество, Телефон, Email, вес(кг), длина(см), ширина(см), высота(см), пункт отправления, пункт назначения (все поля обязательные)
- Использовать скрипт, который писался в Part1 для расчетов
- Данные сохранять в базу (PostgreSQL)
- Клиент после расчета может вывести всю информацию по заявке (просмотра созданной заявки)
- Прикрутить к приложению ActiveAdmin для просмотра заявок
- Тесты
К частям 1 и 2:
- Добавляем авторизацию(Devise)
- Аватарки для юзеров(Carrierwave/shrine)
- Каждый юзер может видеть свои заявки (Таблица: одна заявка - одна строчка)
Пагинация для таблицы с заявками (kaminari)
- Сортировка данных: по дате создания, по цене и по расстоянию
- Статусы у заявок (AASM) меняет Админ
- Письмо после создания заявки отправляется юзеру через Sidekiq
- При смене статуса у заявки также отправляем письмо юзеру
- Тесты
Добавляем организации (Доступ к скопу данных организовывать используя гем Pundit)
Появляется такая сущность, как Organization
- Сущность Organization объединяет в себе пользователей, которые могут иметь две роли Operator & Organization Admin
- Operator может видеть только свои заявки, а Organization Admin может видеть заявки всех своих операторов
- Добавляем фильтр по Операторам
- Тесты
- Аналитика для организаций (абстракция Widget) (Аналитика отображается в лк админа Организации)
- Общее количество заявок на организацию
- Количество заявок в разбивке по операторам
- Общая сумма по всем заявкам
- Средняя сумма по заявкам
- Самая далеко отправления посылка
- Самая близко отправления посылка
- Тесты
Часть 6
- Выгрузка табличных данных в csv (csv файл должен приходить по почте)
- Автоматическое тестирование на Github Actions
- Автоматическое развертывание кода на Heroku через Github Actions
Исходный код приложения нужно загрузить на github.com и в конце развернуть на heroku.