Files
erv-clientright/MEMORY.md
2026-03-13 10:42:01 +03:00

32 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Ключевые моменты по проекту 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` — инпут кода, затем `<div class="sms-checking sms-action">` с кнопками. Иначе селектор `$('.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** на `<form>`, чтобы браузер не ругался «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. Пользователь — Фёдор. Отвечать на русском.