7.3 KiB
SuperSam: Обзор системы
SuperSam — это система управления доставкой заказов, которая объединяет внутренние рабочие кабинеты сотрудников и публичную страницу для клиента. Приложение помогает пройти путь от готовности заказа к отгрузке до согласования доставки, назначения исполнителей, фиксации результата и контроля исключений.
Задачи приложения
- собрать в одном месте информацию по заказам, доставке, истории действий и коммуникациям;
- разделить рабочие зоны по ролям, чтобы каждый сотрудник видел только свой контур задач;
- дать логисту инструмент для запуска и контроля согласования доставки;
- дать клиенту простую ссылку, по которой он может выбрать дату и половину дня доставки;
- сохранить в Supabase историю изменений, статусы и интеграционные события.
Роли
Менеджер
Менеджер работает с заказами на ранних этапах:
- видит список заказов и карточки клиентов;
- следит за составом заказа и комментариями;
- передаёт заказ дальше по процессу после подтверждения.
Логист
Логист отвечает за доставку:
- видит готовые к запуску и проблемные заказы;
- контролирует статусы согласования доставки;
- назначает и корректирует слоты;
- переводит заказ в ручную обработку, если клиент не ответил;
- отслеживает историю и связанные сообщения.
Водитель
Водитель работает только со своими доставками:
- видит назначенные маршруты;
- открывает карточку точки доставки;
- фиксирует ход доставки и итоговый статус.
Администратор
Администратор видит всю систему:
- пользователей и роли;
- общие списки заказов и событий;
- состояние интеграций и служебные данные.
Клиент
Клиент не входит во внутренний кабинет. Он получает публичную ссылку вида /delivery/:token и по ней:
- видит номер заказа;
- выбирает удобную дату;
- выбирает половину дня:
До обедаилиПосле обеда; - подтверждает выбор.
Основные сценарии
Внутренний сценарий
- Заказ попадает в систему.
- Менеджер и внутренние сотрудники ведут заказ по этапам.
- Когда заказ готов к доставке, логист запускает приглашение клиенту.
- Клиент выбирает слот по публичной ссылке.
- Система переводит заказ в
Доставка согласована. - Логист и водитель доводят доставку до результата.
Сценарий клиента
Клиентская страница работает по token из таблицы public.delivery_invitations. Для рабочего показа используется заранее загруженный seed-набор данных.
После загрузки seed можно открыть ссылку:
/delivery/client-flow-1001
Эта ссылка должна показывать:
- заказ
CD-240031; - четыре варианта слота;
- две даты;
- две половины дня:
До обедаиПосле обеда.
После подтверждения выбора:
- invitation переводится в состояние
agreed; - заказ переводится в
Доставка согласована; - в
order_historyпоявляется запись о подтверждении; - в
delivery_slotsфиксируется подтверждённый слот.
Что хранится в Supabase
Основные таблицы
public.users— пользователи и роли;public.orders— заказы и текущие статусы;public.order_history— история изменений;public.delivery_slots— возможные и подтверждённые слоты доставки;public.delivery_invitations— публичные invitation token и состояние клиентского flow;public.integration_events— технические и интеграционные события.
Важные поля для клиентского flow
delivery_invitations.token_hash— хеш публичного токена;delivery_invitations.state— состояние приглашения;delivery_invitations.available_slots— список доступных вариантов для клиента;delivery_invitations.delivery_dateиdelivery_invitations.delivery_time— выбранный или основной слот;orders.status— текущий рабочий статус заказа;orders.delivery_agreement_status— статус согласования доставки.
Как подготовить систему к показу
- Загрузить схему
supabase/schema.sql. - Создать нужных пользователей в
auth.users. - Выполнить
supabase/seed/stage-1-demo.sql. - Убедиться, что Edge Functions развернуты:
get-delivery-invitationconfirm-delivery-choicecreate-delivery-invitation
- Открыть внутренний кабинет.
- Открыть клиентскую ссылку
/delivery/client-flow-1001.
Что показывать на встрече
- вход во внутренний кабинет;
- список заказов для менеджера, логиста и водителя;
- карточку заказа и статусы;
- клиентскую ссылку с выбором даты и половины дня;
- изменение статуса заказа после подтверждения клиентом.