# ThaiForTravel Mini App API

WordPress-плагин создаёт namespace:

```text
/wp-json/tft-miniapp/v1
```

Маршруты:

- `GET /health`
- `GET /cities`
- `GET /filters`
- `GET /tours`
- `GET /tours/{id}`
- `GET /transfers`
- `GET /transfers/{id}`

## Установка

1. Скопировать папку `tft-miniapp-api` в `wp-content/plugins`.
2. Активировать плагин в WordPress.
3. Открыть несколько экскурсий и назначить категории Mini App.
4. При необходимости отметить популярные экскурсии и уточнить длительность.

Для мгновенного сброса backend-кэша можно добавить в `wp-config.php`:

```php
define('TFT_MINIAPP_BACKEND_PURGE_URL', 'https://api.example.com/v1/internal/catalog/purge');
define('TFT_MINIAPP_SYNC_SECRET', 'replace-with-long-random-secret');
```

Если константы не заданы, backend обновит данные после истечения TTL.

## Редакционные правки Mini App

Файл `data/catalog-overrides.json` содержит только отличия Mini App от сайта:
короткие клиентские заголовки, скрытие SEO-страниц и отдельные подписи цены.
Публичные страницы WordPress и их SEO-заголовки при этом не изменяются.

Файл `data/transfers.json` содержит нормализованный каталог трансферов:
одна карточка на маршрут и варианты автомобилей с вместимостью и ценой.
Если файл отсутствует или пуст, API возвращается к данным ACF со страниц
шаблона `template-transfer.php`.

## Источник данных

- ACF не отдаётся клиенту как есть.
- Цена нормализуется из `programs.variants`, `variants`, `prices` или резервных meta-полей.
- Галерея собирается из featured image и ACF gallery.
- HTML пропускается через WordPress allowlist.
- Категории можно назначать новой таксономией без изменения публичного дизайна сайта.
- При отсутствии категорий работает консервативная классификация по типу записи и ключевым словам.
