Files
erv-clientright/n8n_normalize_policy_function.js

81 lines
2.2 KiB
JavaScript
Raw Normal View History

2026-03-13 10:42:01 +03:00
// Код для Function Node в n8n
// Нормализация номера полиса: кириллица -> латиница, к заглавным
// Получаем номер полиса из предыдущей ноды
const policyNumber = $input.item.json.form_data?.cf_1885 || $input.item.json.cf_1885 || '';
if (!policyNumber || typeof policyNumber !== 'string') {
return {
json: {
original: policyNumber,
normalized: '',
error: 'Номер полиса не найден или имеет неверный формат'
}
};
}
// Функция нормализации: кириллица -> латиница, к заглавным
function normalizePolicyNumber(str) {
if (!str) return '';
// Маппинг кириллических букв на латинские (похожие визуально)
const cyrillicToLatin = {
// Заглавные
'А': 'A',
'В': 'B',
'С': 'C',
'Е': 'E',
'К': 'K',
'М': 'M',
'Н': 'H',
'О': 'O',
'Р': 'P',
'Т': 'T',
'Х': 'X',
'У': 'Y',
// Строчные
'а': 'A',
'в': 'B',
'с': 'C',
'е': 'E',
'к': 'K',
'м': 'M',
'н': 'H',
'о': 'O',
'р': 'P',
'т': 'T',
'х': 'X',
'у': 'Y'
};
// Заменяем кириллические буквы на латинские
let normalized = str.split('').map(char => {
return cyrillicToLatin[char] || char;
}).join('');
// Приводим к заглавным буквам
normalized = normalized.toUpperCase();
// Убираем лишние пробелы в начале и конце
normalized = normalized.trim();
return normalized;
}
// Нормализуем номер полиса
const normalized = normalizePolicyNumber(policyNumber);
// Возвращаем результат
return {
json: {
original: policyNumber,
normalized: normalized,
changed: policyNumber !== normalized,
// Добавляем нормализованное значение обратно в form_data
form_data: {
...($input.item.json.form_data || {}),
cf_1885: normalized
}
}
};