Service Station API:
- Сервер: http://23.88.52.139:5006
- Swagger: http://23.88.52.139:5006/swagger
- Database diagram: https://drawsql.app/myowncompany/diagrams/cto
Проект реализуется в рамках авторского курса по тестированию ПО Вадима Ксендзова: https://ksendzov.com/, telegram - @peplomot
ДИСКЛЕЙМЕР:
- Так как в настоящее время проектом занимаюсь я один, то работа продвигается не настолько быстро, как хотелось бы, но я стараюсь, честно :) Я ни разу не разработчик, все учится, усваивается и практикуется по мере реализации.
Саммари: проект - сервис по предоставлению услуг шиномонтажа и хранению шин на складе.
Если Вы обнаружили в проекте баги, ошибки, неточности, либо у Вас возникнут пожелания или предложения, прошу Вас воспользоваться соответствующими ссылками:
Условности:
- Сервис работает 7 дней в неделю, так же и все работники и менеджеры.
- Рабочее время - 08:00 - 20:00
- Перерыв между заказами - 10 минут
- Все виды работ выполняются рабочими
- Планируемое время окончания работ не может превышать 20:15
- Ценообразование заказов и продолжительность работ взяты с потолка :)
- Стоимость работ не учитывает затраты на расходные материалы
Что реализовано:
-
Пользователь:
- Для использования сервиса пользователю необходимо зарегистрироваться
- После регистрации пользователь может залогиниться, используя свой email и пароль, созданный при регистрации.
- Пользователь может деактивировать себя
- Пользователь может изменять личные данные
- Деактивированный пользователь не может быть залогинен, следовательно - пользоваться сервисом
- Пользователь может добавить свои транспортные средства указав тип ТС и размерность колес
- Пользователь может создать заказ на хранение шин с указанием даты начала и окончания хранения, но не более чем +2 года от текущей даты
- При создании заказа на хранение пользователь указывает размер шин, либо ид своего ТС
- Таким образом, на хранение можно отдать любые шины, не оглядываясь на добавленные им ТС
- Пользователь может запрашивать свою информацию - личные данные, добавленные ТС, заказы на хранение, заказы на сервис, добавленные услуги в заказ на сервис со стоимостью
- Пользователь может создать заказ на сервис двух видов (заказ на замену шин и заказ на ремонт шин)
- Пользователь может удалять заказы, даты которых не менее текущей
- Пользователь может просматривать информацию о полках на складе в разрезе размера и свободна/занята на текущее время
-
Функционал:
Все действия пользователь может производить только над своими заказами, транспортными средствами, личными данными.
-
Учетная запись пользователя:
- Существуют две группы пользователей - user и admin
- При регистрации по умолчанию присваивается группа user и статус active
- Email регистронезависимые и проверяются на уникальность
- Email должен содержать 4-100 символов. Обязательные - @ и .
- При изменении пользователей своего email он разлогинивается. Для дальнейших действий пользователю необходимо залогиниться под новым email
- Пароль должен содержать 8-32 символа. Алфавит - латиница. Обязательные - как минимум одна буква в верхнем регистре, одна - в нижнем, одна цифра и один из спецсимволов ($@#!%')
- Пароль не сохраняется в базе данных и восстановить или изменить его возможно только с помощью админа
- После успешной аутентификации пользователю выдается токен
- Время жизни токена - 10 минут и обновляется до 10 минут после каждого авторизованного действия пользователя
- Активировать пользователя может только администратор
- Удалить учетную запись может только администратор
- При удалении учетной записи пользователя также удаляется вся связанная с ним информация
-
Заказ на хранение:
- При передаче пользователем <size_name> и <user_vehicle_id> одновременно - <size_name> игнорируется
- Производится поиск полки необходимого размера, которая не занята в требуемый промежуток времени
- Если таковая не находится - выводится сообщение.
- Невозможно удалить заказ с датой начала равной или менее текущей
- ToDo:
- реализация возможности редактирования заказа
- для этого необходимо внедрение системы распределения шин по полкам в автоматическом режиме с учетом временных графиков
- а также возможность временно размещать шины на полках большего размера
-
Заказ на сервис:
- На заказ на сервис выбирается в первую очередь рандомный менеджер, у которого нет заказов.
- Во вторую очередь - рандомный менеджер с наименьшим количеством заказов
- После отправки запроса вычисляется время, необходимое для проведения выбранных работ и добавляется 10 минут на уборку и перерыв
- Работяга выбирается рандомно из тех, которые незаняты в необходимое время
- Услуги в заказе умножаются на количество колес, кроме услуги "сход-развал", которая считается всегда одна
- Сумма заказа вычисялется из стоимости услуг и времени работы работяги с учетом его оклада
- С удалением заказа на сервис удаляются связанные с ним работы
- Если не находится свободный работяга в необходимое время - выводится сообщение
- ToDo:
- Возможность менеджеру переназначать работяг по услугам и работам
- При ненахождении работяги для формирования заказа - перераспределять работяг по видам работ и услуг
- Внедрение выделенных должностей для отдельных видов работ и услуг, что позволит более рационально распределять работяг и принимать большее количество заказов
Что в планах на ближайшее время:
- Просмотр свободных полок на складе на определенную дату от текущей
- При создании заказа на хранение не учитывается время - только дата (при пересечении времени подразумевается использование полки другого размера, или еще чего.. :)
- Фикс возможности создания заказа на сервис на одно и то же транспортное средство на одно и то же время
- Добавление и идентификация транспортного средства по гос.номеру
- Возможности изменения заказов не реализованы (пока?)
- Не реализована логика размещения шин на складе на полке большего размера при пересечении дат.
- Спектр услуг будет пополняться
- Возможность работяге добавлять в услугу расходные материалы
- Учет и списание расходных материалов на услуги ремонта
- Создание графика работы сотрудников
- Реализация системы подписки
- По подписке пользователь может в течении года хранить шины, два раза в год пользоваться услугой шиномонтажа и ремонта
- Создание уголка менеджера: распределение работяг, коммуникация, отчеты по тем заказам и рабочим которые на него назначены
- Создание уголка директора: распределение менеджеров, коммуникация, отчеты по предприятию в разрезе заказов, менеджеров, рабочих, услуг, финансов
- Прочие разности, которые приходят на лету, от коллег, друзей, одногруппников и вообще всех неравнодушных и готовых помочь :)
Данный документ будет пополняться по мере и постоянно )