Контракт контекста подготовки заявки

Назначение

Необязательный объект preparation передаёт сведения о том, с какого этапа клиент продолжает сложный ипотечный разбор.

Контекст используется для маршрутов:

Он не является оценкой вероятности одобрения, не заменяет проверку ипотечного брокера и не меняет окончательное решение банка.

Совместимость

Публичный контракт остаётся schema_version: 1.

Объект preparation необязателен. Старые и обычные заявки без него должны продолжать приниматься.

Версия структуры контекста хранится в preparation.context_version и сейчас равна 1.

JSON

{
  "preparation": {
    "context_version": 1,
    "active": true,
    "journey_type": "Сложный региональный маршрут",
    "journey_stage": "После изучения маршрута подготовки",
    "scenario_slug": "otkazali-v-ipoteke",
    "completed_checks": ["diagnosis", "finances"],
    "completed_labels": [
      "Зафиксировал(а) банк, дату и этап отказа",
      "Проверил(а) кредиты, карты и ежемесячные платежи"
    ],
    "remaining_questions": "Нужно понять, связан ли отказ с объектом"
  }
}

Поля

Поле Тип Ограничение Назначение
context_version number сейчас 1 Версия структуры контекста
active boolean true только для подтверждённого сложного входа Отличает обычную короткую заявку
journey_type string до 160 символов Человекочитаемый тип маршрута
journey_stage string до 200 символов Этап, с которого продолжается разбор
scenario_slug string до 160 символов Стабильный машинный ключ сценария
completed_checks string[] до 4 элементов Стабильные ключи выполненных проверок
completed_labels string[] до 4 элементов, каждый до 180 символов Подписи, которые видел клиент
remaining_questions string до 700 символов Что осталось непонятно или требует проверки

Допустимые ключи completed_checks:

Web3Forms

В email-запрос передаются отдельные поля:

fields_json также содержит объект preparation.

Контекст добавляется отдельным разделом ПОДГОТОВКА ДО ОБРАЩЕНИЯ в поле message. Он не записывается в mortgage.comment и не изменяет исходный комментарий клиента.

Supabase

Дополнительная миграция:

supabase/migrations/202607130003_broker_lead_preparation.sql

Edge Function сохраняет исходный raw_payload. Серверный trigger sync_broker_lead_preparation извлекает объект в поля:

Такой подход сохраняет обратную совместимость Edge Function с schema_version=1 и позволяет CRM фильтровать заявки без разбора полного raw_payload.

Безопасность

В контексте запрещено передавать:

Пользовательские подписи и вопросы считаются недоверенным текстом. Серверная миграция ограничивает длину полей, а интерфейс ограничивает remaining_questions 700 символами.

Аналитика

События:

Эти события не означают отправку заявки. Фактическая техническая отправка фиксируется отдельным lead_submit.

ЗаявкаПозвонитьВК