Каталог объектов
API предоставляет список жилых комплексов и квартир, фильтрацию каталога и детальную карточку объекта.
Это backend-приложение для мобильного или web-фронтенда в сфере недвижимости. Оно отдаёт список жилых комплексов, позволяет получать квартиры с фильтрацией, открывать детальную карточку квартиры и отправлять целевые заявки на консультацию, бронирование или покупку.
Тестовое задание реализовано как backend-модуль для мобильного приложения недвижимости. Основной поток: пользователь выбирает жилой комплекс, просматривает квартиры, открывает карточку квартиры и отправляет заявку на консультацию, бронирование или покупку с последующей передачей в CRM.
API предоставляет список жилых комплексов и квартир, фильтрацию каталога и детальную карточку объекта.
Пользователь может отправить заявку по квартире на консультацию, бронирование или покупку с обязательной валидацией данных.
После локального сохранения заявка должна быть передана во внешнюю систему без дублей и без потери лида.
До начала реализации важно зафиксировать бизнес-границы модуля, правила работы заявки и ожидания от интеграции с CRM.
Idempotency-Key, система возвращает уже созданную заявку
без дубля.queued_for_sync.
available.Idempotency-Key.sold создание целевых заявок недоступно.reservation разрешена только для квартир со статусом
available.
purchase для квартиры со статусом reserved может
требовать подтверждения менеджера.Endpoints для ЖК, квартир и заявок, request-валидаторы для входных данных и API resources для единообразного JSON-ответа.
Основные сущности предметной области и enum-ы для типов и статусов, чтобы бизнес-логика оставалась явной и управляемой.
Сервис создания заявки, определение доступных действий по квартире и идемпотентность на уровне сервиса и базы данных.
Выделенный интеграционный слой для внешней CRM, чтобы изолировать transport logic и упростить доработки.
Асинхронная синхронизация, повторные попытки отправки и журнал ошибок, чтобы лид не терялся при отказах внешней системы.
В кодовой базе уже присутствуют модели, enum-ы, endpoint создания заявки, Swagger и feature-тесты пользовательского потока.
residential_complexesidnameslugcityaddressdescriptionexternal_idgalleryapartmentsidresidential_complex_idunit_numberroomsfloortotal_floorsarea_sqmpricecurrencystatuslayout_image_urlfinishingorientationfeaturesdescriptionbooking_expires_atexternal_systemexternal_idapartment_requestsidapartment_idtypestatuscustomer_namephoneemailcommentpreferred_contact_methodsource_channelidempotency_keyexternal_systemexternal_referenceintegration_payloadsubmitted_atcreated_atupdated_atApartmentRequest вынесена в отдельную сущность, потому что заявка имеет
собственный жизненный цикл и статусную модель.source_channel полезно для аналитики и оценки качества каналов
привлечения.