Разработка автоматизированной CRM-системы для визового сопровождения
Тип проекта: B2B/B2C Платформа, Автоматизированная CRM Роль: Software Architect, Senior Full-Stack Developer Стек: PHP, Laravel, MySQL, Nginx, Alpine.js, Tailwind CSS, Telegram Bot API, Spatie PDF-to-Text
Описание проекта Процесс оформления виз сопряжен с огромным объемом рутинной работы: сбором паспортов, отслеживанием талонов на подачу, ручным переносом данных из файлов и постоянным информированием клиентов. Данная CRM создавалась как централизованный хаб для полной автоматизации документооборота между туристами, менеджерами и визовыми центрами. Система автономно перехватывает документы, распознает данные клиентов, ведет их по строгой воронке статусов и предоставляет как удобную панель для сотрудников, так и защищенный личный кабинет для конечного пользователя.
Архитектура и технические решения Проект построен на базе фреймворка Laravel. В основе архитектуры лежит прагматичный подход: система должна быть быстрой, отказоустойчивой и требовать минимум ручных действий от менеджера. Ключевые узлы системы:
-
Автоматизированный конвейер документов (Telegram Pipeline): Написан кастомный сервис-обработчик, который перехватывает файлы (PDF, ZIP, TXT) напрямую из Telegram-чатов. Система «на лету» определяет направление (страну), привязывает документ к нужному клиенту или автоматически создает новую заявку.
-
Асинхронная обработка (Queues & Batches): Вся тяжелая логика — чтение PDF-файлов, массовая загрузка сотен заявок, генерация отчетов и рассылка уведомлений — вынесена в фоновые процессы (Laravel Jobs/Supervisor). Это полностью исключает блокировку интерфейса при высоких нагрузках.
-
Глубокое логирование (Audit Trail): Разработан независимый
LoggerService, который фиксирует любые мутации моделей (изменения статусов, дат, удаление файлов, массовые действия). Менеджер всегда видит детализированную историю по каждому клиенту (в формате «Было -> Стало»), что критически важно для разрешения конфликтных ситуаций.
Пользовательский интерфейс и дашборд Вместо использования тяжеловесных SPA-фреймворков (React/Vue), был выбран минималистичный и сверхбыстрый стек Alpine.js + Tailwind CSS. Это позволило создать реактивный интерфейс, который работает мгновенно. Реализованы продвинутые функции управления: «бесшовная» фильтрация и сортировка таблиц с изменением URL без перезагрузки страницы (History API), удобные модальные окна для массового редактирования данных и визуальное цветовое кодирование связанных заявок (например, при подаче всей семьей).
Многоуровневый парсинг и фоллбэки (Fallbacks) Поскольку визовые центры (VFS Global, BLS и др.) используют совершенно разные форматы талонов и анкет, в системе реализован умный алгоритм извлечения данных:
-
Сначала система пытается извлечь паспорта, имена и даты записей с помощью регулярных выражений из строгой структуры названий файлов.
-
В случае нестандартного нейминга срабатывает резервный механизм (fallback): система физически открывает PDF-документ на сервере, извлекает сырой текст и с помощью сложных паттернов находит точную дату записи и данные заявителя.
Преодоление технических вызовов При реализации массовой обработки файлов и взаимодействия с Telegram API возникли риски race conditions (состояния гонки) и исчерпания серверного места временными файлами. Проблема была решена строгим контролем выполнения скриптов через блокировки (Cache Locks), группировкой задач (Bus::batch) для контроля прогресса и надежными try-finally конструкциями, гарантирующими очистку файловой системы (temp-файлов) даже при критических сбоях сторонних библиотек.
Результат Создана быстрая, масштабируемая и интуитивно понятная CRM, которая сократила время на обработку одного клиента с нескольких минут до секунд. Проект демонстрирует уверенное владение современным backend-стеком, умение выстраивать надежную архитектуру очередей, писать сложные алгоритмы парсинга и создавать прагматичные интерфейсы, решающие реальные задачи бизнеса.
