supersam/docs/scenarios.md

8.1 KiB
Raw Permalink Blame History

Сценарии работы приложения

1. Оператор входит в систему

  1. Оператор (логист, водитель или админ) открывает /login и вводит email.
  2. Система отправляет одноразовый код на почту. На экране подсказка: «Проверьте входящие и папку Спам».
  3. Если email не найден в системе, показывается: «Email не найден в системе. Обратитесь к администратору.»
  4. После ввода верного кода оператор попадает в дашборд согласно роли.

2. Логист открывает рабочее пространство доставки

  1. Логист видит LogisticsReadinessBoard — доску с наборами доставки, сгруппированными по статусам:
    • На подходе: не все заказы набора прошли контроль качества.
    • Готово к запуску: все заказы приняты, можно запускать доставку.
    • Ожидает клиента: отправлено приглашение, ждём ответа.
    • Нужна ручная работа: передано логисту, платное хранение, проблема.
    • Согласовано: клиент подтвердил слот.
    • Завершено: все заказы доставлены.
  2. Клик по набору открывает DeliverySetDetailPanel с:
    • Перечнем заказов набора, их 1С-номерами и шагами производства (раскрой, склейка, криволинейные, контроль качества, отгрузка).
    • Телефоном и email клиента, городом, связанными счетами.
    • Текущим статусом слота.

3. Согласование доставки с клиентом

  1. Когда набор доставки готов, логист запускает отправку приглашения клиенту.
  2. Клиент получает ссылку на /delivery/:token.
  3. На странице клиент видит вкладки 🚚 Доставка и 🏪 Самовывоз.
  4. На вкладке «Доставка» — DeliverySlotsPicker с доступными датами и половинами дня.
  5. На вкладке «Самовывоз» — PickupSlotsPicker с датами (сегодня до 12:00, завтра, послезавтра, без выходных) и половинами дня, а также информационный блок: «Бесплатное хранение — 2 рабочих дня. С 3-го рабочего дня — 300₽/день.»
  6. Клиент выбирает тип получения, слот и подтверждает. Статус набора переходит в «Ожидает клиента» → «Согласовано» или «Самовывоз».
  7. Если клиент не отвечает, система или логист переводит набор в «Нужна ручная работа».

4. Перенос доставки

  1. Клиент нажимает «Запросить новую ссылку», логист получает уведомление.
  2. Логист может переназначить слот или отправить новое приглашение.
  3. Выбранный слот сохраняется в delivery_slots.

5. Исключение

  1. Если клиент не отвечает в течение SLA, система создаёт исключение.
  2. Набор переходит в «Нужна ручная работа».
  3. Логист может снова отправить приглашение, перевести в платное хранение или отменить.
  4. Администратор видит инцидент в панели аудита.

6. Водитель выполняет доставку

  1. Водитель видит назначенные доставки с адресом, городом, интервалом и составом заказа.
  2. Переводит статус: Загружен → В пути → Доставлен.
  3. При проблеме переводит в «Проблема доставки».

7. Завершение доставки

  1. Статус «Доставлен» подтверждает физическую передачу заказа клиенту.
  2. После закрытия всех заказов набора он переходит в «Завершено».
  3. В истории появляется финальная запись, а чат закрывается для активных действий.

8. Самовывоз

Клиентский сценарий

  1. Клиент открывает ссылку /delivery/:token.
  2. Выбирает вкладку 🏪 Самовывоз.
  3. Видит доступные даты: сегодня (если до 12:00 текущего дня готовности), завтра, послезавтра (выходные пропускаются).
  4. Выбирает дату и половину дня: «До обеда» или «После обеда».
  5. Видит информационный блок: «Бесплатное хранение — 2 рабочих дня. С 3-го рабочего дня — 300₽/день.»
  6. Подтверждает выбор.
  7. В БД устанавливаются: delivery_type = 'pickup', delivery_status = 'pickup', pickup_date, pickup_time_slot.

Сценарий менеджера/логиста

  1. В карточке заказа (OrderDetailPanel) менеджер видит вкладки Доставка/Самовывоз.
  2. При выборе «Самовывоз» — поля даты и половины дня для самовывоза.
  3. Кнопка статуса «Самовывоз» доступна для менеджера, логиста и администратора.
  4. Менеджер может переключить тип доставки в любой момент до передачи водителю.

Статусы самовывоза

  • pickup — заказ ожидает самовывоза клиентом.
  • Переходы: pending_confirmationpickup, manual_confirmation_requiredpickup, pickupassigned_to_driver, pickupdelivered, pickupcancelled.

Сценарий показа заказчику

  1. Зайти под логистом.
  2. На дашборде увидеть LogisticsReadinessBoard с наборами:
    • Волкова М.А. — «На подходе» (кухня готова, столешница ещё в производстве).
    • Савин А.П. — «Готово к запуску» (все заказы прошли контроль качества).
    • Тарасова Е.И. — «Ожидает клиента» (приглашение отправлено).
    • Фролова И.Д. — «Нужна ручная работа» (платное хранение).
    • Орлова Н.С. — «Завершено».
  3. Кликнуть по набору Савина — увидеть source-поля, production-шаги, готовность к запуску.
  4. Перейти на публичную страницу приглашения — увидеть вкладки «Доставка» и «Самовывоз» с выбором даты и половины дня.
  5. Зайти под водителем — увидеть назначенные доставки с адресами и быстрыми действиями.
  6. Зайти под несуществующим email — увидеть «Email не найден в системе. Обратитесь к администратору.»