codecrafter@portfolio

➜ ~/projects intermark.md

← cd ..
Статус
Завершен
Разработка
Даты не указаны
Клиент
Личный проект
Моя роль
Fullstack Developer

# Intermark Real Estate - лидер рынка элитной недвижимости

Intermark Real Estate - лидер рынка элитной недвижимости

# Описание

Высоконагруженный мультиязычный веб-портал корпоративного уровня для ведущего международного агентства недвижимости Intermark. Платформа агрегирует и структурирует свыше 14 000 эксклюзивных лотов в сегментах Luxury Residential, Commercial и Overseas Property. Ключевая особенность проекта — 100% бесшовная интеграция с кастомной коробочной (On-Premise) версией JoyWork CRM, превращающая сайт в реактивное зеркало внутренней базы агентства.

⚡ Задача

- Разработать отказоустойчивую архитектуру публичной витрины данных на базе кастомной CMS/Framework, способную мгновенно обрабатывать миллионы связей объектов;

- Реализовать двунаправленную синхронизацию (Data Sync Pipeline) между локальными серверами JoyWork CRM и базой данных сайта с задержкой изменений < 2 секунд;

- Спроектировать сложнейший сквозной фасетный фильтр для разных типов рынков (Городская, Загородная с привязкой к шоссе/поселкам, Зарубежная по странам и Коммерческая);

- Интегрировать кастомные интерактивные интерфейсы выбора объектов: интерактивную SVG/Canvas карту Московского метрополитена и алфавитные реестры коттеджных поселков;

- Обеспечить защиту от агрессивного скрейпинга (парсинга) уникальной базы объектов конкурентами без блокировки легитимных пользователей и поисковых роботов.

🔌 Интеграции

- JoyWork CRM (On-Premise Enterprise Core): Глубокая двусторонняя интеграция с коробочной версией CRM-системы по закрытому REST API с использованием авторизации по JWT-токенам.

1. Синхронизация данных: Построена шина данных на базе веб-хуков (Webhooks) и очередей сообщений. При обновлении лота брокером в CRM, сайт получает JSON-пакет с изменениями. Обратный поток передает в CRM лог активности клиентов и бронирования.

2. Маршрутизация лидов (Lead Capture): Интегрированы API-эндпоинты для сквозной передачи лидов. Система считывает UTM-метки, тип устройства, ID просматриваемого объекта и передает данные в CRM, где алгоритм JoyWork автоматически назначает ответственного брокера по географическому или ценовому признаку лота.

3. Медиа-процессинг: Сайт подключен к внутреннему медиа-серверу CRM. При импорте фото и чертежей бэкенд сайта обращается к API, накладывает динамический водяной знак (водяной знак зависит от статуса объекта — эксклюзив/продажа) и распределяет сжатые WebP-копии по CDN-нодам.

- Sphinx / Elasticsearch Engine: Интеграция поискового демона для мгновенной обработки тяжелых фасетных выборок. Сайт синхронизирует поисковые индексы Sphinx с MySQL каждые 5 минут, обеспечивая мгновенный полнотекстовый поиск по 150+ параметрам без прямых запросов к основной БД.

- Yandex SmartCaptcha API: Защитная интеграция на уровне бэкенда для противодействия парсерам. Связана с кастомной системой скоринга трафика сайта: при обнаружении аномальной частоты запросов к API фильтрации, бэкенд перехватывает сессию и требует невидимую валидацию токена Яндекс Капчи.

- DaData / Яндекс.Карты API: Интеграция систем геокодирования и стандартизации адресов. Используется для автоматической валидации координат объектов, импортируемых из CRM, и расчета их точного вхождения в маркетинговые полигоны элитных районов (Geo-fencing).

- IP-Телефония (Mango Office / Телфин через CRM): Интеграция коллтрекинга. Сайт динамически подменяет номера телефонов в зависимости от рекламного источника, а интеграция с АТС на стороне CRM позволяет мгновенно открывать карточку звонящего клиента у назначенного брокера.

🎯 Результаты

- Развернута масштабируемая экосистема, объединяющая публичный портал и корпоративное B2B-ядро в единый конвейер продаж;

- Внедрен интерактивный параметрический поиск с поддержкой более чем 150 критериев фильтрации элитного жилья (вид, террасы, камины, спа-комплексы);

- Созданы кастомные инструменты навигации: удобный селектор станций метро и многоуровневая структура выбора зарубежных локаций (70+ стран);

- Оптимизирована производительность: генерация страниц и выдача результатов фильтрации происходят быстрее 150мс благодаря глубокому индексированию СУБД.

🛠 Технические вызовы

- Конфликты блокировок таблиц и деградация производительности базы данных при массовом импорте из CRM: Ежедневное обновление цен, валютных курсов (USD/EUR/RUB) и статусов тысяч объектов из коробки JoyWork приводило к просадке скорости сайта из-за тяжелых операций записи.

Решение: Разделил базу данных сайта по принципу CQRS. Настроил чтение из оптимизированной реплики (Read-database), в то время как CRM обновляет данные в буферной таблице (Write-database). Синхронизация между ними происходит пачками (Batches) в фоновых очередях задач (cron/workers), что снизило нагрузку на CPU до стабильных 15%.

- Валидация и нормализация гео-данных при импорте из жесткой структуры CRM в гибкий фронтенд: Адреса объектов в JoyWork хранятся по строгим внутренним классификаторам. На сайте же требовалось группировать их по кастомным элитным кластерам («Патриаршие пруды», «Москва-Сити», «Новая Рига»), не совпадающим с официальными границами районов.

Решение: Написал прослойку автоматического геокодирования на бэкенде. При импорте объект проверяется по географическим координатам через полигоны (Geo-fencing), динамически присваивая лоту нужные маркетинговые теги районов и поселков на сайте.

- Агрессивный парсинг базы уникальных объектов ботами конкурентов: Уникальный контент элитных лотов постоянно выкачивался скриптами, что перегружало сервер и ухудшало SEO-ранжирование оригинальных страниц.

Решение: Разработал многоуровневую систему защиты. Внедрил поведенческий анализ запросов к API фильтрации на бэкенде, настроил строгие лимиты (Rate Limiting) в связке с Yandex SmartCaptcha для подозрительных сессий. Это отсекло 99% бот-трафика без ущерба для индексации Яндексом и Google.

# Стек технологий

PHP Elasticsearch MySQL PostgreSQL HTML5 IP Telephony
➜ cd .. (Назад к списку)