Files
crm.clientright.ru/ticket_form/docs/N8N_SQL_PARAMETERS_DOCUMENT_SKIP.md

113 lines
3.6 KiB
Markdown
Raw Normal View History

# Параметры для SQL при пропуске документа
## Входные данные n8n
Массив с объектом:
```json
[
{
"propertyName": {
"session_id": "sess_f47c9f47-a727-4176-bf3d-26a02bb2fe24",
"phone": "79262306381",
"unified_id": "usr_90599ff2-ac79-4236-b950-0df85395096c",
"contact_id": "320096",
"claim_id": "bddb6815-8e17-4d54-a721-5e94382942c7",
"description": "...",
"email": "help@clientright.ru",
...
},
"body": {
"form_id": "ticket_form",
"stage": "document_skip",
"session_id": "sess_f47c9f47-a727-4176-bf3d-26a02bb2fe24",
"claim_id": "bddb6815-8e17-4d54-a721-5e94382942c7",
"unified_id": "usr_90599ff2-ac79-4236-b950-0df85395096c",
"contact_id": "320096",
"phone": "79262306381",
"document_type": "correspondence",
"document_name": "Переписка",
"skipped": "true",
"action": "skip",
"skip_timestamp": "2025-11-27T12:35:46.915646",
"group_index": "2"
}
}
]
```
## Параметры для SQL
### $1 (JSONB payload)
Структура payload должна содержать данные в разных местах для совместимости с SQL:
```json
{
// В корне (для быстрого доступа)
"session_id": "sess_f47c9f47-a727-4176-bf3d-26a02bb2fe24",
"claim_id": "bddb6815-8e17-4d54-a721-5e94382942c7",
"unified_id": "usr_90599ff2-ac79-4236-b950-0df85395096c",
"contact_id": "320096",
"phone": "79262306381",
"document_type": "correspondence",
"document_name": "Переписка",
"group_index": 2,
// В body (SQL ищет здесь: p->'body'->>'document_type')
"body": {
"document_type": "correspondence",
"document_name": "Переписка",
"group_index": 2,
"session_id": "sess_f47c9f47-a727-4176-bf3d-26a02bb2fe24",
"claim_id": "bddb6815-8e17-4d54-a721-5e94382942c7",
"unified_id": "usr_90599ff2-ac79-4236-b950-0df85395096c",
"contact_id": "320096",
"phone": "79262306381"
},
// В edit_fields_raw (SQL ищет здесь: p->'edit_fields_raw'->'body'->>'document_type')
"edit_fields_raw": {
"propertyName": { ... },
"body": { ... }
},
// В edit_fields_parsed (SQL ищет здесь: p->'edit_fields_parsed'->'body'->>'document_type')
"edit_fields_parsed": {
"propertyName": { ... },
"body": { ... }
},
// Дополнительные поля
"problem_description": "...",
"email": "help@clientright.ru",
"skipped": "true",
"action": "skip",
"skip_timestamp": "2025-11-27T12:35:46.915646"
}
```
### $2 (TEXT claim_id)
Просто строка с claim_id:
```
"bddb6815-8e17-4d54-a721-5e94382942c7"
```
## Использование в n8n
1. **Code Node** (`N8N_CODE_PREPARE_DOCUMENT_SKIP_SQL.js`) - подготавливает параметры
2. **PostgreSQL Node** - выполняет SQL запрос `SQL_CLAIMSAVE_DOCUMENT_SKIP.sql` с параметрами:
- Parameter Name: `$1`, Value: `={{ $json.$1 }}` (JSON)
- Parameter Name: `$2`, Value: `={{ $json.$2 }}` (String)
## Важно
SQL запрос ищет данные в следующем порядке:
1. `partial.p->>'document_type'` - в корне payload
2. `partial.p->'body'->>'document_type'` - в body
3. `partial.p->'edit_fields_raw'->'body'->>'document_type'` - в edit_fields_raw.body
4. `partial.p->'edit_fields_parsed'->'body'->>'document_type'` - в edit_fields_parsed.body
Поэтому payload должен содержать данные во всех этих местах для надёжности.