# 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:** ```sql 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:** ```json { "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 ```javascript // После 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, // ... остальные поля } }; ```