Improve delivery workflows and add versioned guided tours

This commit is contained in:
2026-10-08 01:35:24 +06:00
parent 1860e52b88
commit 55b5ca49e2
25 changed files with 933 additions and 1431 deletions
+64
View File
@@ -0,0 +1,64 @@
# Просмотр UI/UX правок
Ветка: `codex/ui-ux-guided-tour`.
## Локальный просмотр с вымышленными данными
Из папки `frontend`:
```sh
npm run build
npm run preview:demo
```
Откройте http://127.0.0.1:4174. Демо-вход: `demo` / `demo123`.
Это отдельный сервер с заявками в памяти; он не подключается к рабочему backend.
Перезапуск сбрасывает демонстрационные изменения. Номера телефонов вымышленные.
Остановить сервер: Ctrl+C. Демо-сервер не входит в production bundle.
## Что проверить
- Главная страница: быстрый переход к сегодняшним заявкам, календарь, ближайшие даты.
- Список: соседние дни, поиск, фильтры места загрузки/статуса, сброс фильтров.
- На телефоне дополнительные фильтры раскрываются кнопкой «Фильтры».
- Карточки: адрес и контакты первыми, крупные действия, условия доставки.
- Таблица: товар с загрузкой и клиент с контактами в одной ячейке.
- Изменение статуса сохраняет представление и соседние заявки; блокируется только текущая доставка.
- Перенос заявки сохраняет открытый день: перенесённая заявка исчезает из него, новая дата указана в подтверждении.
- Форма: отдельные группы, прокрутка содержимого, закреплённые действия; ошибки не стирают введённые данные.
- Escape закрывает диалог; с изменёнными данными запрашивается подтверждение. Во время сохранения закрытие и повторная отправка блокируются.
## Обучение
Два коротких тура: план доставок (4 шага), список (до 6 шагов).
Тур автоматически появляется при первом открытии соответствующего экрана после обновления.
Если заявок нет, шаги про конкретную заявку пропускаются.
«Пропустить», крестик и Escape завершают показ; «Помощь» повторяет тур текущего экрана.
Результат хранится в localStorage отдельно для каждого пользователя, версии тура и экрана.
На другом устройстве подсказки появятся снова. При недоступном хранилище тур остаётся работоспособным,
но после перезагрузки может появиться повторно.
Для следующего изменения рабочего процесса увеличьте `TOUR_VERSION`
в `src/components/ui/GuidedTour.tsx` и обновите соответствующие шаги.
Версия приложения сама по себе не запускает обучение заново.
## Проверки
```sh
npm run lint
npm test
npm run build
```
Регрессионные тесты проверяют перенос даты, проброс ошибки сохранения, независимость
обновления счётчиков от сохранения, локальное состояние смены статуса и гонку запросов разных дат.
Для проверки ошибки в демо перед следующим сохранением:
```sh
curl -X POST http://127.0.0.1:4174/__demo__/fail-next
```
Первое сохранение завершится ошибкой, повторное с теми же данными — успешно.
Этот служебный адрес существует только в демо-сервере.