Не сильно углубляясь, можно выделить такие роли:
- Курьер — Может брать себе заказы из списка заказов. Может просматривать информацию о доставке: какие заказы он везёт, откуда и куда. Может связаться с магазином и покупателем. Может изменить состояние заказа
- Покупатель — может формировать заказы из листа доступных товаров магазина, оплачивать их. писать внутри приложения курьеру и магазину, следить за ходом доставки (текущее состояние заказа).
- Магазин — может добавлять / изменять / удалять товары в своём списке товаров. Может отслеживать состояние оплаты заказа, изменять данные своего местоположения, данные для оплаты. Может связаться с покупателем и курьером.
Предполагается, что в заказе могут присутствовать товары только из одного магазина.
При таким образом описанных ролях, можно определить объекты:
- Курьер — ID курьера; ФИО; количество заказов, которые он в данный момент доставляет; реквизиты для перевода средств
- Покупатель — ID покупателя; адрес; список заказов, которые он ожидает
- Магазин — ID магазина; адрес; список доставляемых заказов; список продаваемых товаров; реквизиты для перевода средств
- Заказ — ID заказа; покупатель; курьер; магазин; список товаров; статус; чаты магазин-курьер, магазин-покупатель, покупатель-курьер.
- Товар — ID товара; магазин, в котором он продаётся; стоимость
- Покупатель оформляет заказ у магазина, который доставляет курьер (включая оплату)
- Курьер принимает заказ
- Магазин изменяет список своих товаров
- Покупатель в рамках заказа может написать в чат магазину, курьеру (аналогично и они)
