➜ ~/projects intermark.md
← cd ..# 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.