# 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)