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

3.8 KiB
Raw Permalink Blame History

Ключевые моменты по проекту 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, hotelshttps://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 strongflex: 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. Пользователь — Фёдор. Отвечать на русском.