Перейти к содержанию

Модерация объекта недвижимости

При подаче объекта через API он отправляется на модерацию менеджеру MLS. Если объект содержит неразрешённые элементы справочников (города, районы, ЖК, не найденные через fuzzy search), менеджер сначала согласует каждый справочник, а затем — сам объект.

Сценарий без неразрешённых справочников

sequenceDiagram
    participant ЛА as Листинг-агент
    participant API
    participant Bot as MLS Bot
    participant М as Менеджер

    ЛА->>API: POST /properties
    API-->>ЛА: 201 Created
    API->>Bot: property.review.request (без unresolved)
    Bot->>М: Карточка объекта
    М->>Bot: Одобрить / Отклонить
    Bot->>API: property.review.decision

Сценарий с неразрешёнными справочниками

sequenceDiagram
    participant ЛА as Листинг-агент
    participant API
    participant Bot as MLS Bot
    participant М as Менеджер

    ЛА->>API: POST /properties (city: "Алмты")
    Note over API: fuzzy search: не найден
    API-->>ЛА: 201 Created
    API->>Bot: property.review.request + unresolved_refs
    Bot->>М: "Не найден: Город — Алмты"
    М->>Bot: [Показать справочник]
    Bot->>М: Список городов
    М->>Bot: [Назад]
    М->>Bot: Одобрить / Отклонить (по каждому справочнику)
    Bot->>М: Карточка объекта
    М->>Bot: Одобрить / Отклонить
    Bot->>API: property.review.decision (+ reference_decisions)

Участвующие сообщения

Шаг Сообщение Publisher Consumer
1 property.review.request API MLS Bot
2 property.review.decision MLS Bot API

Решения по справочникам

Решения по каждому справочнику (одобрить/отклонить добавление) передаются внутри сообщения property.review.decision в массиве reference_decisions. Отдельного сообщения для справочников нет — API обрабатывает всё в одном сообщении.

Что происходит при одобрении объекта

API выполняет переход в статус approved:

  1. Одобренные справочники из reference_decisions — API создаёт новые записи в таблицах cities, districts, residential_complexes
  2. Статус объекта меняется (property.status.approved)
  3. Если новый статус входит в MLS — публикуется mls.new_listing

Что происходит при отклонении

API выполняет переход в статус rejected:

  • Статус объекта меняется (property.status.rejected)
  • Объект не попадает в MLS-каталог

Неразрешённые справочники

При подаче объекта API пытается найти город, район и ЖК через fuzzy search (pg_trgm, порог 0.3). Если совпадение не найдено, элемент попадает в unresolved_references.

Менеджер может:

  • Одобрить добавление — API создаст новый элемент справочника
  • Отклонить — элемент не будет создан
  • Показать справочник — просмотреть существующие записи для сравнения