codecrafter@portfolio

➜ ~/projects joywork.md

← cd ..
Статус
Активно поддерживается
Разработка
04.08.2023 — 27.06.2026 35 мес.
Клиент
Личный проект
Моя роль
Fullstack Developer

# JoyWork — специализированная CRM-система для агентств недвижимости

JoyWork — специализированная CRM-система для агентств недвижимости

# Описание

Многофункциональная B2B SaaS CRM-платформа, разработанная для оптимизации и автоматизации бизнес-процессов в агентствах недвижимости. Система связывает в единую экосистему базы данных объектов недвижимости, карточки клиентов и входящие заявки, а также предоставляет гибкие инструменты администрирования для руководителей компаний.

⚡ Задача

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

- Разработать модуль автоматического мэтчинга (связывания) требований клиентов из заявок с доступными объектами базы;

- Спроектировать сложную, кастомизируемую систему ролей и прав доступа для изоляции данных внутри агентств;

- Интегрировать движок мгновенного полнотекстового поиска по десяткам параметров недвижимости.

🔌 Интеграции

- Полнотекстовый поисковый движок Sphinx — для мгновенной фильтрации и поиска по сложным текстовым и числовым свойствам недвижимости;

- Комбинированная архитектура БД (MySQL + PostgreSQL) — для оптимизированного хранения реляционных данных и JSON-логов;

- Внутренний модуль пересечения данных — автоматическое создание лидов при совпадении критериев «Заявка - Объект»;

🎯 Результаты

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

- Создана гибкая матрица доступов (ACL): администраторы агентств могут настраивать видимость объектов и контактов клиентов для каждого сотрудника;

- Внедрен функционал связывания сущностей, сокративший время рутинного подбора недвижимости агентами;

- Обеспечен высокоскоростной поиск по базе объектов за счет переноса тяжелых поисковых запросов в Sphinx.

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

- Синхронизация и поддержка двух СУБД (MySQL и PostgreSQL): Использование разных баз данных для разных модулей требовало строгой согласованности данных при обработке транзакций.

Решение: Логически разделил домены данных. Тяжелые транзакционные B2B-модули и логирование перенес в PostgreSQL, а классическую реляционную структуру оставил в MySQL. Настроил синхронизацию через промежуточные события (Event-Driven подход) на уровне PHP-бэкенда.

- Оптимизация фасетного поиска по миллионам комбинаций свойств: Стандартные SQL-запросы с множественными JOIN при поиске квартир (этаж, район, цена, тип стен, площадь) перегружали сервер БД.

Решение: Интегрировал Sphinx Search в качестве поискового движка. Настроил регулярную индексацию базы недвижимости. Это позволило выполнять сложнейшие поисковые выборки менее чем за 50мс и полностью разгрузить основные базы данных.

- Производительность сложной системы проверки прав доступа (RBAC/ACL): Проверка прав пользователя при каждом просмотре списка объектов приводила к лавинообразному росту вложенных запросов в БД.

Решение: Реализовал иерархическую структуру ролей и закешировал маску прав пользователя в сессии/Redis. Ограничение выборки записей перенес непосредственно на уровень формирования SQL-запросов (динамическое добавление условий WHERE tenant_id = X AND...), исключив лишнюю фильтрацию на стороне PHP.

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

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