Files
erv-clientright/n8n_policy_check_README.md
2026-03-13 10:42:01 +03:00

5.0 KiB
Raw Permalink Blame History

SQL запросы для проверки полиса в n8n

Описание

SQL-запросы для проверки полиса в базе данных lexrpiority. Возвращают все поля из таблицы + поле found (1/0) для разделения потоков в n8n.

Варианты запросов

1. n8n_policy_check_sql.sql (рекомендуется)

Полная проверка: существование + валидность тарифа

Возвращает:

  • Все поля из таблицы lexrpiority (SELECT *)
  • found: 1 - полис найден И тариф подходит для задержки рейса
  • found: 0 - полис найден, но тариф не подходит
  • Пустой результат - полис не найден в базе

Использование в n8n:

  1. Добавьте MySQL ноду
  2. Используйте запрос из файла
  3. Параметр :voucher замените на {{ $json.normalized }} или {{ $json.police_number }}
  4. После ноды добавьте IF ноду с условием: {{ $json.found }} === 1

2. n8n_policy_check_sql_simple.sql

Только проверка существования полиса (без проверки тарифа)

Возвращает:

  • Все поля из таблицы lexrpiority (SELECT *)
  • found: 1 - полис найден
  • Пустой результат - полис не найден

Использование:

  • Если нужно только проверить наличие полиса, без проверки тарифа

3. n8n_policy_check_sql_with_data.sql

Расширенный вариант: возвращает данные + флаги

Возвращает:

  • Все поля из таблицы lexrpiority (SELECT *)
  • is_valid_tariff - 1/0 (валиден ли тариф)
  • found - 1/0 (найден и валиден, основной для IF Node)

Использование:

  • Если нужны данные о полисе для дальнейшей обработки + детальная проверка тарифа

Workflow в n8n

Webhook 
  → [Нормализация номера полиса] (Code Node)
  → [Проверка полиса] (MySQL Node)
  → [IF Node: policy_found_and_valid === 1]
    ├─ Да (1) → Полис валиден → Продолжение формы
    └─ Нет (0) → Полис не найден/не валиден → Загрузка скана полиса

Параметры запроса

  • :voucher - номер полиса (уже нормализованный, кириллица → латиница)
    • Используйте значение из ноды нормализации: {{ $json.normalized }}

Валидные тарифы

Basic тарифы:

  • STB0048, STB1099, STB1100, STB2099, AVS21500, AVS22500

Other тарифы:

  • SPV0001, SPV0002, SPV0003, SPV0004, SPV0005
  • STV0090
  • SPV1001, SPV1002, SPV1003, SPV1004, SPV1005
  • SPV2001, SPV2002, SPV2004, SPV2005
  • OPV1001, OPV1002, OPV1003, OPV1004, OPV1005
  • OPV2001, OPV2002, OPV2004, OPV2005

Пример использования в MySQL Node n8n

Query:

SELECT 
    *,
    CASE 
        WHEN (
            tariff_code_basic IN ('STB0048', 'STB1099', 'STB1100', 'STB2099', 'AVS21500', 'AVS22500')
            OR
            tariff_code_other IN ('SPV0001', 'SPV0002', 'SPV0003', ...)
        ) THEN 1
        ELSE 0
    END AS found
FROM lexrpiority 
WHERE voucher = :voucher
LIMIT 1;

Parameters:

{
  "voucher": "{{ $json.normalized }}"
}

Пример IF Node условия

Condition:

{{ $json.found }} === 1

Или:

{{ $json.found }} == 1

Доступные поля из результата

После выполнения запроса доступны все поля из таблицы lexrpiority:

  • id, row_no, agent_code, voucher
  • insured_name, insured_birth, insured_gender, status
  • insured_from - дата начала полиса (используется на фронтенде)
  • insured_to - дата окончания полиса (используется на фронтенде)
  • tariff_code_basic, tariff_code_other
  • premium_cur, premium_loc
  • И другие поля таблицы
  • found - флаг валидности (1/0)

Пример использования данных в Code Node

// После MySQL Node доступны все поля
const insuredFrom = $input.item.json.insured_from; // "19.11.2025"
const insuredTo = $input.item.json.insured_to;     // "24.11.2025"
const found = $input.item.json.found;               // 1 или 0

return {
  json: {
    found: found,
    insured_from: insuredFrom,
    insured_to: insuredTo,
    // ... остальные поля
  }
};