# ТЗ: Evrone eGrocery — доставка последней мили

Демонстрационная версия документа · категория «Логистика» · №21

> Это демонстрационное техническое задание: оно показывает структуру и глубину
> документа, который передаётся вместе с прототипом. Боевое ТЗ по этому солюшену
> готовится и заменит этот файл.

## 1. Суть решения

Сборка с пикер-приложением, диспетчеризация, PWA курьера, трекинг, слоты.

Консьюмерская доставка. Приём заказа, сборка с пикер-приложением (включая замены товаров — специфика grocery), диспетчеризация курьеров, PWA курьера (маршрут, статусы, фото/код подтверждения), трекинг-ссылка клиенту, зоны и слоты доставки, тарифы.

## 2. Технологический стек

| Слой | Решение |
|---|---|
| Backend | Ruby on Rails 8, PostgreSQL |
| Frontend | Hotwire (Turbo + Stimulus), Tailwind CSS |
| Фоновые задачи | Solid Queue |
| Файлы | Active Storage, S3-совместимое хранилище |
| Деплой | Docker, Kamal, production + staging |

## 3. Роли

- Покупатель
- Сборщик
- Курьер
- Диспетчер

## 4. Модель данных

### 4.1. Order

```
customer_id: references
slot: tstzrange
state: enum # принят, собирается, в пути, доставлен
items: has_many
```

### 4.2. Replacement

```
order_item_id: references
suggested_product_id: references
approved: boolean
```

### 4.3. Courier

```
name: string
vehicle: enum
current_route_id: references, nullable
state: enum
```

## 5. Ключевые сценарии

1. Покупатель выбирает слот доставки в своей зоне
2. Сборщик комплектует заказ и предлагает замены отсутствующих позиций
3. Диспетчер распределяет заказы по курьерам
4. Курьер ведёт маршрут в PWA и подтверждает вручение фото или кодом

## 6. Интеграции

- Гео-сервис и маршрутизация
- Платежи
- Push-уведомления
- Товарные остатки

## 7. Нефункциональные требования

- Серверный рендеринг, работоспособность ключевых страниц без JavaScript
- Мобильная адаптивность обязательна
- Роли и права проверяются на уровне сервера, а не интерфейса
- Логирование действий пользователей по значимым операциям
- Покрытие тестами моделей и ключевых сценариев
- Развёртывание одной командой, окружения production и staging

## 8. Состав MVP

Заказ → сборка → курьер → трекинг.

## 9. Критерии приёмки

1. Все сценарии из раздела 5 проходят end-to-end на тестовом стенде
2. Роли из раздела 3 видят только то, что им положено
3. Интеграции из раздела 6 работают через слой адаптеров и переключаются конфигурацией
4. Прототип разворачивается из репозитория одной командой
5. Документация по запуску и переменным окружения лежит в README
