# ТЗ: Evrone Cargo — B2B транспортная логистика

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

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

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

Заявки, рейсы и маршруты, гео-статусы, документооборот, взаиморасчёты.

Заявки на перевозку, подбор транспорта и водителей, рейсы и маршруты, статусы с гео-отметками, документооборот (ТТН, акты), тарификация и взаиморасчёты с перевозчиками, интеграция с ERP заказчика.

## 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. ShipmentRequest

```
route_from: string
route_to: string
cargo: jsonb
ready_at: datetime
state: enum
```

### 4.2. Trip

```
request_id: references
vehicle_id: references
driver_id: references
waypoints: jsonb
```

### 4.3. Document

```
trip_id: references
kind: enum # ТТН, акт, счёт
file: has_one_attached
signed_at: datetime, nullable
```

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

1. Заказчик оставляет заявку на перевозку с параметрами груза
2. Логист подбирает транспорт и водителя, формирует рейс
3. Статусы рейса приходят с гео-отметками
4. Закрытие рейса собирает документы и взаиморасчёты

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

- Телематика транспорта
- ЭДО
- ERP заказчика
- Тарифные справочники

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

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

## 8. Состав MVP

Заявка → рейс → документы → закрытие.

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

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