# Настройка Mapbox Directions API

Этот документ описывает, как настроить интеграцию с Mapbox Directions API для расчета времени доставки.

## Шаг 1: Получение Access Token Mapbox

1. Перейдите на [Mapbox Account](https://account.mapbox.com/)
2. Войдите в свой аккаунт или создайте новый
3. Перейдите в раздел **Access tokens**
4. Скопируйте ваш **Default public token** или создайте новый токен
5. Убедитесь, что токен имеет разрешения на использование Directions API

## Шаг 2: Добавление токена в .env файл

Добавьте следующую строку в файл `.env`:

```env
MAPBOX_ACCESS_TOKEN=ваш_access_token_здесь
MAPBOX_BASE_ADDRESS=Luitpoldstraße 44, 84034 Landshut
```

Если токен не указан, будет использован токен по умолчанию из конфигурации.

## Шаг 3: Проверка работы

После настройки access token:

1. Откройте страницу заказов в админ-панели
2. Откройте детали любого заказа с адресом доставки
3. В разделе "Информация о клиенте" должно отображаться "Примерное время доставки"
4. Время должно рассчитываться автоматически при открытии модального окна

## Использование API

API вызывается автоматически при открытии деталей заказа. Endpoint:

```
POST /api/admin/orders/calculate-delivery-time
```

Параметры запроса:
- `delivery_address` (required) - адрес доставки
- `postal_code` (optional) - почтовый индекс

Ответ:
```json
{
    "success": true,
    "data": {
        "duration_minutes": 15,
        "duration_text": "15 мин",
        "distance_text": "5.2 км",
        "distance_meters": 5200
    }
}
```

## Адрес ресторана

Адрес ресторана по умолчанию: `Luitpoldstraße 44, 84034 Landshut`

Этот адрес можно изменить в файле `.env`:
```env
MAPBOX_BASE_ADDRESS=ваш_адрес_ресторана
```

Или в файле:
- `kartulirest/resources/js/pages/admin/Orders.vue` (константа `RESTAURANT_ADDRESS`)
- `kartulirest/app/Http/Controllers/Api/Admin/OrderController.php` (метод `calculateDeliveryTime`)

## Обработка ошибок

Если access token не настроен или произошла ошибка:
- В логах Laravel будет записано предупреждение
- На фронтенде будет отображаться "Рассчитывается..." или сообщение об ошибке

## Стоимость использования

Mapbox Directions API имеет бесплатный лимит:
- **50,000 запросов в месяц** бесплатно
- После превышения лимита взимается плата: $0.50 за 1000 запросов

Подробнее о ценах: https://www.mapbox.com/pricing/

## Профили маршрутов

Поддерживаемые профили маршрутов:
- `driving` - автомобильный маршрут (по умолчанию)
- `walking` - пешеходный маршрут
- `cycling` - велосипедный маршрут

Профиль можно изменить в методе `getDistanceAndDuration()` сервиса `MapboxService`.

## Дополнительная информация

- [Документация Mapbox Directions API](https://docs.mapbox.com/api/navigation/directions/)
- [Документация Mapbox Geocoding API](https://docs.mapbox.com/api/search/geocoding/)
- [Руководство по безопасности токенов](https://docs.mapbox.com/help/troubleshooting/how-to-use-mapbox-securely/)

## Отличия от Google Maps

- Mapbox использует Geocoding API для получения координат адресов
- Затем использует Directions API для расчета маршрута
- Результаты возвращаются в метрах и секундах
- Форматирование расстояния и времени выполняется на стороне сервера
