This commit is contained in:
Fedor
2026-03-13 10:42:01 +03:00
commit 9708638e0a
4050 changed files with 1028632 additions and 0 deletions

View File

@@ -0,0 +1,149 @@
# Формат ответа вебхука проверки полиса в n8n
## Рекомендуемый формат (для совместимости с PHP и n8n)
### Успешный ответ (полис найден и валиден):
```json
{
"success": true,
"found": 1,
"message": "Полис найден",
"result": {
"id": "35927",
"voucher": "E50208-306083026",
"insured_name": "SHAROV IURII",
"tariff_code_basic": "STB2003",
"tariff_code_other": "SPV2002",
"insured_birth": "10.05.1974",
"insured_from": "19.11.2025",
"insured_to": "24.11.2025"
}
}
```
### Полис не найден:
```json
{
"success": false,
"found": 0,
"message": "Полис не найден в базе данных",
"result": null
}
```
### Полис найден, но тариф не подходит:
```json
{
"success": false,
"found": 0,
"message": "Ваш полис не включает покрытие задержки рейса",
"result": null
}
```
## Использование в n8n
### Вариант 1: Использовать поле `found` для IF Node
**IF Node условие:**
```
{{ $json.found }} === 1
```
Или:
```
{{ $json.found }} == 1
```
### Вариант 2: Использовать поле `success` для IF Node
**IF Node условие:**
```
{{ $json.success }} === true
```
## Использование в PHP
### Текущий код (database.php) ожидает:
```php
$response = json_decode($curl_response, true);
if ($response['success'] === 'true' || $response['success'] === true) {
// Полис валиден
}
```
### С новым форматом можно использовать:
```php
$response = json_decode($curl_response, true);
if (isset($response['found']) && $response['found'] == 1) {
// Полис найден и валиден
} else {
// Полис не найден или не валиден
$message = $response['message'] ?? 'Ошибка проверки полиса';
}
```
## Структура полей
| Поле | Тип | Описание |
|------|-----|----------|
| `success` | boolean | `true` если полис найден и валиден, `false` если нет |
| `found` | integer | `1` если полис найден и валиден, `0` если нет (удобно для IF Node) |
| `message` | string | Текстовое сообщение для пользователя |
| `result` | object/null | Данные полиса из БД или `null` |
## Преимущества этого формата
1. **Совместимость с PHP**: поле `success` как в текущем коде
2. **Удобство для n8n**: поле `found` (1/0) для IF Node
3. **Информативность**: поле `message` для пользователя
4. **Данные**: поле `result` с полной информацией о полисе
## Пример workflow в n8n
```
Webhook (входящий запрос)
→ [Нормализация номера полиса] (Code Node)
→ [Проверка полиса в БД] (MySQL Node)
→ [Формирование ответа] (Code Node)
├─ IF: policy_found_and_valid === 1
│ ├─ Да → Формируем success: true, found: 1
│ └─ Нет → Формируем success: false, found: 0
→ [Ответ вебхука] (Respond to Webhook Node)
```
## Код для Code Node (формирование ответа)
```javascript
// Получаем результат из MySQL Node
const policyCheck = $input.item.json.policy_found_and_valid || 0;
const policyData = $input.item.json; // данные из MySQL (если использовали with_data вариант)
if (policyCheck === 1) {
return {
json: {
success: true,
found: 1,
message: "Полис найден",
result: policyData // данные полиса
}
};
} else {
// Проверяем, был ли полис вообще найден
const wasFound = policyData && policyData.id ? true : false;
return {
json: {
success: false,
found: 0,
message: wasFound
? "Ваш полис не включает покрытие задержки рейса"
: "Полис не найден в базе данных",
result: null
}
};
}
```