Содержание
Концепция
Жираф GO – сервис по аренде самокатов, использующий мобильное приложение клиента, которое обеспечивает удобное взятие устройства в аренду, пользование устройством и возврат(окончание) аренды.
ПО для реализации проекта
- Клиентское приложение
- Приложение чарджера(сотрудник который обслуживает устройства, меняет акб и др.)
- CRM или ERP cистема. Управление бизнес-процессами, финансами и др.
Инструменты разработки
- Frontend – React Native(нативка)
или ReactJS в PWA (ps: надо определиться) - Backend сбора данных – Node
Django python - Backend взаимодействия с модулем устройства – готовый IoT Cloud, пока что RightTech (есть и другие, например, от Google и Amazon)
- БД – PostgreSQL
Сущности
- Клиент (Пользователь клиентского мобильного приложения)
- Самокат
- Поездка
- Тарифы
- Парковки
- Промокоды
БД Клиент (Пользователя MobApp)
- id
- Имя(возможно необяз)
- Телефон (обяз)
- Email(необяз)
- Дата регистрации(дата, время : 20.01.2024, 12:36)
- Баланс(сколько средст лежит на балансе)
- Списания (сколько средств потрачено за всё время)
- Дата последней активности(дата, время : 22.01.2024, 16:12). Думаю, что активностью можно считать использование(вход и прочее) моб приложения. Но так же можно активностью считать совершение каких либо действий, например поездку.
- PK. Тариф 1:1(скорее всего связь будет между клиентом и поездкой, а у поездки уже будет связь с тарифом)
- Поездки. 1:М
БД поездки
- id
- Дата и время начала поездки
- Дата и время завершения поездки (если аренда, завершилась другим числом, то пока что выводим только время. Но на будущее можно ещё выводить и дату )
- Время в пути. Пример: 32:36(мин/сек) и 1:23:48(час/мин/сек). При расчёте стоимости, секунды округляются до минуты в большую сторону.
- Фотография при завершении поездки
- Стоимость(общая)
- Сколько оплатили картой
- Сколько бонусами(если их нет, то 0)
- FK. Пользователь. 1:1
- Самокат, будет ли связь с его моделью в бд или проста записываться значение номера устройства ?????
БД самокат
- id
- Номер идентификации устройства (рандом). 6 знаков через “-“. Пример: 245-878. Генерируется автоматически
- QR – код, генерируется из п.2(номера идентиф.) . размер 2*2см или 76*76px . Генерируется автоматически
- Название модели (Например Ninebot Max Plus). Вводится в ручную
- Серийный номер устройства. Вводится в ручную
- Кому принадлежит(какому франчайзи). Выбор из списка
- Город, к какому городу относится или региону(под вопросом)
- Уровень заряда(скорее всего будет с API R-iot напрямую)
- Статус: В аренде / Свободен / Забронирован. Если самокат в аренде, то он не доступен для бронирования и не отображается на карте для заказа.
- Активен, не активен (снять с линии, поставить на линию, можно указать причину снятия)(для erp системы)
- Дата добавления самоката
- Фото самоката(показывать в карточке)
- FK. Парковка. 1:1
Если сделать так, чтобы франчайзи сам добавлял самокат в ЛК(название, серийник, фото), а Админ подтверждал подключение к системе. И добавить статус “Добавлен в систему”.
Добавление самоката: Менеджер нажимает кнопку “Добавить самокат”, в открывшемся окне вводит “Название”, “Серийный номер устройства”, “Выбирает франчайзи”, нажимает “Сохранить”. При сохранении система назначает ему 6ти-значный уникальный номер идентификации устройства и на его основе генерирует и qr-код и после этого все данные об устройстве записываются в БД.
Удаление самоката
???Условие при удалении: Нужно подумать.
Если вы удалите самокат, то он больше не будет доступен в системе. Вы уверены?
БД парковка
- id
- Адрес(не обяз)
- Фото парковки(не обяз)
- Координаты x/y(широта, долгота). Пример: 52.963531, 36.068423.
- Радиус. Указывается через SELECT : 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
- Самокаты 1:М
БД Тарифы
Одинаковые во всех регионах или можно менять в зависимости от региона
- id
- Название
- Стоимость бронирования
- Стоимость посадки
- Стоимость минуты
- Стоимость паузы
- Стоимость фиксированная (нужно детально почекать за тарифы)
- FK. Пользователь. 1:M
- Цвет карточки (rgb или hex), строка, в ручном режиме
БД промокод
- id
- Код(название). То, что является промокодом. Например: start
- Тип промокода. Select. То есть как он работает. Пока что сделаем только один вариант, зачисление средств на баланс
- Сумма. Сколько зачислится на баланс
- Дата начала действия промокода
- Дата окончания промокода
- Статус. Активный или Архив. Можно изменить в ручном режиме. А можно ещё подумать, например:
– если промокод по дате закончил своё действие то его перекидывает в архив - Лимиты. Промокод можно использовать только 1 раз пользователю. Т.е. нужна будет проверка пользователя на использование промокода.
Роли пользователей в ERP системе
- Главный/Админ/Всемогущий. Имеет все права доступа
- Франчайзи. Имеет доступ только в свой кабинет Франчайзи, где есть список самокатов с их данными и статистика по финансам. + за вычетом роялти или с ним, будет зависеть от бизнес модели
БД пользователя ERP
- id
- Имя
- Телефон
БД франчайзи
- id
- FK. user id. 1:1
- Самокаты. 1:M
- Город
- Доход
Бронирование самоката
Если ты на определенном расстоянии от самоката, не далеко, например метров 200 (или в минутах ходьбы) то можешь забронировать, значение устанавливается в системе, если далеко, то не можешь. Соответственно прежде чем обработать функцию бронирования, нужно узнать расстояние от пользователя до самоката.
Если самокат “В аренде или Забронирован”, то он не отображается на картах.
Если пользователь сканирует qr-код, самоката с уже имеющимся статусом “В аренде или Забронирован”, то появляется сообщение – “самокат занят”
Сценарий бронирования самоката
- На карте выбираешь нужный самокат
- Выбираешь тариф
- Приложение строит маршрут до самоката
- Нажимаешь кнопку “Забронировать”
Чтобы не потерять самокат
Маршрут поездки записывается сразу в режиме реального времени или после завершения. Если не сразу, то можно сделать так, что если у самоката заряд, например 2-1% он начинает записывать его координаты, ещё зависит от того, будет ли работать gps без заряда самоката. Ещё как вариант это может быть необходимо, даже не во время поездки, а если он разрядится на парковке, чтобы понимать на какой парковке он стоит.
Роли и права доступа в системе
- Админ
- Управляющий
- Техник (не Паша)
- Чарджер
- Скаут
- Поддержка
В данной модели реализации оставим 3 роли:
- Админ (владелец ресурса, удалить нельзя, имеет все права)
- Управляющий (имеет такие же права, как и админ)
- Техник (ограничен в правах, например, не может добавлять пользователей, имеет доступ только к данным о самокатах, так как роль техника подразумевает их обслуживание и контроль(например замена батарей и прочее).
