# Legacy import runbook

## Перед запуском

Заполнить в `backend/.env`:

- `LEGACY_DB_HOST`
- `LEGACY_DB_PORT`
- `LEGACY_DB_DATABASE`
- `LEGACY_DB_USERNAME`
- `LEGACY_DB_PASSWORD`

## Команды

### Полный импорт в чистую новую БД

```bash
php artisan hub:legacy:full-import --fresh
```

Что делает:

1. очищает текущие hub-таблицы и staging
2. забирает raw snapshot из legacy
3. seed-ит mapping rules
4. переносит lookups, users, customers, fleet, bookings, customer documents
5. пишет links и errors

### Только забрать raw snapshot

```bash
php artisan hub:legacy:import-raw
```

### Досинхронизировать из уже загруженного raw run

```bash
php artisan hub:legacy:sync all
php artisan hub:legacy:sync customers
php artisan hub:legacy:sync fleet
php artisan hub:legacy:sync bookings
```

### Проверить баланс counts после импорта

```bash
php artisan hub:legacy:reconcile
```

## Что нужно проверять после первого full import

- количество `users`
- количество `customers`
- количество `vehicles`
- количество `bookings`
- количество `booking_extras`
- количество `customer_documents`
- количество ошибок в `legacy_import_errors`

## Что importer делает консервативно

- не merge-ит клиентов по слабым признакам
- не придумывает payment ledger из пустой legacy таблицы
- не переносит legacy booking exact-car как структуру брони
- сохраняет raw snapshot для повторного прогона

## Что ещё останется отдельным этапом

- копирование физических файлов документов в новое storage
- ручная проверка спорных дублей клиентов
- доработка payment ledger уже по новой модели
