# Формат ответа n8n после проверки телефона ## Текущий формат (неполный) ```json { "success": true, "result": { "claim_id": "CLM-2025-11-19-7O55SP", "contact_id": "398644", "event_type": null, "current_step": 1, "updated_at": "2025-11-19T15:15:07.323Z" } } ``` ## Требуемый формат (с unified_id) ```json { "success": true, "result": { "claim_id": "CLM-2025-11-19-7O55SP", "contact_id": "398644", "unified_id": "usr_90599ff2-ac79-4236-b950-0df85395096c", // ← ДОБАВИТЬ! "event_type": null, "current_step": 1, "updated_at": "2025-11-19T15:15:07.323Z", "is_new_contact": false // опционально } } ``` ## Где добавить unified_id в n8n workflow ### Шаг 1: После CreateWebContact - Получен `contact_id` из CRM - Есть `phone` из запроса ### Шаг 2: PostgreSQL Node - Find or Create User - Выполнить SQL запрос из `SQL_FIND_OR_CREATE_USER_WEB_FORM.sql` - Параметр: `$1 = {{$json.phone}}` (нормализованный телефон) - Результат: `unified_id` и `user_id` ### Шаг 3: Response Node или Code Node Вернуть ответ с unified_id: ```javascript return { success: true, result: { claim_id: $('CreateWebContact').item.json.claim_id || $('GenerateClaimId').item.json.claim_id, contact_id: $('CreateWebContact').item.json.contact_id, unified_id: $('PostgreSQL_FindOrCreateUser').item.json.unified_id, // ← ВАЖНО! event_type: null, current_step: 1, updated_at: new Date().toISOString(), is_new_contact: $('CreateWebContact').item.json.is_new_contact || false } }; ``` ## Важно! 1. **unified_id обязателен** - frontend использует его для поиска черновиков 2. **Формат unified_id**: `usr_{UUID}` (например, `usr_90599ff2-ac79-4236-b950-0df85395096c`) 3. **Если unified_id отсутствует** - frontend не сможет найти черновики пользователя 4. **При создании/обновлении черновика** - обязательно заполнять `clpr_claims.unified_id = unified_id` ## Проверка в frontend Frontend уже готов принимать unified_id: ```typescript // Step1Phone.tsx, строка 132 updateFormData({ phone, smsCode: code, contact_id: result.contact_id, unified_id: result.unified_id, // ✅ Уже ожидается! claim_id: result.claim_id, is_new_contact: result.is_new_contact }); ``` ## Пример полного workflow в n8n 1. **Webhook** → получает `{phone, session_id, form_id}` 2. **CreateWebContact** → создает/находит контакт в CRM → возвращает `contact_id` 3. **GenerateClaimId** → генерирует `claim_id` (если нужно) 4. **PostgreSQL: Find or Create User** → выполняет SQL запрос → возвращает `unified_id` 5. **Response** → возвращает полный ответ с `unified_id`