64 lines
2.7 KiB
JavaScript
64 lines
2.7 KiB
JavaScript
// Код для Code Node в n8n
|
||
// Нормализация номера полиса: замена кириллических букв на латинские
|
||
|
||
// Получаем номер полиса из предыдущей ноды
|
||
// Предполагаем, что номер приходит в поле police_number или inn
|
||
const policyNumber = $input.item.json.police_number ||
|
||
$input.item.json.inn ||
|
||
$input.item.json.form_data?.police_number ||
|
||
$input.item.json.form_data?.inn ||
|
||
'';
|
||
|
||
if (!policyNumber || typeof policyNumber !== 'string') {
|
||
return {
|
||
json: {
|
||
original: policyNumber,
|
||
normalized: '',
|
||
error: 'Номер полиса не найден или имеет неверный формат'
|
||
}
|
||
};
|
||
}
|
||
|
||
// Функция нормализации: кириллица -> латиница (как в database.php строки 105-109)
|
||
function normalizePolicyNumber(str) {
|
||
if (!str) return '';
|
||
|
||
let normalized = str;
|
||
|
||
// Заменяем кириллические буквы на латинские (как в database.php)
|
||
normalized = normalized.replace(/Е/g, 'E'); // Кириллическая Е -> латинская E
|
||
normalized = normalized.replace(/е/g, 'e'); // Кириллическая е -> латинская e
|
||
normalized = normalized.replace(/А/g, 'A'); // Кириллическая А -> латинская A
|
||
normalized = normalized.replace(/а/g, 'a'); // Кириллическая а -> латинская a
|
||
|
||
// Можно добавить другие похожие буквы, если нужно:
|
||
// normalized = normalized.replace(/В/g, 'B');
|
||
// normalized = normalized.replace(/С/g, 'C');
|
||
// normalized = normalized.replace(/О/g, 'O');
|
||
// normalized = normalized.replace(/Р/g, 'P');
|
||
// normalized = normalized.replace(/Х/g, 'X');
|
||
// normalized = normalized.replace(/М/g, 'M');
|
||
// normalized = normalized.replace(/Н/g, 'H');
|
||
// normalized = normalized.replace(/Т/g, 'T');
|
||
// normalized = normalized.replace(/К/g, 'K');
|
||
|
||
return normalized;
|
||
}
|
||
|
||
// Нормализуем номер полиса
|
||
const normalized = normalizePolicyNumber(policyNumber);
|
||
|
||
// Возвращаем результат
|
||
return {
|
||
json: {
|
||
original: policyNumber,
|
||
normalized: normalized,
|
||
changed: policyNumber !== normalized,
|
||
// Добавляем нормализованное значение обратно в структуру данных
|
||
police_number: normalized,
|
||
inn: normalized, // на случай если используется поле inn
|
||
// Сохраняем остальные данные из предыдущей ноды
|
||
...($input.item.json || {})
|
||
}
|
||
};
|