Files
aiform_dev/docs/N8N_CODE_NODE_RESPONSE_SAFE.js

48 lines
2.0 KiB
JavaScript
Raw Normal View History

// ========================================
// Code Node: Формирование Response для фронта (безопасная версия с проверками)
// (перед финальной Response нодой)
// ========================================
// Получаем данные из предыдущих шагов
const claimResult = $node["CreateWebContact"]?.json?.result || {};
const sessionDataItem = $('Code in JavaScript1')?.first();
const sessionData = sessionDataItem?.json?.redis_value
? JSON.parse(sessionDataItem.json.redis_value)
: {};
const userData = $node["user_get"]?.json || {}; // ← Данные из PostgreSQL: Find or Create User
// Проверяем наличие unified_id (критически важно!)
if (!userData.unified_id) {
console.error('❌ ОШИБКА: unified_id не получен из ноды user_get!');
// Можно либо выбросить ошибку, либо продолжить без unified_id (не рекомендуется)
}
// Формируем ответ в формате, который ожидает фронт
return {
success: true,
result: {
claim_id: sessionData.claim_id || claimResult.claim_id,
contact_id: sessionData.contact_id || claimResult.contact_id,
project_id: sessionData.project_id,
// Unified ID из PostgreSQL (обязательно!)
unified_id: userData.unified_id, // из ноды user_get (PostgreSQL: Find or Create User)
// Данные заявки
ticket_id: claimResult.ticket_id,
ticket_number: claimResult.ticket_number,
title: claimResult.title,
category: claimResult.category,
status: claimResult.status,
// Метаданные
event_type: sessionData.event_type,
current_step: sessionData.current_step || 1,
updated_at: sessionData.updated_at || new Date().toISOString(),
// Дополнительно
is_new_contact: claimResult.is_new_contact || false
}
};