supersam/docs/product-overview.md

106 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SuperSam: Обзор системы
`SuperSam` — это система управления доставкой заказов. В текущем scope она состоит из трёх внутренних ролей и одной публичной страницы для клиента: менеджер, логист, водитель и клиент.
## Задачи приложения
- показать менеджеру единый реестр доставочных заказов с поиском и карточкой заказа;
- показать логисту список доставок на сегодня и ближайшие дни с половинами дня;
- показать водителю свои доставки, адрес, состав заказа и базовые статусы;
- дать клиенту публичную ссылку, по которой он выбирает дату и половину дня доставки;
- хранить состояние заказов, приглашений и истории изменений в Supabase.
## Роли
### Менеджер
- видит список заказов доставки;
- ищет по номеру заказа, клиенту и телефону;
- открывает карточку заказа и смотрит состав, комментарии и историю;
- не работает с созданием заказов и внутренними служебными экранами.
### Логист
- видит заказы, готовые к доставке;
- смотрит ближайшие даты: сегодня, завтра и послезавтра;
- смотрит половину дня и текущий статус доставки;
- открывает карточку заказа, чтобы свериться с деталями.
### Водитель
- видит только свои доставки;
- открывает адрес, клиента, состав заказа и комментарии;
- меняет базовый статус доставки по маршруту.
### Клиент
- получает публичную ссылку вида `/delivery/:token`;
- видит номер заказа и состав заказа;
- выбирает дату и половину дня: `До обеда` или `После обеда`;
- подтверждает выбор без входа во внутренний кабинет.
## Основные сценарии
### Внутренний сценарий
1. Заказ появляется в Supabase.
2. Менеджер видит его в реестре и сверяет состав.
3. Логист отслеживает готовность и ближайшее окно доставки.
4. Водитель получает свою доставку и доводит её до результата.
### Сценарий клиента
Клиентская страница работает по token из таблицы `public.delivery_invitations`.
После загрузки 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` — технические и интеграционные события.
## Как подготовить систему к показу
1. Загрузить схему `supabase/schema.sql`.
2. Выполнить `supabase/seed/stage-1-demo.sql`.
3. Убедиться, что развернуты Edge Functions:
- `get-delivery-invitation`
- `confirm-delivery-choice`
- `create-delivery-invitation`
4. Открыть внутренний кабинет и пройти вход под ролью.
5. Открыть клиентскую ссылку `/delivery/client-flow-1001`.
## Что показывать на встрече
- вход менеджера, логиста и водителя;
- реестр заказов и карточку заказа;
- список доставок по датам для логиста;
- карточку доставки водителя;
- клиентскую ссылку с выбором даты и половины дня.
## Полезные документы
- [README](/Users/mihailkucer/Documents/super-sam/README.md)
- [Архитектура](/Users/mihailkucer/Documents/super-sam/docs/architecture.md)
- [Сценарии](/Users/mihailkucer/Documents/super-sam/docs/scenarios.md)
- [Edge Functions](/Users/mihailkucer/Documents/super-sam/supabase/functions/README.md)