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

9.2 KiB
Raw Permalink Blame History

Структура проекта - Детальное описание

Обзор архитектуры

Проект состоит из нескольких версий формы, каждая из которых может иметь свои особенности. Основная рабочая версия находится в директории /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

Операции:

  1. getchallenge - получение токена
  2. login - авторизация и получение sessionId
  3. CreateContact - создание/обновление клиента
  4. CreateAccount - создание/обновление контрагента
  5. CreateProject - создание проекта
  6. 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 - Email
  • birthday - Дата рождения
  • 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 - Email
  • phone - Телефон
  • website - Сайт

Другие поля (data-ws_type="other")

  • cf_2446 - Флаг наличия в базе
  • cf_1885 - Номер полиса
  • cf_1726 - Тип события
  • cf_2566 - Дата страхового случая
  • cf_2568 - Номер рейса/поезда
  • description - Описание ситуации
  • И другие кастомные поля

Безопасность

  1. Валидация файлов:

    • Проверка расширений
    • Проверка MIME-типов
    • Ограничение размера (5 МБ)
    • Ограничение количества (10 файлов)
  2. Валидация данных:

    • Проверка обязательных полей
    • Валидация email
    • Валидация телефона
    • Проверка форматов дат
  3. Защита от атак:

    • Экранирование данных
    • Использование prepared statements (рекомендуется)
    • Валидация на сервере
    • CSRF-токены (если реализованы)

Логирование

Логи сохраняются в:

  • logs/logfile.log - общие логи
  • formlog/ - логи форм
  • JSON-файлы с префиксом resend_log_ - логи повторной отправки

Тестирование

Тестовый режим формы

Добавьте ?demodata=1 к URL для автоматического заполнения всех полей.

Тестовые данные для API

  • ИНН: 643922466250
  • СМС-код: 795372

Рекомендации по разработке

  1. Всегда тестируйте изменения в /test/ перед применением в продакшене
  2. Используйте версионирование для отслеживания изменений
  3. Логируйте важные операции
  4. Валидируйте данные на сервере, не только на клиенте
  5. Используйте prepared statements для SQL-запросов
  6. Регулярно проверяйте логи на ошибки
  7. Делайте резервные копии перед крупными изменениями