Files
aiform_dev/docs/N8N_SQL_PARAMETERS_DOCUMENT_SKIP.md
AI Assistant 080e7ec105 feat: Получение cf_2624 из MySQL и блокировка полей при подтверждении данных
- Добавлен сервис CrmMySQLService для прямого подключения к MySQL CRM
- Обновлён метод get_draft() для получения cf_2624 напрямую из БД
- Реализована блокировка полей (readonly) при contact_data_confirmed = true
- Добавлен выбор банка для СБП выплат с динамической загрузкой из API
- Обновлена документация по работе с cf_2624 и MySQL
- Добавлен network_mode: host в docker-compose для доступа к MySQL
- Обновлены компоненты формы для поддержки блокировки полей
2025-12-04 12:22:23 +03:00

3.6 KiB
Raw Permalink Blame History

Параметры для SQL при пропуске документа

Входные данные n8n

Массив с объектом:

[
  {
    "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:

{
  // В корне (для быстрого доступа)
  "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 должен содержать данные во всех этих местах для надёжности.