9.2 KiB
Структура проекта - Детальное описание
Обзор архитектуры
Проект состоит из нескольких версий формы, каждая из которых может иметь свои особенности. Основная рабочая версия находится в директории /ticket/.
Основные компоненты
1. Frontend (Клиентская часть)
index.php
Главный файл формы, содержит:
- HTML-разметку многошаговой формы
- PHP-код для получения IP и региона пользователя
- Интеграцию с внешними API (ip-api.com)
- Структуру из 3 шагов:
- Шаг 1: SMS-подтверждение и проверка полиса
- Шаг 2: Информация о страховом случае
- Шаг 3: Персональные данные и документы
js/common.js
Основной JavaScript файл, реализует:
- Валидацию форм на каждом шаге
- Маски ввода (телефон, ИНН, даты, банковские реквизиты)
- Логику переключения между шагами
- Отправку SMS-кодов
- Загрузку и валидацию файлов
- Конвертацию HEIC в JPEG
- AJAX-запросы к серверу
- Интеграцию с DaData API для автодополнения
css/main.css и css/custom.css
Стили для формы, включая:
- Адаптивный дизайн
- Стили для шагов формы
- Стили для загрузки файлов
- Модальные окна
2. Backend (Серверная часть)
database.php
Проверка полисов в базе данных:
- Подключение к MySQL
- Проверка номера полиса
- Валидация тарифов
- Проверка сроков действия полиса
- Возврат JSON-ответа с результатами
sms-test.php
Тестирование отправки SMS:
- Генерация кода подтверждения
- Отправка SMS на указанный номер
- Логирование операций
file-server.php (если существует)
Обработка загрузки файлов на сервер
3. Интеграция с CRM
Основной endpoint
https://form.clientright.ru/server_new.php
Обрабатывает:
- Данные формы из POST-запроса
- Загруженные файлы
- Отправку данных в CRM через
capture.php - Логирование операций
Веб-сервисы CRM
https://crm.clientright.ru/webservice.php
Операции:
- getchallenge - получение токена
- login - авторизация и получение sessionId
- CreateContact - создание/обновление клиента
- CreateAccount - создание/обновление контрагента
- CreateProject - создание проекта
- GetFilesList - получение списка файлов клиента
4. База данных
Структура таблицы lexrpiority
Поля (предположительно):
innилиpolice_number- номер полисаbirthday- дата рожденияinsured_from- дата начала действияinsured_to- дата окончания действияtariff- тариф полиса
Валидные тарифы
Базовые тарифы:
- STB0048, STB1099, STB1100, STB2099
- AVS21500, AVS22500
Дополнительные тарифы:
- SPV0001-SPV0005, STV0090
- SPV1001-SPV1005, SPV2001-SPV2005
- OPV1001-OPV1005, OPV2001-OPV2005
5. Внешние библиотеки
JavaScript библиотеки
- jQuery 3.6.3 - основной фреймворк
- Inputmask - маски ввода
- Datepicker - выбор дат
- intl-tel-input - ввод телефонных номеров
- Fancybox - модальные окна
- heic2any - конвертация HEIC в JPEG
- suggestions-jquery - автодополнение адресов (DaData)
PHP библиотеки (Composer)
- PHPMailer - отправка email
- FPDF/FPDI - работа с PDF
- PDF Merger - объединение PDF
6. Поток данных
Пользователь заполняет форму
↓
Валидация на клиенте (JavaScript)
↓
Отправка данных на server_new.php
↓
Обработка файлов и данных
↓
Отправка в CRM через capture.php
↓
Получение sessionId через веб-сервисы
↓
Создание/обновление клиента (CreateContact)
↓
Создание/обновление контрагента (CreateAccount)
↓
Создание проекта (CreateProject)
↓
Загрузка файлов в CRM
↓
Отправка подтверждающего email
↓
Возврат результата пользователю
Версии проекта
/ticket/ - Основная рабочая версия
Используется в продакшене.
/ticket3/ - Альтернативная версия
Возможно, содержит изменения или эксперименты.
/ervws/ - Версия для веб-сервисов
Версия с акцентом на веб-сервисы.
/test/ - Тестовая версия
Для тестирования новых функций.
/public_html/ - Публичная версия
Публичная версия для клиентов.
Конфигурация полей формы
Поля клиента (data-ws_type="client")
firstname- Имяlastname- Фамилияsecondname- Отчествоmobile- Телефонemail- Emailbirthday- Дата рожденияmailingstreet- Адрес регистрацииinn- ИННcode- SMS-код
Поля проекта (data-ws_type="project")
cf_1887- Дата начала страхования (insured_from)cf_1889- Дата окончания страхования (insured_to)cf_1899- Код документаcf_1804- Серия и номер документаcf_2502- Согласие на обработку данных
Поля контрагента (data-ws_type="contractor")
inn- ИННogrn- ОГРНaccountname- Наименованиеaddress- Адресemail- Emailphone- Телефонwebsite- Сайт
Другие поля (data-ws_type="other")
cf_2446- Флаг наличия в базеcf_1885- Номер полисаcf_1726- Тип событияcf_2566- Дата страхового случаяcf_2568- Номер рейса/поездаdescription- Описание ситуации- И другие кастомные поля
Безопасность
-
Валидация файлов:
- Проверка расширений
- Проверка MIME-типов
- Ограничение размера (5 МБ)
- Ограничение количества (10 файлов)
-
Валидация данных:
- Проверка обязательных полей
- Валидация email
- Валидация телефона
- Проверка форматов дат
-
Защита от атак:
- Экранирование данных
- Использование prepared statements (рекомендуется)
- Валидация на сервере
- CSRF-токены (если реализованы)
Логирование
Логи сохраняются в:
logs/logfile.log- общие логиformlog/- логи форм- JSON-файлы с префиксом
resend_log_- логи повторной отправки
Тестирование
Тестовый режим формы
Добавьте ?demodata=1 к URL для автоматического заполнения всех полей.
Тестовые данные для API
- ИНН:
643922466250 - СМС-код:
795372
Рекомендации по разработке
- Всегда тестируйте изменения в
/test/перед применением в продакшене - Используйте версионирование для отслеживания изменений
- Логируйте важные операции
- Валидируйте данные на сервере, не только на клиенте
- Используйте prepared statements для SQL-запросов
- Регулярно проверяйте логи на ошибки
- Делайте резервные копии перед крупными изменениями