# Ключевые моменты по проекту ERV (формa Багаж, ticket_dev, miniapp) ## Структура проектов - **miniapp** — основная форма (авиа + отель), эталон рабочей логики СМС и модалок. - **hotels** — форма только по риску «Неполучение услуг размещения (отель)», класс `form-hotels-only`. - **ticket_dev** — копия ticket с проверкой полиса через N8N, ios-оформление, тестовый СМС. - **luggage** — форма «Багаж» (задержка/утрата/повреждение), копия ticket_dev по структуре. ## Модалка СМС (подтверждение кода) - **Чтобы кнопка «Подтвердить» кликалась:** кнопка должна быть **внутри** элемента с классом `sms-checking` (как в miniapp). Разметка: внутри `.form-item.sms-checking` — инпут кода, затем `
` с кнопками. Иначе селектор `$('.sms-checking .js-accept-sms')` не находит кнопку. - Открытие через **Fancybox**: `$.fancybox.open({ src: '#confirm_sms', type: 'inline' })`, закрытие `$.fancybox.close()`. - Обработчик — прямой: `$('.sms-checking .js-accept-sms').on('click', ...)` и `var code = $('.sms-checking input[type="text"]').val();`. - **Где правили:** luggage/index.php + luggage/js/common.js; ticket_dev/index.php (разметка по аналогии с miniapp). ## Куда уходит submit - **miniapp, hotels** → `https://n8n.clientright.pro/webhook/oldform_combine` - **ticket_dev, luggage, ticket** → URL берётся из **.env**: переменная **N8N_SEND_WEBHOOK**. В luggage/ticket_dev в submit.php подключается env_loader.php и `$webhook_url = trim(env('N8N_SEND_WEBHOOK', '...'));`. Пример в luggage/.env: `N8N_SEND_WEBHOOK=https://n8n.clientright.pro/webhook/oldform_combine`. ## Валидация и форма (luggage) - Форма с пошаговыми шагами: **novalidate** на `
`, чтобы браузер не ругался «invalid form control is not focusable» для полей с minlength на скрытых шагах. - Описание: минимум 20 символов, атрибут `data-minlen="20"`, проверка в JS при submit; при ошибке — показ сообщения и прокрутка к полю описания. - Поле «Задержка выдачи багажа (часов)»: обязательно при выборе типа «Задержка», только цифры — класс `js-delay-hours-mask`, inputmask `9{1,4}`, без `notvalidate`. ## Список файлов (длинные имена) - В .fileList длинное имя не должно наезжать на размер: у `.fileList li strong` — `flex: 1 1 auto`, `min-width: 0`, `overflow: hidden`, `text-overflow: ellipsis`, `white-space: nowrap`. Размер и крестик — `flex-shrink: 0`. Правили luggage, miniapp, ticket_dev, hotels в css/main.css. ## Тестовый СМС (без реальной отправки) - В .env: `SMS_ENABLED=false`. В sms-verify.php при action=send возвращается `demo_code`, при action=verify проверка локально (Redis/файл). В common.js при успешной отправке показывается код в модалке (`data.demo_code`) и подстановка в поле. ## Окружение - Ubuntu 22.04. Пользователь — Фёдор. Отвечать на русском.