# Управление меню KILN

1. Скопируйте `.env.example` в `.env.local`, задайте `DATABASE_URL`, `NEXT_PUBLIC_SITE_URL`, `ADMIN_LOGIN` и `ADMIN_PASSWORD_HASH`. Хеш пароля сгенерируйте командой `npm run admin:hash -- 'длинный случайный пароль'`; исходный пароль не храните в репозитории.
2. Запустите PostgreSQL (`docker compose up -d postgres`; в этой конфигурации host-порт `55432`) и примените `pnpm db:migrate`.
3. Выполните `pnpm menu:extract-yandex`, затем `pnpm menu:download-images --dry-run` и `pnpm menu:download-images`. Проверьте `data/import/yandex-menu-report.json`, `data/import/yandex-menu-images.json` и `data/import/yandex-menu-reconciliation.csv`.
4. Выполните `pnpm menu:import-yandex --dry-run`, затем `pnpm menu:import-yandex`.
5. Откройте `/admin/menu` и войдите по логину/паролю. Сессия хранится на сервере в PostgreSQL, cookie не содержит секретов; для POST/PATCH/DELETE используется CSRF-токен. Алкоголь создаётся с запретом онлайн-заказа/доставки и выключенной публикацией в Яндексе.
6. Проверьте `/menu`, `/yandex-menu` и `pnpm menu:validate`.

Изображения нужно загрузить в собственное HTTPS-хранилище и указать абсолютный URL. URL Яндекс Карт не сохраняются как постоянные ссылки. Яндекс забирает фид по собственному расписанию; сайт только сразу публикует актуальный XML.
