81 lines
2.2 KiB
JavaScript
81 lines
2.2 KiB
JavaScript
// Код для 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
|
||
}
|
||
}
|
||
};
|