supersam/docs/scenarios.md

70 lines
5.9 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.

# Сценарии работы приложения
## 1. Оператор входит в систему
1. Оператор (логист, водитель или админ) открывает `/login` и вводит email.
2. Система отправляет одноразовый код на почту. На экране подсказка: «Проверьте входящие и папку Спам».
3. Если email не найден в системе, показывается: «Email не найден в системе. Обратитесь к администратору.»
4. После ввода верного кода оператор попадает в дашборд согласно роли.
## 2. Логист открывает рабочее пространство доставки
1. Логист видит **LogisticsReadinessBoard** — доску с наборами доставки, сгруппированными по статусам:
- **На подходе**: не все заказы набора приняты ОТК.
- **Готово к запуску**: все заказы приняты, можно запускать доставку.
- **Ожидает клиента**: отправлено приглашение, ждём ответа.
- **Нужна ручная работа**: передано логисту, платное хранение, проблема.
- **Согласовано**: клиент подтвердил слот.
- **Завершено**: все заказы доставлены.
2. Клик по набору открывает **DeliverySetDetailPanel** с:
- Перечнем заказов набора, их 1С-номерами и шагами производства (раскрой, склейка, криволинейные, приёмка ОТК, отгрузка).
- Телефоном и email клиента, городом, связанными счетами.
- Текущим статусом слота.
3. Логист может запустить приглашение, назначить водителя или перейти к ручной обработке.
## 3. Согласование доставки с клиентом
1. Когда набор доставки готов, логист запускает отправку приглашения клиенту.
2. Клиент получает ссылку на `/delivery/:token`.
3. На странице клиент видит **DeliverySlotsPicker** с доступными датами и половинами дня.
4. Клиент выбирает слот и подтверждает. Статус набора переходит в «Ожидает клиента» → «Согласовано».
5. Если клиент не отвечает, система или логист переводит набор в «Нужна ручная работа».
## 4. Перенос доставки
1. Клиент нажимает «Запросить новую ссылку», логист получает уведомление.
2. Логист может переназначить слот или отправить новое приглашение.
3. Выбранный слот сохраняется в `delivery_slots`.
## 5. Исключение
1. Если клиент не отвечает в течение SLA, система создаёт исключение.
2. Набор переходит в «Нужна ручная работа».
3. Логист может снова отправить приглашение, перевести в платное хранение или отменить.
4. Администратор видит инцидент в панели аудита.
## 6. Водитель выполняет доставку
1. Водитель видит назначенные доставки с адресом, городом, интервалом и составом заказа.
2. Переводит статус: Загружен → В пути → Доставлен.
3. При проблеме переводит в «Проблема доставки».
## 7. Завершение доставки
1. Статус «Доставлен» подтверждает физическую передачу заказа клиенту.
2. После закрытия всех заказов набора он переходит в «Завершено».
3. В истории появляется финальная запись, а чат закрывается для активных действий.
## Demo-скрипт для первого платного milestone
1. Зайти под логистом (email: `mk7029953@yandex.ru`).
2. На дашборде увидеть LogisticsReadinessBoard с наборами:
- Волкова М.А. — «На подходе» (кухня готова, столешница ещё в производстве).
- Савин А.П. — «Готово к запуску» (все заказы приняты ОТК).
- Тарасова Е.И. — «Ожидает клиента» (приглашение отправлено).
- Фролова И.Д. — «Нужна ручная работа» (платное хранение).
- Орлова Н.С. — «Завершено».
3. Кликнуть по набору Савина — увидеть source-поля, production-шаги, готовность к запуску.
4. Перейти на публичную страницу приглашения — увидеть DeliverySlotsPicker с выбором даты и половины дня.
5. Зайти под водителем — увидеть назначенные доставки с адресами и быстрыми действиями.
6. Зайти под несуществующим email — увидеть «Email не найден в системе. Обратитесь к администратору.»